@@ -15,125 +15,125 @@ discard block |
||
| 15 | 15 | */ |
| 16 | 16 | class WPInv_Subscription extends GetPaid_Data { |
| 17 | 17 | |
| 18 | - /** |
|
| 19 | - * Which data store to load. |
|
| 20 | - * |
|
| 21 | - * @var string |
|
| 22 | - */ |
|
| 23 | - protected $data_store_name = 'subscription'; |
|
| 24 | - |
|
| 25 | - /** |
|
| 26 | - * This is the name of this object type. |
|
| 27 | - * |
|
| 28 | - * @var string |
|
| 29 | - */ |
|
| 30 | - protected $object_type = 'subscription'; |
|
| 31 | - |
|
| 32 | - /** |
|
| 33 | - * Item Data array. This is the core item data exposed in APIs. |
|
| 34 | - * |
|
| 35 | - * @since 1.0.19 |
|
| 36 | - * @var array |
|
| 37 | - */ |
|
| 38 | - protected $data = array( |
|
| 39 | - 'customer_id' => 0, |
|
| 40 | - 'frequency' => 1, |
|
| 41 | - 'period' => 'D', |
|
| 42 | - 'initial_amount' => null, |
|
| 43 | - 'recurring_amount' => null, |
|
| 44 | - 'bill_times' => 0, |
|
| 45 | - 'transaction_id' => '', |
|
| 46 | - 'parent_payment_id' => null, |
|
| 47 | - 'product_id' => 0, |
|
| 48 | - 'created' => '0000-00-00 00:00:00', |
|
| 49 | - 'expiration' => '0000-00-00 00:00:00', |
|
| 50 | - 'trial_period' => '', |
|
| 51 | - 'status' => 'pending', |
|
| 52 | - 'profile_id' => '', |
|
| 53 | - 'gateway' => '', |
|
| 54 | - 'customer' => '', |
|
| 55 | - ); |
|
| 56 | - |
|
| 57 | - /** |
|
| 58 | - * Stores the status transition information. |
|
| 59 | - * |
|
| 60 | - * @since 1.0.19 |
|
| 61 | - * @var bool |
|
| 62 | - */ |
|
| 63 | - protected $status_transition = false; |
|
| 64 | - |
|
| 65 | - /** |
|
| 66 | - * Get the subscription if ID is passed, otherwise the subscription is new and empty. |
|
| 67 | - * |
|
| 68 | - * @param int|string|object|WPInv_Subscription $subscription Subscription id, profile_id, or object to read. |
|
| 69 | - * @param bool $deprecated |
|
| 70 | - */ |
|
| 71 | - function __construct( $subscription = 0, $deprecated = false ) { |
|
| 72 | - |
|
| 73 | - parent::__construct( $subscription ); |
|
| 74 | - |
|
| 75 | - if ( ! $deprecated && ! empty( $subscription ) && is_numeric( $subscription ) ) { |
|
| 76 | - $this->set_id( $subscription ); |
|
| 77 | - } elseif ( $subscription instanceof self ) { |
|
| 78 | - $this->set_id( $subscription->get_id() ); |
|
| 79 | - } elseif ( $deprecated && $subscription_id = self::get_subscription_id_by_field( $subscription, 'profile_id' ) ) { |
|
| 80 | - $this->set_id( $subscription_id ); |
|
| 81 | - } elseif ( ! empty( $subscription->id ) ) { |
|
| 82 | - $this->set_id( $subscription->id ); |
|
| 83 | - } else { |
|
| 84 | - $this->set_object_read( true ); |
|
| 85 | - } |
|
| 86 | - |
|
| 87 | - // Load the datastore. |
|
| 88 | - $this->data_store = GetPaid_Data_Store::load( $this->data_store_name ); |
|
| 89 | - |
|
| 90 | - if ( $this->get_id() > 0 ) { |
|
| 91 | - $this->data_store->read( $this ); |
|
| 92 | - } |
|
| 93 | - |
|
| 94 | - } |
|
| 95 | - |
|
| 96 | - /** |
|
| 97 | - * Given an invoice id, profile id, transaction id, it returns the subscription's id. |
|
| 98 | - * |
|
| 99 | - * |
|
| 100 | - * @static |
|
| 101 | - * @param string $value |
|
| 102 | - * @param string $field Either invoice_id, transaction_id or profile_id. |
|
| 103 | - * @since 1.0.19 |
|
| 104 | - * @return int |
|
| 105 | - */ |
|
| 106 | - public static function get_subscription_id_by_field( $value, $field = 'profile_id' ) { |
|
| 18 | + /** |
|
| 19 | + * Which data store to load. |
|
| 20 | + * |
|
| 21 | + * @var string |
|
| 22 | + */ |
|
| 23 | + protected $data_store_name = 'subscription'; |
|
| 24 | + |
|
| 25 | + /** |
|
| 26 | + * This is the name of this object type. |
|
| 27 | + * |
|
| 28 | + * @var string |
|
| 29 | + */ |
|
| 30 | + protected $object_type = 'subscription'; |
|
| 31 | + |
|
| 32 | + /** |
|
| 33 | + * Item Data array. This is the core item data exposed in APIs. |
|
| 34 | + * |
|
| 35 | + * @since 1.0.19 |
|
| 36 | + * @var array |
|
| 37 | + */ |
|
| 38 | + protected $data = array( |
|
| 39 | + 'customer_id' => 0, |
|
| 40 | + 'frequency' => 1, |
|
| 41 | + 'period' => 'D', |
|
| 42 | + 'initial_amount' => null, |
|
| 43 | + 'recurring_amount' => null, |
|
| 44 | + 'bill_times' => 0, |
|
| 45 | + 'transaction_id' => '', |
|
| 46 | + 'parent_payment_id' => null, |
|
| 47 | + 'product_id' => 0, |
|
| 48 | + 'created' => '0000-00-00 00:00:00', |
|
| 49 | + 'expiration' => '0000-00-00 00:00:00', |
|
| 50 | + 'trial_period' => '', |
|
| 51 | + 'status' => 'pending', |
|
| 52 | + 'profile_id' => '', |
|
| 53 | + 'gateway' => '', |
|
| 54 | + 'customer' => '', |
|
| 55 | + ); |
|
| 56 | + |
|
| 57 | + /** |
|
| 58 | + * Stores the status transition information. |
|
| 59 | + * |
|
| 60 | + * @since 1.0.19 |
|
| 61 | + * @var bool |
|
| 62 | + */ |
|
| 63 | + protected $status_transition = false; |
|
| 64 | + |
|
| 65 | + /** |
|
| 66 | + * Get the subscription if ID is passed, otherwise the subscription is new and empty. |
|
| 67 | + * |
|
| 68 | + * @param int|string|object|WPInv_Subscription $subscription Subscription id, profile_id, or object to read. |
|
| 69 | + * @param bool $deprecated |
|
| 70 | + */ |
|
| 71 | + function __construct( $subscription = 0, $deprecated = false ) { |
|
| 72 | + |
|
| 73 | + parent::__construct( $subscription ); |
|
| 74 | + |
|
| 75 | + if ( ! $deprecated && ! empty( $subscription ) && is_numeric( $subscription ) ) { |
|
| 76 | + $this->set_id( $subscription ); |
|
| 77 | + } elseif ( $subscription instanceof self ) { |
|
| 78 | + $this->set_id( $subscription->get_id() ); |
|
| 79 | + } elseif ( $deprecated && $subscription_id = self::get_subscription_id_by_field( $subscription, 'profile_id' ) ) { |
|
| 80 | + $this->set_id( $subscription_id ); |
|
| 81 | + } elseif ( ! empty( $subscription->id ) ) { |
|
| 82 | + $this->set_id( $subscription->id ); |
|
| 83 | + } else { |
|
| 84 | + $this->set_object_read( true ); |
|
| 85 | + } |
|
| 86 | + |
|
| 87 | + // Load the datastore. |
|
| 88 | + $this->data_store = GetPaid_Data_Store::load( $this->data_store_name ); |
|
| 89 | + |
|
| 90 | + if ( $this->get_id() > 0 ) { |
|
| 91 | + $this->data_store->read( $this ); |
|
| 92 | + } |
|
| 93 | + |
|
| 94 | + } |
|
| 95 | + |
|
| 96 | + /** |
|
| 97 | + * Given an invoice id, profile id, transaction id, it returns the subscription's id. |
|
| 98 | + * |
|
| 99 | + * |
|
| 100 | + * @static |
|
| 101 | + * @param string $value |
|
| 102 | + * @param string $field Either invoice_id, transaction_id or profile_id. |
|
| 103 | + * @since 1.0.19 |
|
| 104 | + * @return int |
|
| 105 | + */ |
|
| 106 | + public static function get_subscription_id_by_field( $value, $field = 'profile_id' ) { |
|
| 107 | 107 | global $wpdb; |
| 108 | 108 | |
| 109 | - // Trim the value. |
|
| 110 | - $value = trim( $value ); |
|
| 109 | + // Trim the value. |
|
| 110 | + $value = trim( $value ); |
|
| 111 | 111 | |
| 112 | - if ( empty( $value ) ) { |
|
| 113 | - return 0; |
|
| 114 | - } |
|
| 112 | + if ( empty( $value ) ) { |
|
| 113 | + return 0; |
|
| 114 | + } |
|
| 115 | 115 | |
| 116 | - if ( 'invoice_id' == $field ) { |
|
| 117 | - $field = 'parent_payment_id'; |
|
| 118 | - } |
|
| 116 | + if ( 'invoice_id' == $field ) { |
|
| 117 | + $field = 'parent_payment_id'; |
|
| 118 | + } |
|
| 119 | 119 | |
| 120 | 120 | // Valid fields. |
| 121 | 121 | $fields = array( |
| 122 | - 'parent_payment_id', |
|
| 123 | - 'transaction_id', |
|
| 124 | - 'profile_id' |
|
| 125 | - ); |
|
| 126 | - |
|
| 127 | - // Ensure a field has been passed. |
|
| 128 | - if ( empty( $field ) || ! in_array( $field, $fields ) ) { |
|
| 129 | - return 0; |
|
| 130 | - } |
|
| 131 | - |
|
| 132 | - // Maybe retrieve from the cache. |
|
| 133 | - $subscription_id = wp_cache_get( $value, "getpaid_subscription_{$field}s_to_subscription_ids" ); |
|
| 134 | - if ( ! empty( $subscription_id ) ) { |
|
| 135 | - return $subscription_id; |
|
| 136 | - } |
|
| 122 | + 'parent_payment_id', |
|
| 123 | + 'transaction_id', |
|
| 124 | + 'profile_id' |
|
| 125 | + ); |
|
| 126 | + |
|
| 127 | + // Ensure a field has been passed. |
|
| 128 | + if ( empty( $field ) || ! in_array( $field, $fields ) ) { |
|
| 129 | + return 0; |
|
| 130 | + } |
|
| 131 | + |
|
| 132 | + // Maybe retrieve from the cache. |
|
| 133 | + $subscription_id = wp_cache_get( $value, "getpaid_subscription_{$field}s_to_subscription_ids" ); |
|
| 134 | + if ( ! empty( $subscription_id ) ) { |
|
| 135 | + return $subscription_id; |
|
| 136 | + } |
|
| 137 | 137 | |
| 138 | 138 | // Fetch from the db. |
| 139 | 139 | $table = $wpdb->prefix . 'wpinv_subscriptions'; |
@@ -141,34 +141,34 @@ discard block |
||
| 141 | 141 | $wpdb->prepare( "SELECT `id` FROM $table WHERE `$field`=%s LIMIT 1", $value ) |
| 142 | 142 | ); |
| 143 | 143 | |
| 144 | - if ( empty( $subscription_id ) ) { |
|
| 145 | - return 0; |
|
| 146 | - } |
|
| 144 | + if ( empty( $subscription_id ) ) { |
|
| 145 | + return 0; |
|
| 146 | + } |
|
| 147 | 147 | |
| 148 | - // Update the cache with our data. |
|
| 149 | - wp_cache_set( $value, $subscription_id, "getpaid_subscription_{$field}s_to_subscription_ids" ); |
|
| 148 | + // Update the cache with our data. |
|
| 149 | + wp_cache_set( $value, $subscription_id, "getpaid_subscription_{$field}s_to_subscription_ids" ); |
|
| 150 | 150 | |
| 151 | - return $subscription_id; |
|
| 152 | - } |
|
| 151 | + return $subscription_id; |
|
| 152 | + } |
|
| 153 | 153 | |
| 154 | - /** |
|
| 154 | + /** |
|
| 155 | 155 | * Clears the subscription's cache. |
| 156 | 156 | */ |
| 157 | 157 | public function clear_cache() { |
| 158 | - wp_cache_delete( $this->get_parent_payment_id(), 'getpaid_subscription_parent_payment_ids_to_subscription_ids' ); |
|
| 159 | - wp_cache_delete( $this->get_transaction_id(), 'getpaid_subscription_transaction_ids_to_subscription_ids' ); |
|
| 160 | - wp_cache_delete( $this->get_profile_id(), 'getpaid_subscription_profile_ids_to_subscription_ids' ); |
|
| 161 | - wp_cache_delete( $this->get_id(), 'getpaid_subscriptions' ); |
|
| 162 | - } |
|
| 158 | + wp_cache_delete( $this->get_parent_payment_id(), 'getpaid_subscription_parent_payment_ids_to_subscription_ids' ); |
|
| 159 | + wp_cache_delete( $this->get_transaction_id(), 'getpaid_subscription_transaction_ids_to_subscription_ids' ); |
|
| 160 | + wp_cache_delete( $this->get_profile_id(), 'getpaid_subscription_profile_ids_to_subscription_ids' ); |
|
| 161 | + wp_cache_delete( $this->get_id(), 'getpaid_subscriptions' ); |
|
| 162 | + } |
|
| 163 | 163 | |
| 164 | - /** |
|
| 164 | + /** |
|
| 165 | 165 | * Checks if a subscription key is set. |
| 166 | 166 | */ |
| 167 | 167 | public function _isset( $key ) { |
| 168 | 168 | return isset( $this->data[$key] ) || method_exists( $this, "get_$key" ); |
| 169 | - } |
|
| 169 | + } |
|
| 170 | 170 | |
| 171 | - /* |
|
| 171 | + /* |
|
| 172 | 172 | |-------------------------------------------------------------------------- |
| 173 | 173 | | CRUD methods |
| 174 | 174 | |-------------------------------------------------------------------------- |
@@ -177,545 +177,545 @@ discard block |
||
| 177 | 177 | | |
| 178 | 178 | */ |
| 179 | 179 | |
| 180 | - /* |
|
| 181 | - |-------------------------------------------------------------------------- |
|
| 182 | - | Getters |
|
| 183 | - |-------------------------------------------------------------------------- |
|
| 184 | - */ |
|
| 180 | + /* |
|
| 181 | + |-------------------------------------------------------------------------- |
|
| 182 | + | Getters |
|
| 183 | + |-------------------------------------------------------------------------- |
|
| 184 | + */ |
|
| 185 | + |
|
| 186 | + /** |
|
| 187 | + * Get customer id. |
|
| 188 | + * |
|
| 189 | + * @since 1.0.19 |
|
| 190 | + * @param string $context View or edit context. |
|
| 191 | + * @return int |
|
| 192 | + */ |
|
| 193 | + public function get_customer_id( $context = 'view' ) { |
|
| 194 | + return (int) $this->get_prop( 'customer_id', $context ); |
|
| 195 | + } |
|
| 196 | + |
|
| 197 | + /** |
|
| 198 | + * Get customer information. |
|
| 199 | + * |
|
| 200 | + * @since 1.0.19 |
|
| 201 | + * @param string $context View or edit context. |
|
| 202 | + * @return WP_User|false WP_User object on success, false on failure. |
|
| 203 | + */ |
|
| 204 | + public function get_customer( $context = 'view' ) { |
|
| 205 | + return get_userdata( $this->get_customer_id( $context ) ); |
|
| 206 | + } |
|
| 207 | + |
|
| 208 | + /** |
|
| 209 | + * Get parent invoice id. |
|
| 210 | + * |
|
| 211 | + * @since 1.0.19 |
|
| 212 | + * @param string $context View or edit context. |
|
| 213 | + * @return int |
|
| 214 | + */ |
|
| 215 | + public function get_parent_invoice_id( $context = 'view' ) { |
|
| 216 | + return (int) $this->get_prop( 'parent_payment_id', $context ); |
|
| 217 | + } |
|
| 218 | + |
|
| 219 | + /** |
|
| 220 | + * Alias for self::get_parent_invoice_id(). |
|
| 221 | + * |
|
| 222 | + * @since 1.0.19 |
|
| 223 | + * @param string $context View or edit context. |
|
| 224 | + * @return int |
|
| 225 | + */ |
|
| 226 | + public function get_parent_payment_id( $context = 'view' ) { |
|
| 227 | + return $this->get_parent_invoice_id( $context ); |
|
| 228 | + } |
|
| 229 | + |
|
| 230 | + /** |
|
| 231 | + * Alias for self::get_parent_invoice_id(). |
|
| 232 | + * |
|
| 233 | + * @since 1.0.0 |
|
| 234 | + * @return int |
|
| 235 | + */ |
|
| 236 | + public function get_original_payment_id( $context = 'view' ) { |
|
| 237 | + return $this->get_parent_invoice_id( $context ); |
|
| 238 | + } |
|
| 239 | + |
|
| 240 | + /** |
|
| 241 | + * Get parent invoice. |
|
| 242 | + * |
|
| 243 | + * @since 1.0.19 |
|
| 244 | + * @param string $context View or edit context. |
|
| 245 | + * @return WPInv_Invoice |
|
| 246 | + */ |
|
| 247 | + public function get_parent_invoice( $context = 'view' ) { |
|
| 248 | + return new WPInv_Invoice( $this->get_parent_invoice_id( $context ) ); |
|
| 249 | + } |
|
| 250 | + |
|
| 251 | + /** |
|
| 252 | + * Alias for self::get_parent_invoice(). |
|
| 253 | + * |
|
| 254 | + * @since 1.0.19 |
|
| 255 | + * @param string $context View or edit context. |
|
| 256 | + * @return WPInv_Invoice |
|
| 257 | + */ |
|
| 258 | + public function get_parent_payment( $context = 'view' ) { |
|
| 259 | + return $this->get_parent_invoice( $context ); |
|
| 260 | + } |
|
| 261 | + |
|
| 262 | + /** |
|
| 263 | + * Get subscription's product id. |
|
| 264 | + * |
|
| 265 | + * @since 1.0.19 |
|
| 266 | + * @param string $context View or edit context. |
|
| 267 | + * @return int |
|
| 268 | + */ |
|
| 269 | + public function get_product_id( $context = 'view' ) { |
|
| 270 | + return (int) $this->get_prop( 'product_id', $context ); |
|
| 271 | + } |
|
| 272 | + |
|
| 273 | + /** |
|
| 274 | + * Get the subscription product. |
|
| 275 | + * |
|
| 276 | + * @since 1.0.19 |
|
| 277 | + * @param string $context View or edit context. |
|
| 278 | + * @return WPInv_Item |
|
| 279 | + */ |
|
| 280 | + public function get_product( $context = 'view' ) { |
|
| 281 | + return new WPInv_Item( $this->get_product_id( $context ) ); |
|
| 282 | + } |
|
| 283 | + |
|
| 284 | + /** |
|
| 285 | + * Get parent invoice's gateway. |
|
| 286 | + * |
|
| 287 | + * Here for backwards compatibility. |
|
| 288 | + * |
|
| 289 | + * @since 1.0.19 |
|
| 290 | + * @param string $context View or edit context. |
|
| 291 | + * @return string |
|
| 292 | + */ |
|
| 293 | + public function get_gateway( $context = 'view' ) { |
|
| 294 | + return $this->get_parent_invoice( $context )->get_gateway(); |
|
| 295 | + } |
|
| 296 | + |
|
| 297 | + /** |
|
| 298 | + * Get the period of a renewal. |
|
| 299 | + * |
|
| 300 | + * @since 1.0.19 |
|
| 301 | + * @param string $context View or edit context. |
|
| 302 | + * @return string |
|
| 303 | + */ |
|
| 304 | + public function get_period( $context = 'view' ) { |
|
| 305 | + return $this->get_prop( 'period', $context ); |
|
| 306 | + } |
|
| 307 | + |
|
| 308 | + /** |
|
| 309 | + * Get number of periods each renewal is valid for. |
|
| 310 | + * |
|
| 311 | + * @since 1.0.19 |
|
| 312 | + * @param string $context View or edit context. |
|
| 313 | + * @return int |
|
| 314 | + */ |
|
| 315 | + public function get_frequency( $context = 'view' ) { |
|
| 316 | + return (int) $this->get_prop( 'frequency', $context ); |
|
| 317 | + } |
|
| 318 | + |
|
| 319 | + /** |
|
| 320 | + * Get the initial amount for the subscription. |
|
| 321 | + * |
|
| 322 | + * @since 1.0.19 |
|
| 323 | + * @param string $context View or edit context. |
|
| 324 | + * @return float |
|
| 325 | + */ |
|
| 326 | + public function get_initial_amount( $context = 'view' ) { |
|
| 327 | + return (float) wpinv_sanitize_amount( $this->get_prop( 'initial_amount', $context ) ); |
|
| 328 | + } |
|
| 329 | + |
|
| 330 | + /** |
|
| 331 | + * Get the recurring amount for the subscription. |
|
| 332 | + * |
|
| 333 | + * @since 1.0.19 |
|
| 334 | + * @param string $context View or edit context. |
|
| 335 | + * @return float |
|
| 336 | + */ |
|
| 337 | + public function get_recurring_amount( $context = 'view' ) { |
|
| 338 | + return (float) wpinv_sanitize_amount( $this->get_prop( 'recurring_amount', $context ) ); |
|
| 339 | + } |
|
| 340 | + |
|
| 341 | + /** |
|
| 342 | + * Get number of times that this subscription can be renewed. |
|
| 343 | + * |
|
| 344 | + * @since 1.0.19 |
|
| 345 | + * @param string $context View or edit context. |
|
| 346 | + * @return int |
|
| 347 | + */ |
|
| 348 | + public function get_bill_times( $context = 'view' ) { |
|
| 349 | + return (int) $this->get_prop( 'bill_times', $context ); |
|
| 350 | + } |
|
| 351 | + |
|
| 352 | + /** |
|
| 353 | + * Get transaction id of this subscription's parent invoice. |
|
| 354 | + * |
|
| 355 | + * @since 1.0.19 |
|
| 356 | + * @param string $context View or edit context. |
|
| 357 | + * @return string |
|
| 358 | + */ |
|
| 359 | + public function get_transaction_id( $context = 'view' ) { |
|
| 360 | + return $this->get_prop( 'transaction_id', $context ); |
|
| 361 | + } |
|
| 362 | + |
|
| 363 | + /** |
|
| 364 | + * Get the date that the subscription was created. |
|
| 365 | + * |
|
| 366 | + * @since 1.0.19 |
|
| 367 | + * @param string $context View or edit context. |
|
| 368 | + * @return string |
|
| 369 | + */ |
|
| 370 | + public function get_created( $context = 'view' ) { |
|
| 371 | + return $this->get_prop( 'created', $context ); |
|
| 372 | + } |
|
| 373 | + |
|
| 374 | + /** |
|
| 375 | + * Alias for self::get_created(). |
|
| 376 | + * |
|
| 377 | + * @since 1.0.19 |
|
| 378 | + * @param string $context View or edit context. |
|
| 379 | + * @return string |
|
| 380 | + */ |
|
| 381 | + public function get_date_created( $context = 'view' ) { |
|
| 382 | + return $this->get_created( $context ); |
|
| 383 | + } |
|
| 384 | + |
|
| 385 | + /** |
|
| 386 | + * Retrieves the creation date in a timestamp |
|
| 387 | + * |
|
| 388 | + * @since 1.0.0 |
|
| 389 | + * @return int |
|
| 390 | + */ |
|
| 391 | + public function get_time_created() { |
|
| 392 | + $created = $this->get_date_created(); |
|
| 393 | + return empty( $created ) ? current_time( 'timestamp' ) : strtotime( $created, current_time( 'timestamp' ) ); |
|
| 394 | + } |
|
| 395 | + |
|
| 396 | + /** |
|
| 397 | + * Get GMT date when the subscription was created. |
|
| 398 | + * |
|
| 399 | + * @since 1.0.19 |
|
| 400 | + * @param string $context View or edit context. |
|
| 401 | + * @return string |
|
| 402 | + */ |
|
| 403 | + public function get_date_created_gmt( $context = 'view' ) { |
|
| 404 | + $date = $this->get_date_created( $context ); |
|
| 405 | + |
|
| 406 | + if ( $date ) { |
|
| 407 | + $date = get_gmt_from_date( $date ); |
|
| 408 | + } |
|
| 409 | + return $date; |
|
| 410 | + } |
|
| 411 | + |
|
| 412 | + /** |
|
| 413 | + * Get the date that the subscription will renew. |
|
| 414 | + * |
|
| 415 | + * @since 1.0.19 |
|
| 416 | + * @param string $context View or edit context. |
|
| 417 | + * @return string |
|
| 418 | + */ |
|
| 419 | + public function get_next_renewal_date( $context = 'view' ) { |
|
| 420 | + return $this->get_prop( 'expiration', $context ); |
|
| 421 | + } |
|
| 422 | + |
|
| 423 | + /** |
|
| 424 | + * Alias for self::get_next_renewal_date(). |
|
| 425 | + * |
|
| 426 | + * @since 1.0.19 |
|
| 427 | + * @param string $context View or edit context. |
|
| 428 | + * @return string |
|
| 429 | + */ |
|
| 430 | + public function get_expiration( $context = 'view' ) { |
|
| 431 | + return $this->get_next_renewal_date( $context ); |
|
| 432 | + } |
|
| 433 | + |
|
| 434 | + /** |
|
| 435 | + * Retrieves the expiration date in a timestamp |
|
| 436 | + * |
|
| 437 | + * @since 1.0.0 |
|
| 438 | + * @return int |
|
| 439 | + */ |
|
| 440 | + public function get_expiration_time() { |
|
| 441 | + $expiration = $this->get_expiration(); |
|
| 442 | + |
|
| 443 | + if ( empty( $expiration ) || '0000-00-00 00:00:00' == $expiration ) { |
|
| 444 | + return current_time( 'timestamp' ); |
|
| 445 | + } |
|
| 446 | + |
|
| 447 | + $expiration = strtotime( $expiration, current_time( 'timestamp' ) ); |
|
| 448 | + return $expiration < current_time( 'timestamp' ) ? current_time( 'timestamp' ) : $expiration; |
|
| 449 | + } |
|
| 450 | + |
|
| 451 | + /** |
|
| 452 | + * Get GMT date when the subscription will renew. |
|
| 453 | + * |
|
| 454 | + * @since 1.0.19 |
|
| 455 | + * @param string $context View or edit context. |
|
| 456 | + * @return string |
|
| 457 | + */ |
|
| 458 | + public function get_next_renewal_date_gmt( $context = 'view' ) { |
|
| 459 | + $date = $this->get_next_renewal_date( $context ); |
|
| 460 | + |
|
| 461 | + if ( $date ) { |
|
| 462 | + $date = get_gmt_from_date( $date ); |
|
| 463 | + } |
|
| 464 | + return $date; |
|
| 465 | + } |
|
| 466 | + |
|
| 467 | + /** |
|
| 468 | + * Get the subscription's trial period. |
|
| 469 | + * |
|
| 470 | + * @since 1.0.19 |
|
| 471 | + * @param string $context View or edit context. |
|
| 472 | + * @return string |
|
| 473 | + */ |
|
| 474 | + public function get_trial_period( $context = 'view' ) { |
|
| 475 | + return $this->get_prop( 'trial_period', $context ); |
|
| 476 | + } |
|
| 477 | + |
|
| 478 | + /** |
|
| 479 | + * Get the subscription's status. |
|
| 480 | + * |
|
| 481 | + * @since 1.0.19 |
|
| 482 | + * @param string $context View or edit context. |
|
| 483 | + * @return string |
|
| 484 | + */ |
|
| 485 | + public function get_status( $context = 'view' ) { |
|
| 486 | + return $this->get_prop( 'status', $context ); |
|
| 487 | + } |
|
| 488 | + |
|
| 489 | + /** |
|
| 490 | + * Get the subscription's profile id. |
|
| 491 | + * |
|
| 492 | + * @since 1.0.19 |
|
| 493 | + * @param string $context View or edit context. |
|
| 494 | + * @return string |
|
| 495 | + */ |
|
| 496 | + public function get_profile_id( $context = 'view' ) { |
|
| 497 | + return $this->get_prop( 'profile_id', $context ); |
|
| 498 | + } |
|
| 499 | + |
|
| 500 | + /* |
|
| 501 | + |-------------------------------------------------------------------------- |
|
| 502 | + | Setters |
|
| 503 | + |-------------------------------------------------------------------------- |
|
| 504 | + */ |
|
| 505 | + |
|
| 506 | + /** |
|
| 507 | + * Set customer id. |
|
| 508 | + * |
|
| 509 | + * @since 1.0.19 |
|
| 510 | + * @param int $value The customer's id. |
|
| 511 | + */ |
|
| 512 | + public function set_customer_id( $value ) { |
|
| 513 | + $this->set_prop( 'customer_id', (int) $value ); |
|
| 514 | + } |
|
| 515 | + |
|
| 516 | + /** |
|
| 517 | + * Set parent invoice id. |
|
| 518 | + * |
|
| 519 | + * @since 1.0.19 |
|
| 520 | + * @param int $value The parent invoice id. |
|
| 521 | + */ |
|
| 522 | + public function set_parent_invoice_id( $value ) { |
|
| 523 | + $this->set_prop( 'parent_payment_id', (int) $value ); |
|
| 524 | + } |
|
| 525 | + |
|
| 526 | + /** |
|
| 527 | + * Alias for self::set_parent_invoice_id(). |
|
| 528 | + * |
|
| 529 | + * @since 1.0.19 |
|
| 530 | + * @param int $value The parent invoice id. |
|
| 531 | + */ |
|
| 532 | + public function set_parent_payment_id( $value ) { |
|
| 533 | + $this->set_parent_invoice_id( $value ); |
|
| 534 | + } |
|
| 535 | + |
|
| 536 | + /** |
|
| 537 | + * Alias for self::set_parent_invoice_id(). |
|
| 538 | + * |
|
| 539 | + * @since 1.0.19 |
|
| 540 | + * @param int $value The parent invoice id. |
|
| 541 | + */ |
|
| 542 | + public function set_original_payment_id( $value ) { |
|
| 543 | + $this->set_parent_invoice_id( $value ); |
|
| 544 | + } |
|
| 545 | + |
|
| 546 | + /** |
|
| 547 | + * Set subscription's product id. |
|
| 548 | + * |
|
| 549 | + * @since 1.0.19 |
|
| 550 | + * @param int $value The subscription product id. |
|
| 551 | + */ |
|
| 552 | + public function set_product_id( $value ) { |
|
| 553 | + $this->set_prop( 'product_id', (int) $value ); |
|
| 554 | + } |
|
| 555 | + |
|
| 556 | + /** |
|
| 557 | + * Set the period of a renewal. |
|
| 558 | + * |
|
| 559 | + * @since 1.0.19 |
|
| 560 | + * @param string $value The renewal period. |
|
| 561 | + */ |
|
| 562 | + public function set_period( $value ) { |
|
| 563 | + $this->set_prop( 'period', $value ); |
|
| 564 | + } |
|
| 565 | + |
|
| 566 | + /** |
|
| 567 | + * Set number of periods each renewal is valid for. |
|
| 568 | + * |
|
| 569 | + * @since 1.0.19 |
|
| 570 | + * @param int $value The subscription frequency. |
|
| 571 | + */ |
|
| 572 | + public function set_frequency( $value ) { |
|
| 573 | + $value = empty( $value ) ? 1 : (int) $value; |
|
| 574 | + $this->set_prop( 'frequency', absint( $value ) ); |
|
| 575 | + } |
|
| 576 | + |
|
| 577 | + /** |
|
| 578 | + * Set the initial amount for the subscription. |
|
| 579 | + * |
|
| 580 | + * @since 1.0.19 |
|
| 581 | + * @param float $value The initial subcription amount. |
|
| 582 | + */ |
|
| 583 | + public function set_initial_amount( $value ) { |
|
| 584 | + $this->set_prop( 'initial_amount', wpinv_sanitize_amount( $value ) ); |
|
| 585 | + } |
|
| 586 | + |
|
| 587 | + /** |
|
| 588 | + * Set the recurring amount for the subscription. |
|
| 589 | + * |
|
| 590 | + * @since 1.0.19 |
|
| 591 | + * @param float $value The recurring subcription amount. |
|
| 592 | + */ |
|
| 593 | + public function set_recurring_amount( $value ) { |
|
| 594 | + $this->set_prop( 'recurring_amount', wpinv_sanitize_amount( $value ) ); |
|
| 595 | + } |
|
| 596 | + |
|
| 597 | + /** |
|
| 598 | + * Set number of times that this subscription can be renewed. |
|
| 599 | + * |
|
| 600 | + * @since 1.0.19 |
|
| 601 | + * @param int $value Bill times. |
|
| 602 | + */ |
|
| 603 | + public function set_bill_times( $value ) { |
|
| 604 | + $this->set_prop( 'bill_times', (int) $value ); |
|
| 605 | + } |
|
| 606 | + |
|
| 607 | + /** |
|
| 608 | + * Get transaction id of this subscription's parent invoice. |
|
| 609 | + * |
|
| 610 | + * @since 1.0.19 |
|
| 611 | + * @param string $value Bill times. |
|
| 612 | + */ |
|
| 613 | + public function set_transaction_id( $value ) { |
|
| 614 | + $this->set_prop( 'transaction_id', sanitize_text_field( $value ) ); |
|
| 615 | + } |
|
| 616 | + |
|
| 617 | + /** |
|
| 618 | + * Set date when this subscription started. |
|
| 619 | + * |
|
| 620 | + * @since 1.0.19 |
|
| 621 | + * @param string $value strtotime compliant date. |
|
| 622 | + */ |
|
| 623 | + public function set_created( $value ) { |
|
| 624 | + $date = strtotime( $value ); |
|
| 625 | + |
|
| 626 | + if ( $date && $value !== '0000-00-00 00:00:00' ) { |
|
| 627 | + $this->set_prop( 'created', date( 'Y-m-d H:i:s', $date ) ); |
|
| 628 | + return; |
|
| 629 | + } |
|
| 630 | + |
|
| 631 | + $this->set_prop( 'created', '' ); |
|
| 185 | 632 | |
| 186 | - /** |
|
| 187 | - * Get customer id. |
|
| 188 | - * |
|
| 189 | - * @since 1.0.19 |
|
| 190 | - * @param string $context View or edit context. |
|
| 191 | - * @return int |
|
| 192 | - */ |
|
| 193 | - public function get_customer_id( $context = 'view' ) { |
|
| 194 | - return (int) $this->get_prop( 'customer_id', $context ); |
|
| 195 | - } |
|
| 196 | - |
|
| 197 | - /** |
|
| 198 | - * Get customer information. |
|
| 199 | - * |
|
| 200 | - * @since 1.0.19 |
|
| 201 | - * @param string $context View or edit context. |
|
| 202 | - * @return WP_User|false WP_User object on success, false on failure. |
|
| 203 | - */ |
|
| 204 | - public function get_customer( $context = 'view' ) { |
|
| 205 | - return get_userdata( $this->get_customer_id( $context ) ); |
|
| 206 | - } |
|
| 207 | - |
|
| 208 | - /** |
|
| 209 | - * Get parent invoice id. |
|
| 210 | - * |
|
| 211 | - * @since 1.0.19 |
|
| 212 | - * @param string $context View or edit context. |
|
| 213 | - * @return int |
|
| 214 | - */ |
|
| 215 | - public function get_parent_invoice_id( $context = 'view' ) { |
|
| 216 | - return (int) $this->get_prop( 'parent_payment_id', $context ); |
|
| 217 | - } |
|
| 218 | - |
|
| 219 | - /** |
|
| 220 | - * Alias for self::get_parent_invoice_id(). |
|
| 221 | - * |
|
| 222 | - * @since 1.0.19 |
|
| 223 | - * @param string $context View or edit context. |
|
| 224 | - * @return int |
|
| 225 | - */ |
|
| 226 | - public function get_parent_payment_id( $context = 'view' ) { |
|
| 227 | - return $this->get_parent_invoice_id( $context ); |
|
| 228 | - } |
|
| 633 | + } |
|
| 229 | 634 | |
| 230 | - /** |
|
| 231 | - * Alias for self::get_parent_invoice_id(). |
|
| 635 | + /** |
|
| 636 | + * Alias for self::set_created(). |
|
| 232 | 637 | * |
| 233 | - * @since 1.0.0 |
|
| 234 | - * @return int |
|
| 638 | + * @since 1.0.19 |
|
| 639 | + * @param string $value strtotime compliant date. |
|
| 235 | 640 | */ |
| 236 | - public function get_original_payment_id( $context = 'view' ) { |
|
| 237 | - return $this->get_parent_invoice_id( $context ); |
|
| 641 | + public function set_date_created( $value ) { |
|
| 642 | + $this->set_created( $value ); |
|
| 238 | 643 | } |
| 239 | 644 | |
| 240 | - /** |
|
| 241 | - * Get parent invoice. |
|
| 242 | - * |
|
| 243 | - * @since 1.0.19 |
|
| 244 | - * @param string $context View or edit context. |
|
| 245 | - * @return WPInv_Invoice |
|
| 246 | - */ |
|
| 247 | - public function get_parent_invoice( $context = 'view' ) { |
|
| 248 | - return new WPInv_Invoice( $this->get_parent_invoice_id( $context ) ); |
|
| 249 | - } |
|
| 250 | - |
|
| 251 | - /** |
|
| 252 | - * Alias for self::get_parent_invoice(). |
|
| 253 | - * |
|
| 254 | - * @since 1.0.19 |
|
| 255 | - * @param string $context View or edit context. |
|
| 256 | - * @return WPInv_Invoice |
|
| 257 | - */ |
|
| 258 | - public function get_parent_payment( $context = 'view' ) { |
|
| 259 | - return $this->get_parent_invoice( $context ); |
|
| 260 | - } |
|
| 261 | - |
|
| 262 | - /** |
|
| 263 | - * Get subscription's product id. |
|
| 264 | - * |
|
| 265 | - * @since 1.0.19 |
|
| 266 | - * @param string $context View or edit context. |
|
| 267 | - * @return int |
|
| 268 | - */ |
|
| 269 | - public function get_product_id( $context = 'view' ) { |
|
| 270 | - return (int) $this->get_prop( 'product_id', $context ); |
|
| 271 | - } |
|
| 272 | - |
|
| 273 | - /** |
|
| 274 | - * Get the subscription product. |
|
| 275 | - * |
|
| 276 | - * @since 1.0.19 |
|
| 277 | - * @param string $context View or edit context. |
|
| 278 | - * @return WPInv_Item |
|
| 279 | - */ |
|
| 280 | - public function get_product( $context = 'view' ) { |
|
| 281 | - return new WPInv_Item( $this->get_product_id( $context ) ); |
|
| 282 | - } |
|
| 283 | - |
|
| 284 | - /** |
|
| 285 | - * Get parent invoice's gateway. |
|
| 286 | - * |
|
| 287 | - * Here for backwards compatibility. |
|
| 288 | - * |
|
| 289 | - * @since 1.0.19 |
|
| 290 | - * @param string $context View or edit context. |
|
| 291 | - * @return string |
|
| 292 | - */ |
|
| 293 | - public function get_gateway( $context = 'view' ) { |
|
| 294 | - return $this->get_parent_invoice( $context )->get_gateway(); |
|
| 295 | - } |
|
| 296 | - |
|
| 297 | - /** |
|
| 298 | - * Get the period of a renewal. |
|
| 299 | - * |
|
| 300 | - * @since 1.0.19 |
|
| 301 | - * @param string $context View or edit context. |
|
| 302 | - * @return string |
|
| 303 | - */ |
|
| 304 | - public function get_period( $context = 'view' ) { |
|
| 305 | - return $this->get_prop( 'period', $context ); |
|
| 306 | - } |
|
| 307 | - |
|
| 308 | - /** |
|
| 309 | - * Get number of periods each renewal is valid for. |
|
| 310 | - * |
|
| 311 | - * @since 1.0.19 |
|
| 312 | - * @param string $context View or edit context. |
|
| 313 | - * @return int |
|
| 314 | - */ |
|
| 315 | - public function get_frequency( $context = 'view' ) { |
|
| 316 | - return (int) $this->get_prop( 'frequency', $context ); |
|
| 317 | - } |
|
| 318 | - |
|
| 319 | - /** |
|
| 320 | - * Get the initial amount for the subscription. |
|
| 321 | - * |
|
| 322 | - * @since 1.0.19 |
|
| 323 | - * @param string $context View or edit context. |
|
| 324 | - * @return float |
|
| 325 | - */ |
|
| 326 | - public function get_initial_amount( $context = 'view' ) { |
|
| 327 | - return (float) wpinv_sanitize_amount( $this->get_prop( 'initial_amount', $context ) ); |
|
| 328 | - } |
|
| 329 | - |
|
| 330 | - /** |
|
| 331 | - * Get the recurring amount for the subscription. |
|
| 332 | - * |
|
| 333 | - * @since 1.0.19 |
|
| 334 | - * @param string $context View or edit context. |
|
| 335 | - * @return float |
|
| 336 | - */ |
|
| 337 | - public function get_recurring_amount( $context = 'view' ) { |
|
| 338 | - return (float) wpinv_sanitize_amount( $this->get_prop( 'recurring_amount', $context ) ); |
|
| 339 | - } |
|
| 340 | - |
|
| 341 | - /** |
|
| 342 | - * Get number of times that this subscription can be renewed. |
|
| 343 | - * |
|
| 344 | - * @since 1.0.19 |
|
| 345 | - * @param string $context View or edit context. |
|
| 346 | - * @return int |
|
| 347 | - */ |
|
| 348 | - public function get_bill_times( $context = 'view' ) { |
|
| 349 | - return (int) $this->get_prop( 'bill_times', $context ); |
|
| 350 | - } |
|
| 351 | - |
|
| 352 | - /** |
|
| 353 | - * Get transaction id of this subscription's parent invoice. |
|
| 354 | - * |
|
| 355 | - * @since 1.0.19 |
|
| 356 | - * @param string $context View or edit context. |
|
| 357 | - * @return string |
|
| 358 | - */ |
|
| 359 | - public function get_transaction_id( $context = 'view' ) { |
|
| 360 | - return $this->get_prop( 'transaction_id', $context ); |
|
| 361 | - } |
|
| 362 | - |
|
| 363 | - /** |
|
| 364 | - * Get the date that the subscription was created. |
|
| 365 | - * |
|
| 366 | - * @since 1.0.19 |
|
| 367 | - * @param string $context View or edit context. |
|
| 368 | - * @return string |
|
| 369 | - */ |
|
| 370 | - public function get_created( $context = 'view' ) { |
|
| 371 | - return $this->get_prop( 'created', $context ); |
|
| 372 | - } |
|
| 373 | - |
|
| 374 | - /** |
|
| 375 | - * Alias for self::get_created(). |
|
| 376 | - * |
|
| 377 | - * @since 1.0.19 |
|
| 378 | - * @param string $context View or edit context. |
|
| 379 | - * @return string |
|
| 380 | - */ |
|
| 381 | - public function get_date_created( $context = 'view' ) { |
|
| 382 | - return $this->get_created( $context ); |
|
| 383 | - } |
|
| 384 | - |
|
| 385 | - /** |
|
| 386 | - * Retrieves the creation date in a timestamp |
|
| 387 | - * |
|
| 388 | - * @since 1.0.0 |
|
| 389 | - * @return int |
|
| 390 | - */ |
|
| 391 | - public function get_time_created() { |
|
| 392 | - $created = $this->get_date_created(); |
|
| 393 | - return empty( $created ) ? current_time( 'timestamp' ) : strtotime( $created, current_time( 'timestamp' ) ); |
|
| 394 | - } |
|
| 395 | - |
|
| 396 | - /** |
|
| 397 | - * Get GMT date when the subscription was created. |
|
| 398 | - * |
|
| 399 | - * @since 1.0.19 |
|
| 400 | - * @param string $context View or edit context. |
|
| 401 | - * @return string |
|
| 402 | - */ |
|
| 403 | - public function get_date_created_gmt( $context = 'view' ) { |
|
| 404 | - $date = $this->get_date_created( $context ); |
|
| 645 | + /** |
|
| 646 | + * Set the date that the subscription will renew. |
|
| 647 | + * |
|
| 648 | + * @since 1.0.19 |
|
| 649 | + * @param string $value strtotime compliant date. |
|
| 650 | + */ |
|
| 651 | + public function set_next_renewal_date( $value ) { |
|
| 652 | + $date = strtotime( $value ); |
|
| 405 | 653 | |
| 406 | - if ( $date ) { |
|
| 407 | - $date = get_gmt_from_date( $date ); |
|
| 654 | + if ( $date && $value !== '0000-00-00 00:00:00' ) { |
|
| 655 | + $this->set_prop( 'expiration', date( 'Y-m-d H:i:s', $date ) ); |
|
| 656 | + return; |
|
| 408 | 657 | } |
| 409 | - return $date; |
|
| 410 | - } |
|
| 411 | - |
|
| 412 | - /** |
|
| 413 | - * Get the date that the subscription will renew. |
|
| 414 | - * |
|
| 415 | - * @since 1.0.19 |
|
| 416 | - * @param string $context View or edit context. |
|
| 417 | - * @return string |
|
| 418 | - */ |
|
| 419 | - public function get_next_renewal_date( $context = 'view' ) { |
|
| 420 | - return $this->get_prop( 'expiration', $context ); |
|
| 421 | - } |
|
| 422 | - |
|
| 423 | - /** |
|
| 424 | - * Alias for self::get_next_renewal_date(). |
|
| 425 | - * |
|
| 426 | - * @since 1.0.19 |
|
| 427 | - * @param string $context View or edit context. |
|
| 428 | - * @return string |
|
| 429 | - */ |
|
| 430 | - public function get_expiration( $context = 'view' ) { |
|
| 431 | - return $this->get_next_renewal_date( $context ); |
|
| 432 | - } |
|
| 433 | - |
|
| 434 | - /** |
|
| 435 | - * Retrieves the expiration date in a timestamp |
|
| 436 | - * |
|
| 437 | - * @since 1.0.0 |
|
| 438 | - * @return int |
|
| 439 | - */ |
|
| 440 | - public function get_expiration_time() { |
|
| 441 | - $expiration = $this->get_expiration(); |
|
| 442 | - |
|
| 443 | - if ( empty( $expiration ) || '0000-00-00 00:00:00' == $expiration ) { |
|
| 444 | - return current_time( 'timestamp' ); |
|
| 445 | - } |
|
| 446 | - |
|
| 447 | - $expiration = strtotime( $expiration, current_time( 'timestamp' ) ); |
|
| 448 | - return $expiration < current_time( 'timestamp' ) ? current_time( 'timestamp' ) : $expiration; |
|
| 449 | - } |
|
| 450 | - |
|
| 451 | - /** |
|
| 452 | - * Get GMT date when the subscription will renew. |
|
| 453 | - * |
|
| 454 | - * @since 1.0.19 |
|
| 455 | - * @param string $context View or edit context. |
|
| 456 | - * @return string |
|
| 457 | - */ |
|
| 458 | - public function get_next_renewal_date_gmt( $context = 'view' ) { |
|
| 459 | - $date = $this->get_next_renewal_date( $context ); |
|
| 460 | 658 | |
| 461 | - if ( $date ) { |
|
| 462 | - $date = get_gmt_from_date( $date ); |
|
| 463 | - } |
|
| 464 | - return $date; |
|
| 465 | - } |
|
| 466 | - |
|
| 467 | - /** |
|
| 468 | - * Get the subscription's trial period. |
|
| 469 | - * |
|
| 470 | - * @since 1.0.19 |
|
| 471 | - * @param string $context View or edit context. |
|
| 472 | - * @return string |
|
| 473 | - */ |
|
| 474 | - public function get_trial_period( $context = 'view' ) { |
|
| 475 | - return $this->get_prop( 'trial_period', $context ); |
|
| 476 | - } |
|
| 477 | - |
|
| 478 | - /** |
|
| 479 | - * Get the subscription's status. |
|
| 480 | - * |
|
| 481 | - * @since 1.0.19 |
|
| 482 | - * @param string $context View or edit context. |
|
| 483 | - * @return string |
|
| 484 | - */ |
|
| 485 | - public function get_status( $context = 'view' ) { |
|
| 486 | - return $this->get_prop( 'status', $context ); |
|
| 487 | - } |
|
| 488 | - |
|
| 489 | - /** |
|
| 490 | - * Get the subscription's profile id. |
|
| 491 | - * |
|
| 492 | - * @since 1.0.19 |
|
| 493 | - * @param string $context View or edit context. |
|
| 494 | - * @return string |
|
| 495 | - */ |
|
| 496 | - public function get_profile_id( $context = 'view' ) { |
|
| 497 | - return $this->get_prop( 'profile_id', $context ); |
|
| 498 | - } |
|
| 499 | - |
|
| 500 | - /* |
|
| 501 | - |-------------------------------------------------------------------------- |
|
| 502 | - | Setters |
|
| 503 | - |-------------------------------------------------------------------------- |
|
| 504 | - */ |
|
| 659 | + $this->set_prop( 'expiration', '' ); |
|
| 505 | 660 | |
| 506 | - /** |
|
| 507 | - * Set customer id. |
|
| 508 | - * |
|
| 509 | - * @since 1.0.19 |
|
| 510 | - * @param int $value The customer's id. |
|
| 511 | - */ |
|
| 512 | - public function set_customer_id( $value ) { |
|
| 513 | - $this->set_prop( 'customer_id', (int) $value ); |
|
| 514 | - } |
|
| 515 | - |
|
| 516 | - /** |
|
| 517 | - * Set parent invoice id. |
|
| 518 | - * |
|
| 519 | - * @since 1.0.19 |
|
| 520 | - * @param int $value The parent invoice id. |
|
| 521 | - */ |
|
| 522 | - public function set_parent_invoice_id( $value ) { |
|
| 523 | - $this->set_prop( 'parent_payment_id', (int) $value ); |
|
| 524 | - } |
|
| 525 | - |
|
| 526 | - /** |
|
| 527 | - * Alias for self::set_parent_invoice_id(). |
|
| 528 | - * |
|
| 529 | - * @since 1.0.19 |
|
| 530 | - * @param int $value The parent invoice id. |
|
| 531 | - */ |
|
| 532 | - public function set_parent_payment_id( $value ) { |
|
| 533 | - $this->set_parent_invoice_id( $value ); |
|
| 534 | - } |
|
| 661 | + } |
|
| 535 | 662 | |
| 536 | - /** |
|
| 537 | - * Alias for self::set_parent_invoice_id(). |
|
| 663 | + /** |
|
| 664 | + * Alias for self::set_next_renewal_date(). |
|
| 538 | 665 | * |
| 539 | 666 | * @since 1.0.19 |
| 540 | - * @param int $value The parent invoice id. |
|
| 667 | + * @param string $value strtotime compliant date. |
|
| 541 | 668 | */ |
| 542 | - public function set_original_payment_id( $value ) { |
|
| 543 | - $this->set_parent_invoice_id( $value ); |
|
| 544 | - } |
|
| 545 | - |
|
| 546 | - /** |
|
| 547 | - * Set subscription's product id. |
|
| 548 | - * |
|
| 549 | - * @since 1.0.19 |
|
| 550 | - * @param int $value The subscription product id. |
|
| 551 | - */ |
|
| 552 | - public function set_product_id( $value ) { |
|
| 553 | - $this->set_prop( 'product_id', (int) $value ); |
|
| 554 | - } |
|
| 555 | - |
|
| 556 | - /** |
|
| 557 | - * Set the period of a renewal. |
|
| 558 | - * |
|
| 559 | - * @since 1.0.19 |
|
| 560 | - * @param string $value The renewal period. |
|
| 561 | - */ |
|
| 562 | - public function set_period( $value ) { |
|
| 563 | - $this->set_prop( 'period', $value ); |
|
| 564 | - } |
|
| 565 | - |
|
| 566 | - /** |
|
| 567 | - * Set number of periods each renewal is valid for. |
|
| 568 | - * |
|
| 569 | - * @since 1.0.19 |
|
| 570 | - * @param int $value The subscription frequency. |
|
| 571 | - */ |
|
| 572 | - public function set_frequency( $value ) { |
|
| 573 | - $value = empty( $value ) ? 1 : (int) $value; |
|
| 574 | - $this->set_prop( 'frequency', absint( $value ) ); |
|
| 575 | - } |
|
| 576 | - |
|
| 577 | - /** |
|
| 578 | - * Set the initial amount for the subscription. |
|
| 579 | - * |
|
| 580 | - * @since 1.0.19 |
|
| 581 | - * @param float $value The initial subcription amount. |
|
| 582 | - */ |
|
| 583 | - public function set_initial_amount( $value ) { |
|
| 584 | - $this->set_prop( 'initial_amount', wpinv_sanitize_amount( $value ) ); |
|
| 585 | - } |
|
| 586 | - |
|
| 587 | - /** |
|
| 588 | - * Set the recurring amount for the subscription. |
|
| 589 | - * |
|
| 590 | - * @since 1.0.19 |
|
| 591 | - * @param float $value The recurring subcription amount. |
|
| 592 | - */ |
|
| 593 | - public function set_recurring_amount( $value ) { |
|
| 594 | - $this->set_prop( 'recurring_amount', wpinv_sanitize_amount( $value ) ); |
|
| 595 | - } |
|
| 596 | - |
|
| 597 | - /** |
|
| 598 | - * Set number of times that this subscription can be renewed. |
|
| 599 | - * |
|
| 600 | - * @since 1.0.19 |
|
| 601 | - * @param int $value Bill times. |
|
| 602 | - */ |
|
| 603 | - public function set_bill_times( $value ) { |
|
| 604 | - $this->set_prop( 'bill_times', (int) $value ); |
|
| 605 | - } |
|
| 606 | - |
|
| 607 | - /** |
|
| 608 | - * Get transaction id of this subscription's parent invoice. |
|
| 609 | - * |
|
| 610 | - * @since 1.0.19 |
|
| 611 | - * @param string $value Bill times. |
|
| 612 | - */ |
|
| 613 | - public function set_transaction_id( $value ) { |
|
| 614 | - $this->set_prop( 'transaction_id', sanitize_text_field( $value ) ); |
|
| 615 | - } |
|
| 616 | - |
|
| 617 | - /** |
|
| 618 | - * Set date when this subscription started. |
|
| 619 | - * |
|
| 620 | - * @since 1.0.19 |
|
| 621 | - * @param string $value strtotime compliant date. |
|
| 622 | - */ |
|
| 623 | - public function set_created( $value ) { |
|
| 624 | - $date = strtotime( $value ); |
|
| 669 | + public function set_expiration( $value ) { |
|
| 670 | + $this->set_next_renewal_date( $value ); |
|
| 671 | + } |
|
| 625 | 672 | |
| 626 | - if ( $date && $value !== '0000-00-00 00:00:00' ) { |
|
| 627 | - $this->set_prop( 'created', date( 'Y-m-d H:i:s', $date ) ); |
|
| 673 | + /** |
|
| 674 | + * Set the subscription's trial period. |
|
| 675 | + * |
|
| 676 | + * @since 1.0.19 |
|
| 677 | + * @param string $value trial period e.g 1 year. |
|
| 678 | + */ |
|
| 679 | + public function set_trial_period( $value ) { |
|
| 680 | + $this->set_prop( 'trial_period', $value ); |
|
| 681 | + } |
|
| 682 | + |
|
| 683 | + /** |
|
| 684 | + * Set the subscription's status. |
|
| 685 | + * |
|
| 686 | + * @since 1.0.19 |
|
| 687 | + * @param string $new_status New subscription status. |
|
| 688 | + */ |
|
| 689 | + public function set_status( $new_status ) { |
|
| 690 | + |
|
| 691 | + // Abort if this is not a valid status; |
|
| 692 | + if ( ! array_key_exists( $new_status, getpaid_get_subscription_statuses() ) ) { |
|
| 628 | 693 | return; |
| 629 | 694 | } |
| 630 | 695 | |
| 631 | - $this->set_prop( 'created', '' ); |
|
| 632 | 696 | |
| 633 | - } |
|
| 697 | + $old_status = ! empty( $this->status_transition['from'] ) ? $this->status_transition['from'] : $this->get_status(); |
|
| 698 | + if ( true === $this->object_read && $old_status !== $new_status ) { |
|
| 699 | + $this->status_transition = array( |
|
| 700 | + 'from' => $old_status, |
|
| 701 | + 'to' => $new_status, |
|
| 702 | + ); |
|
| 703 | + } |
|
| 634 | 704 | |
| 635 | - /** |
|
| 636 | - * Alias for self::set_created(). |
|
| 637 | - * |
|
| 638 | - * @since 1.0.19 |
|
| 639 | - * @param string $value strtotime compliant date. |
|
| 640 | - */ |
|
| 641 | - public function set_date_created( $value ) { |
|
| 642 | - $this->set_created( $value ); |
|
| 705 | + $this->set_prop( 'status', $new_status ); |
|
| 643 | 706 | } |
| 644 | 707 | |
| 645 | - /** |
|
| 646 | - * Set the date that the subscription will renew. |
|
| 647 | - * |
|
| 648 | - * @since 1.0.19 |
|
| 649 | - * @param string $value strtotime compliant date. |
|
| 650 | - */ |
|
| 651 | - public function set_next_renewal_date( $value ) { |
|
| 652 | - $date = strtotime( $value ); |
|
| 708 | + /** |
|
| 709 | + * Set the subscription's (remote) profile id. |
|
| 710 | + * |
|
| 711 | + * @since 1.0.19 |
|
| 712 | + * @param string $value the remote profile id. |
|
| 713 | + */ |
|
| 714 | + public function set_profile_id( $value ) { |
|
| 715 | + $this->set_prop( 'profile_id', sanitize_text_field( $value ) ); |
|
| 716 | + } |
|
| 653 | 717 | |
| 654 | - if ( $date && $value !== '0000-00-00 00:00:00' ) { |
|
| 655 | - $this->set_prop( 'expiration', date( 'Y-m-d H:i:s', $date ) ); |
|
| 656 | - return; |
|
| 657 | - } |
|
| 658 | - |
|
| 659 | - $this->set_prop( 'expiration', '' ); |
|
| 660 | - |
|
| 661 | - } |
|
| 662 | - |
|
| 663 | - /** |
|
| 664 | - * Alias for self::set_next_renewal_date(). |
|
| 665 | - * |
|
| 666 | - * @since 1.0.19 |
|
| 667 | - * @param string $value strtotime compliant date. |
|
| 668 | - */ |
|
| 669 | - public function set_expiration( $value ) { |
|
| 670 | - $this->set_next_renewal_date( $value ); |
|
| 671 | - } |
|
| 672 | - |
|
| 673 | - /** |
|
| 674 | - * Set the subscription's trial period. |
|
| 675 | - * |
|
| 676 | - * @since 1.0.19 |
|
| 677 | - * @param string $value trial period e.g 1 year. |
|
| 678 | - */ |
|
| 679 | - public function set_trial_period( $value ) { |
|
| 680 | - $this->set_prop( 'trial_period', $value ); |
|
| 681 | - } |
|
| 682 | - |
|
| 683 | - /** |
|
| 684 | - * Set the subscription's status. |
|
| 685 | - * |
|
| 686 | - * @since 1.0.19 |
|
| 687 | - * @param string $new_status New subscription status. |
|
| 688 | - */ |
|
| 689 | - public function set_status( $new_status ) { |
|
| 690 | - |
|
| 691 | - // Abort if this is not a valid status; |
|
| 692 | - if ( ! array_key_exists( $new_status, getpaid_get_subscription_statuses() ) ) { |
|
| 693 | - return; |
|
| 694 | - } |
|
| 695 | - |
|
| 696 | - |
|
| 697 | - $old_status = ! empty( $this->status_transition['from'] ) ? $this->status_transition['from'] : $this->get_status(); |
|
| 698 | - if ( true === $this->object_read && $old_status !== $new_status ) { |
|
| 699 | - $this->status_transition = array( |
|
| 700 | - 'from' => $old_status, |
|
| 701 | - 'to' => $new_status, |
|
| 702 | - ); |
|
| 703 | - } |
|
| 704 | - |
|
| 705 | - $this->set_prop( 'status', $new_status ); |
|
| 706 | - } |
|
| 707 | - |
|
| 708 | - /** |
|
| 709 | - * Set the subscription's (remote) profile id. |
|
| 710 | - * |
|
| 711 | - * @since 1.0.19 |
|
| 712 | - * @param string $value the remote profile id. |
|
| 713 | - */ |
|
| 714 | - public function set_profile_id( $value ) { |
|
| 715 | - $this->set_prop( 'profile_id', sanitize_text_field( $value ) ); |
|
| 716 | - } |
|
| 717 | - |
|
| 718 | - /* |
|
| 718 | + /* |
|
| 719 | 719 | |-------------------------------------------------------------------------- |
| 720 | 720 | | Boolean methods |
| 721 | 721 | |-------------------------------------------------------------------------- |
@@ -724,55 +724,55 @@ discard block |
||
| 724 | 724 | | |
| 725 | 725 | */ |
| 726 | 726 | |
| 727 | - /** |
|
| 727 | + /** |
|
| 728 | 728 | * Checks if the subscription has a given status. |
| 729 | - * |
|
| 730 | - * @param string|array String or array of strings to check for. |
|
| 731 | - * @return bool |
|
| 729 | + * |
|
| 730 | + * @param string|array String or array of strings to check for. |
|
| 731 | + * @return bool |
|
| 732 | 732 | */ |
| 733 | 733 | public function has_status( $status ) { |
| 734 | 734 | return in_array( $this->get_status(), wpinv_clean( wpinv_parse_list( $status ) ) ); |
| 735 | - } |
|
| 735 | + } |
|
| 736 | 736 | |
| 737 | - /** |
|
| 737 | + /** |
|
| 738 | 738 | * Checks if the subscription has a trial period. |
| 739 | - * |
|
| 740 | - * @return bool |
|
| 739 | + * |
|
| 740 | + * @return bool |
|
| 741 | 741 | */ |
| 742 | 742 | public function has_trial_period() { |
| 743 | - $period = $this->get_trial_period(); |
|
| 743 | + $period = $this->get_trial_period(); |
|
| 744 | 744 | return ! empty( $period ); |
| 745 | - } |
|
| 746 | - |
|
| 747 | - /** |
|
| 748 | - * Is the subscription active? |
|
| 749 | - * |
|
| 750 | - * @return bool |
|
| 751 | - */ |
|
| 752 | - public function is_active() { |
|
| 753 | - return $this->has_status( 'active trialling' ) && ! $this->is_expired(); |
|
| 754 | - } |
|
| 755 | - |
|
| 756 | - /** |
|
| 757 | - * Is the subscription expired? |
|
| 758 | - * |
|
| 759 | - * @return bool |
|
| 760 | - */ |
|
| 761 | - public function is_expired() { |
|
| 762 | - return $this->has_status( 'expired' ) || ( $this->has_status( 'active cancelled trialling' ) && $this->get_expiration_time() < current_time( 'mysql' ) ); |
|
| 763 | - } |
|
| 764 | - |
|
| 765 | - /** |
|
| 766 | - * Is this the last renewals? |
|
| 767 | - * |
|
| 768 | - * @return bool |
|
| 769 | - */ |
|
| 770 | - public function is_last_renewal() { |
|
| 771 | - $max_bills = $this->get_bill_times(); |
|
| 772 | - return ! empty( $max_bills ) && $max_bills <= $this->get_times_billed(); |
|
| 773 | - } |
|
| 774 | - |
|
| 775 | - /* |
|
| 745 | + } |
|
| 746 | + |
|
| 747 | + /** |
|
| 748 | + * Is the subscription active? |
|
| 749 | + * |
|
| 750 | + * @return bool |
|
| 751 | + */ |
|
| 752 | + public function is_active() { |
|
| 753 | + return $this->has_status( 'active trialling' ) && ! $this->is_expired(); |
|
| 754 | + } |
|
| 755 | + |
|
| 756 | + /** |
|
| 757 | + * Is the subscription expired? |
|
| 758 | + * |
|
| 759 | + * @return bool |
|
| 760 | + */ |
|
| 761 | + public function is_expired() { |
|
| 762 | + return $this->has_status( 'expired' ) || ( $this->has_status( 'active cancelled trialling' ) && $this->get_expiration_time() < current_time( 'mysql' ) ); |
|
| 763 | + } |
|
| 764 | + |
|
| 765 | + /** |
|
| 766 | + * Is this the last renewals? |
|
| 767 | + * |
|
| 768 | + * @return bool |
|
| 769 | + */ |
|
| 770 | + public function is_last_renewal() { |
|
| 771 | + $max_bills = $this->get_bill_times(); |
|
| 772 | + return ! empty( $max_bills ) && $max_bills <= $this->get_times_billed(); |
|
| 773 | + } |
|
| 774 | + |
|
| 775 | + /* |
|
| 776 | 776 | |-------------------------------------------------------------------------- |
| 777 | 777 | | Additional methods |
| 778 | 778 | |-------------------------------------------------------------------------- |
@@ -781,27 +781,27 @@ discard block |
||
| 781 | 781 | | |
| 782 | 782 | */ |
| 783 | 783 | |
| 784 | - /** |
|
| 785 | - * Backwards compatibilty. |
|
| 786 | - */ |
|
| 787 | - public function create( $data = array() ) { |
|
| 784 | + /** |
|
| 785 | + * Backwards compatibilty. |
|
| 786 | + */ |
|
| 787 | + public function create( $data = array() ) { |
|
| 788 | 788 | |
| 789 | - // Set the properties. |
|
| 790 | - if ( is_array( $data ) ) { |
|
| 791 | - $this->set_props( $data ); |
|
| 792 | - } |
|
| 789 | + // Set the properties. |
|
| 790 | + if ( is_array( $data ) ) { |
|
| 791 | + $this->set_props( $data ); |
|
| 792 | + } |
|
| 793 | 793 | |
| 794 | - // Save the item. |
|
| 795 | - return $this->save(); |
|
| 794 | + // Save the item. |
|
| 795 | + return $this->save(); |
|
| 796 | 796 | |
| 797 | - } |
|
| 797 | + } |
|
| 798 | 798 | |
| 799 | - /** |
|
| 800 | - * Backwards compatibilty. |
|
| 801 | - */ |
|
| 802 | - public function update( $args = array() ) { |
|
| 803 | - return $this->create( $args ); |
|
| 804 | - } |
|
| 799 | + /** |
|
| 800 | + * Backwards compatibilty. |
|
| 801 | + */ |
|
| 802 | + public function update( $args = array() ) { |
|
| 803 | + return $this->create( $args ); |
|
| 804 | + } |
|
| 805 | 805 | |
| 806 | 806 | /** |
| 807 | 807 | * Retrieve renewal payments for a subscription |
@@ -811,22 +811,22 @@ discard block |
||
| 811 | 811 | */ |
| 812 | 812 | public function get_child_payments( $hide_pending = true ) { |
| 813 | 813 | |
| 814 | - $statuses = array( 'publish', 'wpi-processing', 'wpi-renewal' ); |
|
| 814 | + $statuses = array( 'publish', 'wpi-processing', 'wpi-renewal' ); |
|
| 815 | 815 | |
| 816 | - if ( ! $hide_pending ) { |
|
| 817 | - $statuses = array_keys( wpinv_get_invoice_statuses() ); |
|
| 818 | - } |
|
| 816 | + if ( ! $hide_pending ) { |
|
| 817 | + $statuses = array_keys( wpinv_get_invoice_statuses() ); |
|
| 818 | + } |
|
| 819 | 819 | |
| 820 | 820 | return get_posts( |
| 821 | - array( |
|
| 822 | - 'post_parent' => $this->get_parent_payment_id(), |
|
| 823 | - 'numberposts' => -1, |
|
| 824 | - 'post_status' => $statuses, |
|
| 825 | - 'orderby' => 'ID', |
|
| 826 | - 'order' => 'ASC', |
|
| 827 | - 'post_type' => 'wpi_invoice' |
|
| 828 | - ) |
|
| 829 | - ); |
|
| 821 | + array( |
|
| 822 | + 'post_parent' => $this->get_parent_payment_id(), |
|
| 823 | + 'numberposts' => -1, |
|
| 824 | + 'post_status' => $statuses, |
|
| 825 | + 'orderby' => 'ID', |
|
| 826 | + 'order' => 'ASC', |
|
| 827 | + 'post_type' => 'wpi_invoice' |
|
| 828 | + ) |
|
| 829 | + ); |
|
| 830 | 830 | } |
| 831 | 831 | |
| 832 | 832 | /** |
@@ -836,7 +836,7 @@ discard block |
||
| 836 | 836 | * @return int |
| 837 | 837 | */ |
| 838 | 838 | public function get_total_payments() { |
| 839 | - return getpaid_count_subscription_invoices( $this->get_parent_invoice_id(), $this->get_id() ); |
|
| 839 | + return getpaid_count_subscription_invoices( $this->get_parent_invoice_id(), $this->get_id() ); |
|
| 840 | 840 | } |
| 841 | 841 | |
| 842 | 842 | /** |
@@ -860,57 +860,57 @@ discard block |
||
| 860 | 860 | * |
| 861 | 861 | * @since 2.4 |
| 862 | 862 | * @param array $args Array of values for the payment, including amount and transaction ID |
| 863 | - * @param WPInv_Invoice $invoice If adding an existing invoice. |
|
| 863 | + * @param WPInv_Invoice $invoice If adding an existing invoice. |
|
| 864 | 864 | * @return bool |
| 865 | 865 | */ |
| 866 | 866 | public function add_payment( $args = array(), $invoice = false ) { |
| 867 | 867 | |
| 868 | - // Process each payment once. |
|
| 868 | + // Process each payment once. |
|
| 869 | 869 | if ( ! empty( $args['transaction_id'] ) && $this->payment_exists( $args['transaction_id'] ) ) { |
| 870 | 870 | return false; |
| 871 | 871 | } |
| 872 | 872 | |
| 873 | - // Are we creating a new invoice? |
|
| 874 | - if ( empty( $invoice ) ) { |
|
| 875 | - $invoice = $this->create_payment(); |
|
| 873 | + // Are we creating a new invoice? |
|
| 874 | + if ( empty( $invoice ) ) { |
|
| 875 | + $invoice = $this->create_payment(); |
|
| 876 | 876 | |
| 877 | - if ( empty( $invoice ) ) { |
|
| 878 | - return false; |
|
| 879 | - } |
|
| 877 | + if ( empty( $invoice ) ) { |
|
| 878 | + return false; |
|
| 879 | + } |
|
| 880 | 880 | |
| 881 | - } |
|
| 881 | + } |
|
| 882 | 882 | |
| 883 | - $invoice->set_status( 'wpi-renewal' ); |
|
| 883 | + $invoice->set_status( 'wpi-renewal' ); |
|
| 884 | 884 | |
| 885 | - // Maybe set a transaction id. |
|
| 886 | - if ( ! empty( $args['transaction_id'] ) ) { |
|
| 887 | - $invoice->set_transaction_id( $args['transaction_id'] ); |
|
| 888 | - } |
|
| 885 | + // Maybe set a transaction id. |
|
| 886 | + if ( ! empty( $args['transaction_id'] ) ) { |
|
| 887 | + $invoice->set_transaction_id( $args['transaction_id'] ); |
|
| 888 | + } |
|
| 889 | 889 | |
| 890 | - // Set the completed date. |
|
| 891 | - $invoice->set_completed_date( current_time( 'mysql' ) ); |
|
| 890 | + // Set the completed date. |
|
| 891 | + $invoice->set_completed_date( current_time( 'mysql' ) ); |
|
| 892 | 892 | |
| 893 | - // And the gateway. |
|
| 894 | - if ( ! empty( $args['gateway'] ) ) { |
|
| 895 | - $invoice->set_gateway( $args['gateway'] ); |
|
| 896 | - } |
|
| 893 | + // And the gateway. |
|
| 894 | + if ( ! empty( $args['gateway'] ) ) { |
|
| 895 | + $invoice->set_gateway( $args['gateway'] ); |
|
| 896 | + } |
|
| 897 | 897 | |
| 898 | - $invoice->save(); |
|
| 898 | + $invoice->save(); |
|
| 899 | 899 | |
| 900 | - if ( ! $invoice->exists() ) { |
|
| 901 | - return false; |
|
| 902 | - } |
|
| 900 | + if ( ! $invoice->exists() ) { |
|
| 901 | + return false; |
|
| 902 | + } |
|
| 903 | 903 | |
| 904 | - do_action( 'getpaid_after_create_subscription_renewal_invoice', $invoice, $this ); |
|
| 905 | - do_action( 'wpinv_recurring_add_subscription_payment', $invoice, $this ); |
|
| 904 | + do_action( 'getpaid_after_create_subscription_renewal_invoice', $invoice, $this ); |
|
| 905 | + do_action( 'wpinv_recurring_add_subscription_payment', $invoice, $this ); |
|
| 906 | 906 | do_action( 'wpinv_recurring_record_payment', $invoice->get_id(), $this->get_parent_invoice_id(), $invoice->get_recurring_total(), $invoice->get_transaction_id() ); |
| 907 | 907 | |
| 908 | 908 | update_post_meta( $invoice->get_id(), '_wpinv_subscription_id', $this->id ); |
| 909 | 909 | |
| 910 | 910 | return $invoice->get_id(); |
| 911 | - } |
|
| 911 | + } |
|
| 912 | 912 | |
| 913 | - /** |
|
| 913 | + /** |
|
| 914 | 914 | * Creates a new invoice and returns it. |
| 915 | 915 | * |
| 916 | 916 | * @since 1.0.19 |
@@ -918,124 +918,124 @@ discard block |
||
| 918 | 918 | */ |
| 919 | 919 | public function create_payment() { |
| 920 | 920 | |
| 921 | - $parent_invoice = $this->get_parent_payment(); |
|
| 922 | - |
|
| 923 | - if ( ! $parent_invoice->exists() ) { |
|
| 924 | - return false; |
|
| 925 | - } |
|
| 926 | - |
|
| 927 | - // Duplicate the parent invoice. |
|
| 928 | - $invoice = getpaid_duplicate_invoice( $parent_invoice ); |
|
| 929 | - $invoice->set_parent_id( $parent_invoice->get_id() ); |
|
| 930 | - $invoice->set_subscription_id( $this->get_id() ); |
|
| 931 | - $invoice->set_remote_subscription_id( $this->get_profile_id() ); |
|
| 932 | - |
|
| 933 | - // Set invoice items. |
|
| 934 | - $subscription_group = getpaid_get_invoice_subscription_group( $parent_invoice->get_id(), $this->get_id() ); |
|
| 935 | - $allowed_items = empty( $subscription_group ) ? array( $this->get_product_id() ) : array_keys( $subscription_group['items'] ); |
|
| 936 | - $invoice_items = array(); |
|
| 937 | - |
|
| 938 | - foreach ( $invoice->get_items() as $item ) { |
|
| 939 | - if ( in_array( $item->get_id(), $allowed_items ) ) { |
|
| 940 | - $invoice_items[] = $item; |
|
| 941 | - } |
|
| 942 | - } |
|
| 943 | - |
|
| 944 | - $invoice->set_items( $invoice_items ); |
|
| 945 | - |
|
| 946 | - if ( ! empty( $subscription_group['fees'] ) ) { |
|
| 947 | - $invoice->set_fees( $subscription_group['fees'] ); |
|
| 948 | - } |
|
| 949 | - |
|
| 950 | - // Maybe recalculate discount (Pre-GetPaid Fix). |
|
| 951 | - $discount = new WPInv_Discount( $invoice->get_discount_code() ); |
|
| 952 | - if ( $discount->exists() && $discount->is_recurring() && 0 == $invoice->get_total_discount() ) { |
|
| 953 | - $invoice->add_discount( getpaid_calculate_invoice_discount( $invoice, $discount ) ); |
|
| 954 | - } |
|
| 955 | - |
|
| 956 | - $invoice->recalculate_total(); |
|
| 957 | - $invoice->set_status( 'wpi-pending' ); |
|
| 958 | - $invoice->save(); |
|
| 959 | - |
|
| 960 | - return $invoice->exists() ? $invoice : false; |
|
| 961 | - } |
|
| 962 | - |
|
| 963 | - /** |
|
| 964 | - * Renews or completes a subscription |
|
| 965 | - * |
|
| 966 | - * @since 1.0.0 |
|
| 967 | - * @return int The subscription's id |
|
| 968 | - */ |
|
| 969 | - public function renew() { |
|
| 970 | - |
|
| 971 | - // Complete subscription if applicable |
|
| 972 | - if ( $this->is_last_renewal() ) { |
|
| 973 | - return $this->complete(); |
|
| 974 | - } |
|
| 975 | - |
|
| 976 | - // Calculate new expiration |
|
| 977 | - $frequency = $this->get_frequency(); |
|
| 978 | - $period = $this->get_period(); |
|
| 979 | - $new_expiration = strtotime( "+ $frequency $period", $this->get_expiration_time() ); |
|
| 980 | - |
|
| 981 | - $this->set_expiration( date( 'Y-m-d H:i:s',$new_expiration ) ); |
|
| 982 | - $this->set_status( 'active' ); |
|
| 983 | - $this->save(); |
|
| 984 | - |
|
| 985 | - do_action( 'getpaid_subscription_renewed', $this ); |
|
| 986 | - |
|
| 987 | - return $this->get_id(); |
|
| 988 | - } |
|
| 989 | - |
|
| 990 | - /** |
|
| 991 | - * Marks a subscription as completed |
|
| 992 | - * |
|
| 993 | - * Subscription is completed when the number of payments matches the billing_times field |
|
| 994 | - * |
|
| 995 | - * @since 1.0.0 |
|
| 996 | - * @return int|bool Subscription id or false if the subscription is cancelled. |
|
| 997 | - */ |
|
| 998 | - public function complete() { |
|
| 999 | - |
|
| 1000 | - // Only mark a subscription as complete if it's not already cancelled. |
|
| 1001 | - if ( $this->has_status( 'cancelled' ) ) { |
|
| 1002 | - return false; |
|
| 1003 | - } |
|
| 1004 | - |
|
| 1005 | - $this->set_status( 'completed' ); |
|
| 1006 | - return $this->save(); |
|
| 1007 | - |
|
| 1008 | - } |
|
| 1009 | - |
|
| 1010 | - /** |
|
| 1011 | - * Marks a subscription as expired |
|
| 1012 | - * |
|
| 1013 | - * @since 1.0.0 |
|
| 1014 | - * @param bool $check_expiration |
|
| 1015 | - * @return int|bool Subscription id or false if $check_expiration is true and expiration date is in the future. |
|
| 1016 | - */ |
|
| 1017 | - public function expire( $check_expiration = false ) { |
|
| 1018 | - |
|
| 1019 | - if ( $check_expiration && $this->get_expiration_time() > current_time( 'timestamp' ) ) { |
|
| 1020 | - // Do not mark as expired since real expiration date is in the future |
|
| 1021 | - return false; |
|
| 1022 | - } |
|
| 1023 | - |
|
| 1024 | - $this->set_status( 'expired' ); |
|
| 1025 | - return $this->save(); |
|
| 1026 | - |
|
| 1027 | - } |
|
| 1028 | - |
|
| 1029 | - /** |
|
| 1030 | - * Marks a subscription as failing |
|
| 1031 | - * |
|
| 1032 | - * @since 2.4.2 |
|
| 1033 | - * @return int Subscription id. |
|
| 1034 | - */ |
|
| 1035 | - public function failing() { |
|
| 1036 | - $this->set_status( 'failing' ); |
|
| 1037 | - return $this->save(); |
|
| 1038 | - } |
|
| 921 | + $parent_invoice = $this->get_parent_payment(); |
|
| 922 | + |
|
| 923 | + if ( ! $parent_invoice->exists() ) { |
|
| 924 | + return false; |
|
| 925 | + } |
|
| 926 | + |
|
| 927 | + // Duplicate the parent invoice. |
|
| 928 | + $invoice = getpaid_duplicate_invoice( $parent_invoice ); |
|
| 929 | + $invoice->set_parent_id( $parent_invoice->get_id() ); |
|
| 930 | + $invoice->set_subscription_id( $this->get_id() ); |
|
| 931 | + $invoice->set_remote_subscription_id( $this->get_profile_id() ); |
|
| 932 | + |
|
| 933 | + // Set invoice items. |
|
| 934 | + $subscription_group = getpaid_get_invoice_subscription_group( $parent_invoice->get_id(), $this->get_id() ); |
|
| 935 | + $allowed_items = empty( $subscription_group ) ? array( $this->get_product_id() ) : array_keys( $subscription_group['items'] ); |
|
| 936 | + $invoice_items = array(); |
|
| 937 | + |
|
| 938 | + foreach ( $invoice->get_items() as $item ) { |
|
| 939 | + if ( in_array( $item->get_id(), $allowed_items ) ) { |
|
| 940 | + $invoice_items[] = $item; |
|
| 941 | + } |
|
| 942 | + } |
|
| 943 | + |
|
| 944 | + $invoice->set_items( $invoice_items ); |
|
| 945 | + |
|
| 946 | + if ( ! empty( $subscription_group['fees'] ) ) { |
|
| 947 | + $invoice->set_fees( $subscription_group['fees'] ); |
|
| 948 | + } |
|
| 949 | + |
|
| 950 | + // Maybe recalculate discount (Pre-GetPaid Fix). |
|
| 951 | + $discount = new WPInv_Discount( $invoice->get_discount_code() ); |
|
| 952 | + if ( $discount->exists() && $discount->is_recurring() && 0 == $invoice->get_total_discount() ) { |
|
| 953 | + $invoice->add_discount( getpaid_calculate_invoice_discount( $invoice, $discount ) ); |
|
| 954 | + } |
|
| 955 | + |
|
| 956 | + $invoice->recalculate_total(); |
|
| 957 | + $invoice->set_status( 'wpi-pending' ); |
|
| 958 | + $invoice->save(); |
|
| 959 | + |
|
| 960 | + return $invoice->exists() ? $invoice : false; |
|
| 961 | + } |
|
| 962 | + |
|
| 963 | + /** |
|
| 964 | + * Renews or completes a subscription |
|
| 965 | + * |
|
| 966 | + * @since 1.0.0 |
|
| 967 | + * @return int The subscription's id |
|
| 968 | + */ |
|
| 969 | + public function renew() { |
|
| 970 | + |
|
| 971 | + // Complete subscription if applicable |
|
| 972 | + if ( $this->is_last_renewal() ) { |
|
| 973 | + return $this->complete(); |
|
| 974 | + } |
|
| 975 | + |
|
| 976 | + // Calculate new expiration |
|
| 977 | + $frequency = $this->get_frequency(); |
|
| 978 | + $period = $this->get_period(); |
|
| 979 | + $new_expiration = strtotime( "+ $frequency $period", $this->get_expiration_time() ); |
|
| 980 | + |
|
| 981 | + $this->set_expiration( date( 'Y-m-d H:i:s',$new_expiration ) ); |
|
| 982 | + $this->set_status( 'active' ); |
|
| 983 | + $this->save(); |
|
| 984 | + |
|
| 985 | + do_action( 'getpaid_subscription_renewed', $this ); |
|
| 986 | + |
|
| 987 | + return $this->get_id(); |
|
| 988 | + } |
|
| 989 | + |
|
| 990 | + /** |
|
| 991 | + * Marks a subscription as completed |
|
| 992 | + * |
|
| 993 | + * Subscription is completed when the number of payments matches the billing_times field |
|
| 994 | + * |
|
| 995 | + * @since 1.0.0 |
|
| 996 | + * @return int|bool Subscription id or false if the subscription is cancelled. |
|
| 997 | + */ |
|
| 998 | + public function complete() { |
|
| 999 | + |
|
| 1000 | + // Only mark a subscription as complete if it's not already cancelled. |
|
| 1001 | + if ( $this->has_status( 'cancelled' ) ) { |
|
| 1002 | + return false; |
|
| 1003 | + } |
|
| 1004 | + |
|
| 1005 | + $this->set_status( 'completed' ); |
|
| 1006 | + return $this->save(); |
|
| 1007 | + |
|
| 1008 | + } |
|
| 1009 | + |
|
| 1010 | + /** |
|
| 1011 | + * Marks a subscription as expired |
|
| 1012 | + * |
|
| 1013 | + * @since 1.0.0 |
|
| 1014 | + * @param bool $check_expiration |
|
| 1015 | + * @return int|bool Subscription id or false if $check_expiration is true and expiration date is in the future. |
|
| 1016 | + */ |
|
| 1017 | + public function expire( $check_expiration = false ) { |
|
| 1018 | + |
|
| 1019 | + if ( $check_expiration && $this->get_expiration_time() > current_time( 'timestamp' ) ) { |
|
| 1020 | + // Do not mark as expired since real expiration date is in the future |
|
| 1021 | + return false; |
|
| 1022 | + } |
|
| 1023 | + |
|
| 1024 | + $this->set_status( 'expired' ); |
|
| 1025 | + return $this->save(); |
|
| 1026 | + |
|
| 1027 | + } |
|
| 1028 | + |
|
| 1029 | + /** |
|
| 1030 | + * Marks a subscription as failing |
|
| 1031 | + * |
|
| 1032 | + * @since 2.4.2 |
|
| 1033 | + * @return int Subscription id. |
|
| 1034 | + */ |
|
| 1035 | + public function failing() { |
|
| 1036 | + $this->set_status( 'failing' ); |
|
| 1037 | + return $this->save(); |
|
| 1038 | + } |
|
| 1039 | 1039 | |
| 1040 | 1040 | /** |
| 1041 | 1041 | * Marks a subscription as cancelled |
@@ -1044,19 +1044,19 @@ discard block |
||
| 1044 | 1044 | * @return int Subscription id. |
| 1045 | 1045 | */ |
| 1046 | 1046 | public function cancel() { |
| 1047 | - $this->set_status( 'cancelled' ); |
|
| 1048 | - return $this->save(); |
|
| 1047 | + $this->set_status( 'cancelled' ); |
|
| 1048 | + return $this->save(); |
|
| 1049 | 1049 | } |
| 1050 | 1050 | |
| 1051 | - /** |
|
| 1052 | - * Determines if a subscription can be cancelled both locally and with a payment processor. |
|
| 1053 | - * |
|
| 1054 | - * @since 1.0.0 |
|
| 1055 | - * @return bool |
|
| 1056 | - */ |
|
| 1057 | - public function can_cancel() { |
|
| 1058 | - return apply_filters( 'wpinv_subscription_can_cancel', $this->has_status( $this->get_cancellable_statuses() ), $this ); |
|
| 1059 | - } |
|
| 1051 | + /** |
|
| 1052 | + * Determines if a subscription can be cancelled both locally and with a payment processor. |
|
| 1053 | + * |
|
| 1054 | + * @since 1.0.0 |
|
| 1055 | + * @return bool |
|
| 1056 | + */ |
|
| 1057 | + public function can_cancel() { |
|
| 1058 | + return apply_filters( 'wpinv_subscription_can_cancel', $this->has_status( $this->get_cancellable_statuses() ), $this ); |
|
| 1059 | + } |
|
| 1060 | 1060 | |
| 1061 | 1061 | /** |
| 1062 | 1062 | * Returns an array of subscription statuses that can be cancelled |
@@ -1069,96 +1069,96 @@ discard block |
||
| 1069 | 1069 | return apply_filters( 'wpinv_recurring_cancellable_statuses', array( 'active', 'trialling', 'failing' ) ); |
| 1070 | 1070 | } |
| 1071 | 1071 | |
| 1072 | - /** |
|
| 1073 | - * Retrieves the URL to cancel subscription |
|
| 1074 | - * |
|
| 1075 | - * @since 1.0.0 |
|
| 1076 | - * @return string |
|
| 1077 | - */ |
|
| 1078 | - public function get_cancel_url() { |
|
| 1079 | - $url = getpaid_get_authenticated_action_url( 'subscription_cancel', $this->get_view_url() ); |
|
| 1080 | - return apply_filters( 'wpinv_subscription_cancel_url', $url, $this ); |
|
| 1081 | - } |
|
| 1082 | - |
|
| 1083 | - /** |
|
| 1084 | - * Retrieves the URL to view a subscription |
|
| 1085 | - * |
|
| 1086 | - * @since 1.0.19 |
|
| 1087 | - * @return string |
|
| 1088 | - */ |
|
| 1089 | - public function get_view_url() { |
|
| 1090 | - |
|
| 1091 | - $url = getpaid_get_tab_url( 'gp-subscriptions', get_permalink( (int) wpinv_get_option( 'invoice_subscription_page' ) ) ); |
|
| 1092 | - $url = add_query_arg( 'subscription', $this->get_id(), $url ); |
|
| 1093 | - |
|
| 1094 | - return apply_filters( 'getpaid_get_subscription_view_url', $url, $this ); |
|
| 1095 | - } |
|
| 1096 | - |
|
| 1097 | - /** |
|
| 1098 | - * Determines if subscription can be manually renewed |
|
| 1099 | - * |
|
| 1100 | - * This method is filtered by payment gateways in order to return true on subscriptions |
|
| 1101 | - * that can be renewed manually |
|
| 1102 | - * |
|
| 1103 | - * @since 2.5 |
|
| 1104 | - * @return bool |
|
| 1105 | - */ |
|
| 1106 | - public function can_renew() { |
|
| 1107 | - return apply_filters( 'wpinv_subscription_can_renew', true, $this ); |
|
| 1108 | - } |
|
| 1109 | - |
|
| 1110 | - /** |
|
| 1111 | - * Retrieves the URL to renew a subscription |
|
| 1112 | - * |
|
| 1113 | - * @since 2.5 |
|
| 1114 | - * @return string |
|
| 1115 | - */ |
|
| 1116 | - public function get_renew_url() { |
|
| 1117 | - $url = wp_nonce_url( add_query_arg( array( 'getpaid-action' => 'renew_subscription', 'sub_id' => $this->get_id ) ), 'getpaid-nonce' ); |
|
| 1118 | - return apply_filters( 'wpinv_subscription_renew_url', $url, $this ); |
|
| 1119 | - } |
|
| 1120 | - |
|
| 1121 | - /** |
|
| 1122 | - * Determines if subscription can have their payment method updated |
|
| 1123 | - * |
|
| 1124 | - * @since 1.0.0 |
|
| 1125 | - * @return bool |
|
| 1126 | - */ |
|
| 1127 | - public function can_update() { |
|
| 1128 | - return apply_filters( 'wpinv_subscription_can_update', false, $this ); |
|
| 1129 | - } |
|
| 1130 | - |
|
| 1131 | - /** |
|
| 1132 | - * Retrieves the URL to update subscription |
|
| 1133 | - * |
|
| 1134 | - * @since 1.0.0 |
|
| 1135 | - * @return string |
|
| 1136 | - */ |
|
| 1137 | - public function get_update_url() { |
|
| 1138 | - $url = add_query_arg( array( 'action' => 'update', 'subscription_id' => $this->get_id() ) ); |
|
| 1139 | - return apply_filters( 'wpinv_subscription_update_url', $url, $this ); |
|
| 1140 | - } |
|
| 1141 | - |
|
| 1142 | - /** |
|
| 1143 | - * Retrieves the subscription status label |
|
| 1144 | - * |
|
| 1145 | - * @since 1.0.0 |
|
| 1146 | - * @return string |
|
| 1147 | - */ |
|
| 1148 | - public function get_status_label() { |
|
| 1149 | - return getpaid_get_subscription_status_label( $this->get_status() ); |
|
| 1150 | - } |
|
| 1151 | - |
|
| 1152 | - /** |
|
| 1153 | - * Retrieves the subscription status class |
|
| 1154 | - * |
|
| 1155 | - * @since 1.0.19 |
|
| 1156 | - * @return string |
|
| 1157 | - */ |
|
| 1158 | - public function get_status_class() { |
|
| 1159 | - $statuses = getpaid_get_subscription_status_classes(); |
|
| 1160 | - return isset( $statuses[ $this->get_status() ] ) ? $statuses[ $this->get_status() ] : 'badge-dark'; |
|
| 1161 | - } |
|
| 1072 | + /** |
|
| 1073 | + * Retrieves the URL to cancel subscription |
|
| 1074 | + * |
|
| 1075 | + * @since 1.0.0 |
|
| 1076 | + * @return string |
|
| 1077 | + */ |
|
| 1078 | + public function get_cancel_url() { |
|
| 1079 | + $url = getpaid_get_authenticated_action_url( 'subscription_cancel', $this->get_view_url() ); |
|
| 1080 | + return apply_filters( 'wpinv_subscription_cancel_url', $url, $this ); |
|
| 1081 | + } |
|
| 1082 | + |
|
| 1083 | + /** |
|
| 1084 | + * Retrieves the URL to view a subscription |
|
| 1085 | + * |
|
| 1086 | + * @since 1.0.19 |
|
| 1087 | + * @return string |
|
| 1088 | + */ |
|
| 1089 | + public function get_view_url() { |
|
| 1090 | + |
|
| 1091 | + $url = getpaid_get_tab_url( 'gp-subscriptions', get_permalink( (int) wpinv_get_option( 'invoice_subscription_page' ) ) ); |
|
| 1092 | + $url = add_query_arg( 'subscription', $this->get_id(), $url ); |
|
| 1093 | + |
|
| 1094 | + return apply_filters( 'getpaid_get_subscription_view_url', $url, $this ); |
|
| 1095 | + } |
|
| 1096 | + |
|
| 1097 | + /** |
|
| 1098 | + * Determines if subscription can be manually renewed |
|
| 1099 | + * |
|
| 1100 | + * This method is filtered by payment gateways in order to return true on subscriptions |
|
| 1101 | + * that can be renewed manually |
|
| 1102 | + * |
|
| 1103 | + * @since 2.5 |
|
| 1104 | + * @return bool |
|
| 1105 | + */ |
|
| 1106 | + public function can_renew() { |
|
| 1107 | + return apply_filters( 'wpinv_subscription_can_renew', true, $this ); |
|
| 1108 | + } |
|
| 1109 | + |
|
| 1110 | + /** |
|
| 1111 | + * Retrieves the URL to renew a subscription |
|
| 1112 | + * |
|
| 1113 | + * @since 2.5 |
|
| 1114 | + * @return string |
|
| 1115 | + */ |
|
| 1116 | + public function get_renew_url() { |
|
| 1117 | + $url = wp_nonce_url( add_query_arg( array( 'getpaid-action' => 'renew_subscription', 'sub_id' => $this->get_id ) ), 'getpaid-nonce' ); |
|
| 1118 | + return apply_filters( 'wpinv_subscription_renew_url', $url, $this ); |
|
| 1119 | + } |
|
| 1120 | + |
|
| 1121 | + /** |
|
| 1122 | + * Determines if subscription can have their payment method updated |
|
| 1123 | + * |
|
| 1124 | + * @since 1.0.0 |
|
| 1125 | + * @return bool |
|
| 1126 | + */ |
|
| 1127 | + public function can_update() { |
|
| 1128 | + return apply_filters( 'wpinv_subscription_can_update', false, $this ); |
|
| 1129 | + } |
|
| 1130 | + |
|
| 1131 | + /** |
|
| 1132 | + * Retrieves the URL to update subscription |
|
| 1133 | + * |
|
| 1134 | + * @since 1.0.0 |
|
| 1135 | + * @return string |
|
| 1136 | + */ |
|
| 1137 | + public function get_update_url() { |
|
| 1138 | + $url = add_query_arg( array( 'action' => 'update', 'subscription_id' => $this->get_id() ) ); |
|
| 1139 | + return apply_filters( 'wpinv_subscription_update_url', $url, $this ); |
|
| 1140 | + } |
|
| 1141 | + |
|
| 1142 | + /** |
|
| 1143 | + * Retrieves the subscription status label |
|
| 1144 | + * |
|
| 1145 | + * @since 1.0.0 |
|
| 1146 | + * @return string |
|
| 1147 | + */ |
|
| 1148 | + public function get_status_label() { |
|
| 1149 | + return getpaid_get_subscription_status_label( $this->get_status() ); |
|
| 1150 | + } |
|
| 1151 | + |
|
| 1152 | + /** |
|
| 1153 | + * Retrieves the subscription status class |
|
| 1154 | + * |
|
| 1155 | + * @since 1.0.19 |
|
| 1156 | + * @return string |
|
| 1157 | + */ |
|
| 1158 | + public function get_status_class() { |
|
| 1159 | + $statuses = getpaid_get_subscription_status_classes(); |
|
| 1160 | + return isset( $statuses[ $this->get_status() ] ) ? $statuses[ $this->get_status() ] : 'badge-dark'; |
|
| 1161 | + } |
|
| 1162 | 1162 | |
| 1163 | 1163 | /** |
| 1164 | 1164 | * Retrieves the subscription status label |
@@ -1168,11 +1168,11 @@ discard block |
||
| 1168 | 1168 | */ |
| 1169 | 1169 | public function get_status_label_html() { |
| 1170 | 1170 | |
| 1171 | - $status_label = sanitize_text_field( $this->get_status_label() ); |
|
| 1172 | - $class = esc_attr( $this->get_status_class() ); |
|
| 1173 | - $status = sanitize_html_class( $this->get_status() ); |
|
| 1171 | + $status_label = sanitize_text_field( $this->get_status_label() ); |
|
| 1172 | + $class = esc_attr( $this->get_status_class() ); |
|
| 1173 | + $status = sanitize_html_class( $this->get_status() ); |
|
| 1174 | 1174 | |
| 1175 | - return "<span class='bsui'><span class='badge $class $status'>$status_label</span></span>"; |
|
| 1175 | + return "<span class='bsui'><span class='badge $class $status'>$status_label</span></span>"; |
|
| 1176 | 1176 | } |
| 1177 | 1177 | |
| 1178 | 1178 | /** |
@@ -1183,75 +1183,75 @@ discard block |
||
| 1183 | 1183 | * @return bool |
| 1184 | 1184 | */ |
| 1185 | 1185 | public function payment_exists( $txn_id = '' ) { |
| 1186 | - $invoice_id = WPInv_Invoice::get_invoice_id_by_field( $txn_id, 'transaction_id' ); |
|
| 1186 | + $invoice_id = WPInv_Invoice::get_invoice_id_by_field( $txn_id, 'transaction_id' ); |
|
| 1187 | 1187 | return ! empty( $invoice_id ); |
| 1188 | - } |
|
| 1189 | - |
|
| 1190 | - /** |
|
| 1191 | - * Handle the status transition. |
|
| 1192 | - */ |
|
| 1193 | - protected function status_transition() { |
|
| 1194 | - $status_transition = $this->status_transition; |
|
| 1195 | - |
|
| 1196 | - // Reset status transition variable. |
|
| 1197 | - $this->status_transition = false; |
|
| 1198 | - |
|
| 1199 | - if ( $status_transition ) { |
|
| 1200 | - try { |
|
| 1201 | - |
|
| 1202 | - // Fire a hook for the status change. |
|
| 1203 | - do_action( 'wpinv_subscription_' . $status_transition['to'], $this->get_id(), $this, $status_transition ); |
|
| 1204 | - do_action( 'getpaid_subscription_' . $status_transition['to'], $this, $status_transition ); |
|
| 1205 | - |
|
| 1206 | - if ( ! empty( $status_transition['from'] ) ) { |
|
| 1207 | - |
|
| 1208 | - /* translators: 1: old subscription status 2: new subscription status */ |
|
| 1209 | - $transition_note = sprintf( __( 'Subscription status changed from %1$s to %2$s.', 'invoicing' ), getpaid_get_subscription_status_label( $status_transition['from'] ), getpaid_get_subscription_status_label( $status_transition['to'] ) ); |
|
| 1210 | - |
|
| 1211 | - // Note the transition occurred. |
|
| 1212 | - $this->get_parent_payment()->add_note( $transition_note, false, false, true ); |
|
| 1213 | - |
|
| 1214 | - // Fire another hook. |
|
| 1215 | - do_action( 'getpaid_subscription_status_' . $status_transition['from'] . '_to_' . $status_transition['to'], $this->get_id(), $this ); |
|
| 1216 | - do_action( 'getpaid_subscription_status_changed', $this, $status_transition['from'], $status_transition['to'] ); |
|
| 1217 | - |
|
| 1218 | - } else { |
|
| 1219 | - /* translators: %s: new invoice status */ |
|
| 1220 | - $transition_note = sprintf( __( 'Subscription status set to %s.', 'invoicing' ), getpaid_get_subscription_status_label( $status_transition['to'] ) ); |
|
| 1221 | - |
|
| 1222 | - // Note the transition occurred. |
|
| 1223 | - $this->get_parent_payment()->add_note( $transition_note, false, false, true ); |
|
| 1224 | - |
|
| 1225 | - } |
|
| 1226 | - } catch ( Exception $e ) { |
|
| 1227 | - $this->get_parent_payment()->add_note( __( 'Error during subscription status transition.', 'invoicing' ) . ' ' . $e->getMessage() ); |
|
| 1228 | - } |
|
| 1229 | - } |
|
| 1230 | - |
|
| 1231 | - } |
|
| 1232 | - |
|
| 1233 | - /** |
|
| 1234 | - * Save data to the database. |
|
| 1235 | - * |
|
| 1236 | - * @since 1.0.19 |
|
| 1237 | - * @return int subscription ID |
|
| 1238 | - */ |
|
| 1239 | - public function save() { |
|
| 1240 | - parent::save(); |
|
| 1241 | - $this->status_transition(); |
|
| 1242 | - return $this->get_id(); |
|
| 1243 | - } |
|
| 1244 | - |
|
| 1245 | - /** |
|
| 1246 | - * Activates a subscription. |
|
| 1247 | - * |
|
| 1248 | - * @since 1.0.19 |
|
| 1249 | - * @return int subscription ID |
|
| 1250 | - */ |
|
| 1251 | - public function activate() { |
|
| 1252 | - $status = 'trialling' == $this->get_status() ? 'trialling' : 'active'; |
|
| 1253 | - $this->set_status( $status ); |
|
| 1254 | - return $this->save(); |
|
| 1255 | - } |
|
| 1188 | + } |
|
| 1189 | + |
|
| 1190 | + /** |
|
| 1191 | + * Handle the status transition. |
|
| 1192 | + */ |
|
| 1193 | + protected function status_transition() { |
|
| 1194 | + $status_transition = $this->status_transition; |
|
| 1195 | + |
|
| 1196 | + // Reset status transition variable. |
|
| 1197 | + $this->status_transition = false; |
|
| 1198 | + |
|
| 1199 | + if ( $status_transition ) { |
|
| 1200 | + try { |
|
| 1201 | + |
|
| 1202 | + // Fire a hook for the status change. |
|
| 1203 | + do_action( 'wpinv_subscription_' . $status_transition['to'], $this->get_id(), $this, $status_transition ); |
|
| 1204 | + do_action( 'getpaid_subscription_' . $status_transition['to'], $this, $status_transition ); |
|
| 1205 | + |
|
| 1206 | + if ( ! empty( $status_transition['from'] ) ) { |
|
| 1207 | + |
|
| 1208 | + /* translators: 1: old subscription status 2: new subscription status */ |
|
| 1209 | + $transition_note = sprintf( __( 'Subscription status changed from %1$s to %2$s.', 'invoicing' ), getpaid_get_subscription_status_label( $status_transition['from'] ), getpaid_get_subscription_status_label( $status_transition['to'] ) ); |
|
| 1210 | + |
|
| 1211 | + // Note the transition occurred. |
|
| 1212 | + $this->get_parent_payment()->add_note( $transition_note, false, false, true ); |
|
| 1213 | + |
|
| 1214 | + // Fire another hook. |
|
| 1215 | + do_action( 'getpaid_subscription_status_' . $status_transition['from'] . '_to_' . $status_transition['to'], $this->get_id(), $this ); |
|
| 1216 | + do_action( 'getpaid_subscription_status_changed', $this, $status_transition['from'], $status_transition['to'] ); |
|
| 1217 | + |
|
| 1218 | + } else { |
|
| 1219 | + /* translators: %s: new invoice status */ |
|
| 1220 | + $transition_note = sprintf( __( 'Subscription status set to %s.', 'invoicing' ), getpaid_get_subscription_status_label( $status_transition['to'] ) ); |
|
| 1221 | + |
|
| 1222 | + // Note the transition occurred. |
|
| 1223 | + $this->get_parent_payment()->add_note( $transition_note, false, false, true ); |
|
| 1224 | + |
|
| 1225 | + } |
|
| 1226 | + } catch ( Exception $e ) { |
|
| 1227 | + $this->get_parent_payment()->add_note( __( 'Error during subscription status transition.', 'invoicing' ) . ' ' . $e->getMessage() ); |
|
| 1228 | + } |
|
| 1229 | + } |
|
| 1230 | + |
|
| 1231 | + } |
|
| 1232 | + |
|
| 1233 | + /** |
|
| 1234 | + * Save data to the database. |
|
| 1235 | + * |
|
| 1236 | + * @since 1.0.19 |
|
| 1237 | + * @return int subscription ID |
|
| 1238 | + */ |
|
| 1239 | + public function save() { |
|
| 1240 | + parent::save(); |
|
| 1241 | + $this->status_transition(); |
|
| 1242 | + return $this->get_id(); |
|
| 1243 | + } |
|
| 1244 | + |
|
| 1245 | + /** |
|
| 1246 | + * Activates a subscription. |
|
| 1247 | + * |
|
| 1248 | + * @since 1.0.19 |
|
| 1249 | + * @return int subscription ID |
|
| 1250 | + */ |
|
| 1251 | + public function activate() { |
|
| 1252 | + $status = 'trialling' == $this->get_status() ? 'trialling' : 'active'; |
|
| 1253 | + $this->set_status( $status ); |
|
| 1254 | + return $this->save(); |
|
| 1255 | + } |
|
| 1256 | 1256 | |
| 1257 | 1257 | } |
@@ -14,7 +14,7 @@ discard block |
||
| 14 | 14 | */ |
| 15 | 15 | function wpinv_subscriptions_page() { |
| 16 | 16 | |
| 17 | - ?> |
|
| 17 | + ?> |
|
| 18 | 18 | |
| 19 | 19 | <div class="wrap"> |
| 20 | 20 | <h1><?php echo esc_html( get_admin_page_title() ); ?></h1> |
@@ -22,27 +22,27 @@ discard block |
||
| 22 | 22 | |
| 23 | 23 | <?php |
| 24 | 24 | |
| 25 | - // Verify user permissions. |
|
| 26 | - if ( ! wpinv_current_user_can_manage_invoicing() ) { |
|
| 25 | + // Verify user permissions. |
|
| 26 | + if ( ! wpinv_current_user_can_manage_invoicing() ) { |
|
| 27 | 27 | |
| 28 | - echo aui()->alert( |
|
| 29 | - array( |
|
| 30 | - 'type' => 'danger', |
|
| 31 | - 'content' => __( 'You are not permitted to view this page.', 'invoicing' ), |
|
| 32 | - ) |
|
| 33 | - ); |
|
| 28 | + echo aui()->alert( |
|
| 29 | + array( |
|
| 30 | + 'type' => 'danger', |
|
| 31 | + 'content' => __( 'You are not permitted to view this page.', 'invoicing' ), |
|
| 32 | + ) |
|
| 33 | + ); |
|
| 34 | 34 | |
| 35 | - } else if ( ! empty( $_GET['id'] ) && is_numeric( $_GET['id'] ) ) { |
|
| 35 | + } else if ( ! empty( $_GET['id'] ) && is_numeric( $_GET['id'] ) ) { |
|
| 36 | 36 | |
| 37 | - // Display a single subscription. |
|
| 38 | - wpinv_recurring_subscription_details(); |
|
| 39 | - } else { |
|
| 37 | + // Display a single subscription. |
|
| 38 | + wpinv_recurring_subscription_details(); |
|
| 39 | + } else { |
|
| 40 | 40 | |
| 41 | - // Display a list of available subscriptions. |
|
| 42 | - getpaid_print_subscriptions_list(); |
|
| 43 | - } |
|
| 41 | + // Display a list of available subscriptions. |
|
| 42 | + getpaid_print_subscriptions_list(); |
|
| 43 | + } |
|
| 44 | 44 | |
| 45 | - ?> |
|
| 45 | + ?> |
|
| 46 | 46 | |
| 47 | 47 | </div> |
| 48 | 48 | </div> |
@@ -59,10 +59,10 @@ discard block |
||
| 59 | 59 | */ |
| 60 | 60 | function getpaid_print_subscriptions_list() { |
| 61 | 61 | |
| 62 | - $subscribers_table = new WPInv_Subscriptions_List_Table(); |
|
| 63 | - $subscribers_table->prepare_items(); |
|
| 62 | + $subscribers_table = new WPInv_Subscriptions_List_Table(); |
|
| 63 | + $subscribers_table->prepare_items(); |
|
| 64 | 64 | |
| 65 | - ?> |
|
| 65 | + ?> |
|
| 66 | 66 | <form id="subscribers-filter" class="bsui" method="get"> |
| 67 | 67 | <input type="hidden" name="page" value="wpinv-subscriptions" /> |
| 68 | 68 | <?php $subscribers_table->views(); ?> |
@@ -80,41 +80,41 @@ discard block |
||
| 80 | 80 | */ |
| 81 | 81 | function wpinv_recurring_subscription_details() { |
| 82 | 82 | |
| 83 | - // Fetch the subscription. |
|
| 84 | - $sub = new WPInv_Subscription( (int) $_GET['id'] ); |
|
| 85 | - if ( ! $sub->exists() ) { |
|
| 83 | + // Fetch the subscription. |
|
| 84 | + $sub = new WPInv_Subscription( (int) $_GET['id'] ); |
|
| 85 | + if ( ! $sub->exists() ) { |
|
| 86 | 86 | |
| 87 | - echo aui()->alert( |
|
| 88 | - array( |
|
| 89 | - 'type' => 'danger', |
|
| 90 | - 'content' => __( 'Subscription not found.', 'invoicing' ), |
|
| 91 | - ) |
|
| 92 | - ); |
|
| 87 | + echo aui()->alert( |
|
| 88 | + array( |
|
| 89 | + 'type' => 'danger', |
|
| 90 | + 'content' => __( 'Subscription not found.', 'invoicing' ), |
|
| 91 | + ) |
|
| 92 | + ); |
|
| 93 | 93 | |
| 94 | - return; |
|
| 95 | - } |
|
| 94 | + return; |
|
| 95 | + } |
|
| 96 | 96 | |
| 97 | - // Use metaboxes to display the subscription details. |
|
| 98 | - add_meta_box( 'getpaid_admin_subscription_details_metabox', __( 'Subscription Details', 'invoicing' ), 'getpaid_admin_subscription_details_metabox', get_current_screen(), 'normal', 'high' ); |
|
| 99 | - add_meta_box( 'getpaid_admin_subscription_update_metabox', __( 'Change Status', 'invoicing' ), 'getpaid_admin_subscription_update_metabox', get_current_screen(), 'side' ); |
|
| 97 | + // Use metaboxes to display the subscription details. |
|
| 98 | + add_meta_box( 'getpaid_admin_subscription_details_metabox', __( 'Subscription Details', 'invoicing' ), 'getpaid_admin_subscription_details_metabox', get_current_screen(), 'normal', 'high' ); |
|
| 99 | + add_meta_box( 'getpaid_admin_subscription_update_metabox', __( 'Change Status', 'invoicing' ), 'getpaid_admin_subscription_update_metabox', get_current_screen(), 'side' ); |
|
| 100 | 100 | |
| 101 | - $subscription_id = $sub->get_id(); |
|
| 102 | - $subscription_groups = getpaid_get_invoice_subscription_groups( $sub->get_parent_invoice_id() ); |
|
| 103 | - $subscription_group = wp_list_filter( $subscription_groups, compact( 'subscription_id' ) ); |
|
| 101 | + $subscription_id = $sub->get_id(); |
|
| 102 | + $subscription_groups = getpaid_get_invoice_subscription_groups( $sub->get_parent_invoice_id() ); |
|
| 103 | + $subscription_group = wp_list_filter( $subscription_groups, compact( 'subscription_id' ) ); |
|
| 104 | 104 | |
| 105 | - if ( 1 < count( $subscription_groups ) ) { |
|
| 106 | - add_meta_box( 'getpaid_admin_subscription_related_subscriptions_metabox', __( 'Related Subscriptions', 'invoicing' ), 'getpaid_admin_subscription_related_subscriptions_metabox', get_current_screen(), 'advanced' ); |
|
| 107 | - } |
|
| 105 | + if ( 1 < count( $subscription_groups ) ) { |
|
| 106 | + add_meta_box( 'getpaid_admin_subscription_related_subscriptions_metabox', __( 'Related Subscriptions', 'invoicing' ), 'getpaid_admin_subscription_related_subscriptions_metabox', get_current_screen(), 'advanced' ); |
|
| 107 | + } |
|
| 108 | 108 | |
| 109 | - if ( ! empty( $subscription_group ) ) { |
|
| 110 | - add_meta_box( 'getpaid_admin_subscription_item_details_metabox', __( 'Subscription Items', 'invoicing' ), 'getpaid_admin_subscription_item_details_metabox', get_current_screen(), 'normal', 'low' ); |
|
| 111 | - } |
|
| 109 | + if ( ! empty( $subscription_group ) ) { |
|
| 110 | + add_meta_box( 'getpaid_admin_subscription_item_details_metabox', __( 'Subscription Items', 'invoicing' ), 'getpaid_admin_subscription_item_details_metabox', get_current_screen(), 'normal', 'low' ); |
|
| 111 | + } |
|
| 112 | 112 | |
| 113 | - add_meta_box( 'getpaid_admin_subscription_invoice_details_metabox', __( 'Related Invoices', 'invoicing' ), 'getpaid_admin_subscription_invoice_details_metabox', get_current_screen(), 'advanced' ); |
|
| 113 | + add_meta_box( 'getpaid_admin_subscription_invoice_details_metabox', __( 'Related Invoices', 'invoicing' ), 'getpaid_admin_subscription_invoice_details_metabox', get_current_screen(), 'advanced' ); |
|
| 114 | 114 | |
| 115 | - do_action( 'getpaid_admin_single_subscription_register_metabox', $sub ); |
|
| 115 | + do_action( 'getpaid_admin_single_subscription_register_metabox', $sub ); |
|
| 116 | 116 | |
| 117 | - ?> |
|
| 117 | + ?> |
|
| 118 | 118 | |
| 119 | 119 | <form method="post" action="<?php echo admin_url( 'admin.php?page=wpinv-subscriptions&id=' . absint( $sub->get_id() ) ); ?>"> |
| 120 | 120 | |
@@ -154,45 +154,45 @@ discard block |
||
| 154 | 154 | */ |
| 155 | 155 | function getpaid_admin_subscription_details_metabox( $sub ) { |
| 156 | 156 | |
| 157 | - // Subscription items. |
|
| 158 | - $subscription_group = getpaid_get_invoice_subscription_group( $sub->get_parent_invoice_id(), $sub->get_id() ); |
|
| 159 | - $items_count = empty( $subscription_group ) ? 1 : count( $subscription_group['items'] ); |
|
| 160 | - |
|
| 161 | - // Prepare subscription detail columns. |
|
| 162 | - $fields = apply_filters( |
|
| 163 | - 'getpaid_subscription_admin_page_fields', |
|
| 164 | - array( |
|
| 165 | - 'subscription' => __( 'Subscription', 'invoicing' ), |
|
| 166 | - 'customer' => __( 'Customer', 'invoicing' ), |
|
| 167 | - 'amount' => __( 'Amount', 'invoicing' ), |
|
| 168 | - 'start_date' => __( 'Start Date', 'invoicing' ), |
|
| 169 | - 'renews_on' => __( 'Next Payment', 'invoicing' ), |
|
| 170 | - 'renewals' => __( 'Payments', 'invoicing' ), |
|
| 171 | - 'item' => _n( 'Item', 'Items', $items_count, 'invoicing' ), |
|
| 172 | - 'gateway' => __( 'Payment Method', 'invoicing' ), |
|
| 173 | - 'profile_id' => __( 'Profile ID', 'invoicing' ), |
|
| 174 | - 'status' => __( 'Status', 'invoicing' ), |
|
| 175 | - ) |
|
| 176 | - ); |
|
| 177 | - |
|
| 178 | - if ( ! $sub->is_active() ) { |
|
| 179 | - |
|
| 180 | - if ( isset( $fields['renews_on'] ) ) { |
|
| 181 | - unset( $fields['renews_on'] ); |
|
| 182 | - } |
|
| 183 | - |
|
| 184 | - if ( isset( $fields['gateway'] ) ) { |
|
| 185 | - unset( $fields['gateway'] ); |
|
| 186 | - } |
|
| 187 | - |
|
| 188 | - } |
|
| 189 | - |
|
| 190 | - $profile_id = $sub->get_profile_id(); |
|
| 191 | - if ( empty( $profile_id ) && isset( $fields['profile_id'] ) ) { |
|
| 192 | - unset( $fields['profile_id'] ); |
|
| 193 | - } |
|
| 194 | - |
|
| 195 | - ?> |
|
| 157 | + // Subscription items. |
|
| 158 | + $subscription_group = getpaid_get_invoice_subscription_group( $sub->get_parent_invoice_id(), $sub->get_id() ); |
|
| 159 | + $items_count = empty( $subscription_group ) ? 1 : count( $subscription_group['items'] ); |
|
| 160 | + |
|
| 161 | + // Prepare subscription detail columns. |
|
| 162 | + $fields = apply_filters( |
|
| 163 | + 'getpaid_subscription_admin_page_fields', |
|
| 164 | + array( |
|
| 165 | + 'subscription' => __( 'Subscription', 'invoicing' ), |
|
| 166 | + 'customer' => __( 'Customer', 'invoicing' ), |
|
| 167 | + 'amount' => __( 'Amount', 'invoicing' ), |
|
| 168 | + 'start_date' => __( 'Start Date', 'invoicing' ), |
|
| 169 | + 'renews_on' => __( 'Next Payment', 'invoicing' ), |
|
| 170 | + 'renewals' => __( 'Payments', 'invoicing' ), |
|
| 171 | + 'item' => _n( 'Item', 'Items', $items_count, 'invoicing' ), |
|
| 172 | + 'gateway' => __( 'Payment Method', 'invoicing' ), |
|
| 173 | + 'profile_id' => __( 'Profile ID', 'invoicing' ), |
|
| 174 | + 'status' => __( 'Status', 'invoicing' ), |
|
| 175 | + ) |
|
| 176 | + ); |
|
| 177 | + |
|
| 178 | + if ( ! $sub->is_active() ) { |
|
| 179 | + |
|
| 180 | + if ( isset( $fields['renews_on'] ) ) { |
|
| 181 | + unset( $fields['renews_on'] ); |
|
| 182 | + } |
|
| 183 | + |
|
| 184 | + if ( isset( $fields['gateway'] ) ) { |
|
| 185 | + unset( $fields['gateway'] ); |
|
| 186 | + } |
|
| 187 | + |
|
| 188 | + } |
|
| 189 | + |
|
| 190 | + $profile_id = $sub->get_profile_id(); |
|
| 191 | + if ( empty( $profile_id ) && isset( $fields['profile_id'] ) ) { |
|
| 192 | + unset( $fields['profile_id'] ); |
|
| 193 | + } |
|
| 194 | + |
|
| 195 | + ?> |
|
| 196 | 196 | |
| 197 | 197 | <table class="table table-borderless" style="font-size: 14px;"> |
| 198 | 198 | <tbody> |
@@ -226,20 +226,20 @@ discard block |
||
| 226 | 226 | */ |
| 227 | 227 | function getpaid_admin_subscription_metabox_display_customer( $subscription ) { |
| 228 | 228 | |
| 229 | - $username = __( '(Missing User)', 'invoicing' ); |
|
| 229 | + $username = __( '(Missing User)', 'invoicing' ); |
|
| 230 | 230 | |
| 231 | - $user = get_userdata( $subscription->get_customer_id() ); |
|
| 232 | - if ( $user ) { |
|
| 231 | + $user = get_userdata( $subscription->get_customer_id() ); |
|
| 232 | + if ( $user ) { |
|
| 233 | 233 | |
| 234 | - $username = sprintf( |
|
| 235 | - '<a href="user-edit.php?user_id=%s">%s</a>', |
|
| 236 | - absint( $user->ID ), |
|
| 237 | - ! empty( $user->display_name ) ? esc_html( $user->display_name ) : sanitize_email( $user->user_email ) |
|
| 238 | - ); |
|
| 234 | + $username = sprintf( |
|
| 235 | + '<a href="user-edit.php?user_id=%s">%s</a>', |
|
| 236 | + absint( $user->ID ), |
|
| 237 | + ! empty( $user->display_name ) ? esc_html( $user->display_name ) : sanitize_email( $user->user_email ) |
|
| 238 | + ); |
|
| 239 | 239 | |
| 240 | - } |
|
| 240 | + } |
|
| 241 | 241 | |
| 242 | - echo $username; |
|
| 242 | + echo $username; |
|
| 243 | 243 | } |
| 244 | 244 | add_action( 'getpaid_subscription_admin_display_customer', 'getpaid_admin_subscription_metabox_display_customer' ); |
| 245 | 245 | |
@@ -249,8 +249,8 @@ discard block |
||
| 249 | 249 | * @param WPInv_Subscription $subscription |
| 250 | 250 | */ |
| 251 | 251 | function getpaid_admin_subscription_metabox_display_amount( $subscription ) { |
| 252 | - $amount = wp_kses_post( getpaid_get_formatted_subscription_amount( $subscription ) ); |
|
| 253 | - echo "<span>$amount</span>"; |
|
| 252 | + $amount = wp_kses_post( getpaid_get_formatted_subscription_amount( $subscription ) ); |
|
| 253 | + echo "<span>$amount</span>"; |
|
| 254 | 254 | } |
| 255 | 255 | add_action( 'getpaid_subscription_admin_display_amount', 'getpaid_admin_subscription_metabox_display_amount' ); |
| 256 | 256 | |
@@ -260,7 +260,7 @@ discard block |
||
| 260 | 260 | * @param WPInv_Subscription $subscription |
| 261 | 261 | */ |
| 262 | 262 | function getpaid_admin_subscription_metabox_display_id( $subscription ) { |
| 263 | - echo '#' . absint( $subscription->get_id() ); |
|
| 263 | + echo '#' . absint( $subscription->get_id() ); |
|
| 264 | 264 | } |
| 265 | 265 | add_action( 'getpaid_subscription_admin_display_subscription', 'getpaid_admin_subscription_metabox_display_id' ); |
| 266 | 266 | |
@@ -270,7 +270,7 @@ discard block |
||
| 270 | 270 | * @param WPInv_Subscription $subscription |
| 271 | 271 | */ |
| 272 | 272 | function getpaid_admin_subscription_metabox_display_start_date( $subscription ) { |
| 273 | - echo getpaid_format_date_value( $subscription->get_date_created() ); |
|
| 273 | + echo getpaid_format_date_value( $subscription->get_date_created() ); |
|
| 274 | 274 | } |
| 275 | 275 | add_action( 'getpaid_subscription_admin_display_start_date', 'getpaid_admin_subscription_metabox_display_start_date' ); |
| 276 | 276 | |
@@ -280,7 +280,7 @@ discard block |
||
| 280 | 280 | * @param WPInv_Subscription $subscription |
| 281 | 281 | */ |
| 282 | 282 | function getpaid_admin_subscription_metabox_display_renews_on( $subscription ) { |
| 283 | - echo getpaid_format_date_value( $subscription->get_expiration() ); |
|
| 283 | + echo getpaid_format_date_value( $subscription->get_expiration() ); |
|
| 284 | 284 | } |
| 285 | 285 | add_action( 'getpaid_subscription_admin_display_renews_on', 'getpaid_admin_subscription_metabox_display_renews_on' ); |
| 286 | 286 | |
@@ -290,8 +290,8 @@ discard block |
||
| 290 | 290 | * @param WPInv_Subscription $subscription |
| 291 | 291 | */ |
| 292 | 292 | function getpaid_admin_subscription_metabox_display_renewals( $subscription ) { |
| 293 | - $max_bills = $subscription->get_bill_times(); |
|
| 294 | - echo $subscription->get_times_billed() . ' / ' . ( empty( $max_bills ) ? "∞" : $max_bills ); |
|
| 293 | + $max_bills = $subscription->get_bill_times(); |
|
| 294 | + echo $subscription->get_times_billed() . ' / ' . ( empty( $max_bills ) ? "∞" : $max_bills ); |
|
| 295 | 295 | } |
| 296 | 296 | add_action( 'getpaid_subscription_admin_display_renewals', 'getpaid_admin_subscription_metabox_display_renewals' ); |
| 297 | 297 | /** |
@@ -302,13 +302,13 @@ discard block |
||
| 302 | 302 | */ |
| 303 | 303 | function getpaid_admin_subscription_metabox_display_item( $subscription, $subscription_group = false ) { |
| 304 | 304 | |
| 305 | - if ( empty( $subscription_group ) ) { |
|
| 306 | - echo WPInv_Subscriptions_List_Table::generate_item_markup( $subscription->get_product_id() ); |
|
| 307 | - return; |
|
| 308 | - } |
|
| 305 | + if ( empty( $subscription_group ) ) { |
|
| 306 | + echo WPInv_Subscriptions_List_Table::generate_item_markup( $subscription->get_product_id() ); |
|
| 307 | + return; |
|
| 308 | + } |
|
| 309 | 309 | |
| 310 | - $markup = array_map( array( 'WPInv_Subscriptions_List_Table', 'generate_item_markup' ), array_keys( $subscription_group['items'] ) ); |
|
| 311 | - echo implode( ' | ', $markup ); |
|
| 310 | + $markup = array_map( array( 'WPInv_Subscriptions_List_Table', 'generate_item_markup' ), array_keys( $subscription_group['items'] ) ); |
|
| 311 | + echo implode( ' | ', $markup ); |
|
| 312 | 312 | |
| 313 | 313 | } |
| 314 | 314 | add_action( 'getpaid_subscription_admin_display_item', 'getpaid_admin_subscription_metabox_display_item', 10, 2 ); |
@@ -320,13 +320,13 @@ discard block |
||
| 320 | 320 | */ |
| 321 | 321 | function getpaid_admin_subscription_metabox_display_gateway( $subscription ) { |
| 322 | 322 | |
| 323 | - $gateway = $subscription->get_gateway(); |
|
| 323 | + $gateway = $subscription->get_gateway(); |
|
| 324 | 324 | |
| 325 | - if ( ! empty( $gateway ) ) { |
|
| 326 | - echo esc_html( wpinv_get_gateway_admin_label( $gateway ) ); |
|
| 327 | - } else { |
|
| 328 | - echo "—"; |
|
| 329 | - } |
|
| 325 | + if ( ! empty( $gateway ) ) { |
|
| 326 | + echo esc_html( wpinv_get_gateway_admin_label( $gateway ) ); |
|
| 327 | + } else { |
|
| 328 | + echo "—"; |
|
| 329 | + } |
|
| 330 | 330 | |
| 331 | 331 | } |
| 332 | 332 | add_action( 'getpaid_subscription_admin_display_gateway', 'getpaid_admin_subscription_metabox_display_gateway' ); |
@@ -337,7 +337,7 @@ discard block |
||
| 337 | 337 | * @param WPInv_Subscription $subscription |
| 338 | 338 | */ |
| 339 | 339 | function getpaid_admin_subscription_metabox_display_status( $subscription ) { |
| 340 | - echo $subscription->get_status_label_html(); |
|
| 340 | + echo $subscription->get_status_label_html(); |
|
| 341 | 341 | } |
| 342 | 342 | add_action( 'getpaid_subscription_admin_display_status', 'getpaid_admin_subscription_metabox_display_status' ); |
| 343 | 343 | |
@@ -348,29 +348,29 @@ discard block |
||
| 348 | 348 | */ |
| 349 | 349 | function getpaid_admin_subscription_metabox_display_profile_id( $subscription ) { |
| 350 | 350 | |
| 351 | - $profile_id = $subscription->get_profile_id(); |
|
| 352 | - |
|
| 353 | - $input = aui()->input( |
|
| 354 | - array( |
|
| 355 | - 'type' => 'text', |
|
| 356 | - 'id' => 'wpinv_subscription_profile_id', |
|
| 357 | - 'name' => 'wpinv_subscription_profile_id', |
|
| 358 | - 'label' => __( 'Profile Id', 'invoicing' ), |
|
| 359 | - 'label_type' => 'hidden', |
|
| 360 | - 'placeholder' => __( 'Profile Id', 'invoicing' ), |
|
| 361 | - 'value' => esc_attr( $profile_id ), |
|
| 362 | - 'input_group_right' => '', |
|
| 363 | - 'no_wrap' => true, |
|
| 364 | - ) |
|
| 365 | - ); |
|
| 366 | - |
|
| 367 | - echo str_ireplace( 'form-control', 'regular-text', $input ); |
|
| 368 | - |
|
| 369 | - $url = apply_filters( 'getpaid_remote_subscription_profile_url', '', $subscription ); |
|
| 370 | - if ( ! empty( $url ) ) { |
|
| 371 | - $url = esc_url_raw( $url ); |
|
| 372 | - echo ' <a href="' . $url . '" title="' . __( 'View in Gateway', 'invoicing' ) . '" target="_blank"><i class="fas fa-external-link-alt fa-xs fa-fw align-top"></i></a>'; |
|
| 373 | - } |
|
| 351 | + $profile_id = $subscription->get_profile_id(); |
|
| 352 | + |
|
| 353 | + $input = aui()->input( |
|
| 354 | + array( |
|
| 355 | + 'type' => 'text', |
|
| 356 | + 'id' => 'wpinv_subscription_profile_id', |
|
| 357 | + 'name' => 'wpinv_subscription_profile_id', |
|
| 358 | + 'label' => __( 'Profile Id', 'invoicing' ), |
|
| 359 | + 'label_type' => 'hidden', |
|
| 360 | + 'placeholder' => __( 'Profile Id', 'invoicing' ), |
|
| 361 | + 'value' => esc_attr( $profile_id ), |
|
| 362 | + 'input_group_right' => '', |
|
| 363 | + 'no_wrap' => true, |
|
| 364 | + ) |
|
| 365 | + ); |
|
| 366 | + |
|
| 367 | + echo str_ireplace( 'form-control', 'regular-text', $input ); |
|
| 368 | + |
|
| 369 | + $url = apply_filters( 'getpaid_remote_subscription_profile_url', '', $subscription ); |
|
| 370 | + if ( ! empty( $url ) ) { |
|
| 371 | + $url = esc_url_raw( $url ); |
|
| 372 | + echo ' <a href="' . $url . '" title="' . __( 'View in Gateway', 'invoicing' ) . '" target="_blank"><i class="fas fa-external-link-alt fa-xs fa-fw align-top"></i></a>'; |
|
| 373 | + } |
|
| 374 | 374 | |
| 375 | 375 | } |
| 376 | 376 | add_action( 'getpaid_subscription_admin_display_profile_id', 'getpaid_admin_subscription_metabox_display_profile_id' ); |
@@ -382,39 +382,39 @@ discard block |
||
| 382 | 382 | */ |
| 383 | 383 | function getpaid_admin_subscription_update_metabox( $subscription ) { |
| 384 | 384 | |
| 385 | - ?> |
|
| 385 | + ?> |
|
| 386 | 386 | <div class="mt-3"> |
| 387 | 387 | |
| 388 | 388 | <?php |
| 389 | - echo aui()->select( |
|
| 390 | - array( |
|
| 391 | - 'options' => getpaid_get_subscription_statuses(), |
|
| 392 | - 'name' => 'subscription_status', |
|
| 393 | - 'id' => 'subscription_status_update_select', |
|
| 394 | - 'required' => true, |
|
| 395 | - 'no_wrap' => false, |
|
| 396 | - 'label' => __( 'Subscription Status', 'invoicing' ), |
|
| 397 | - 'help_text' => __( 'Updating the status will trigger related actions and hooks', 'invoicing' ), |
|
| 398 | - 'select2' => true, |
|
| 399 | - 'value' => $subscription->get_status( 'edit' ), |
|
| 400 | - ) |
|
| 401 | - ); |
|
| 402 | - ?> |
|
| 389 | + echo aui()->select( |
|
| 390 | + array( |
|
| 391 | + 'options' => getpaid_get_subscription_statuses(), |
|
| 392 | + 'name' => 'subscription_status', |
|
| 393 | + 'id' => 'subscription_status_update_select', |
|
| 394 | + 'required' => true, |
|
| 395 | + 'no_wrap' => false, |
|
| 396 | + 'label' => __( 'Subscription Status', 'invoicing' ), |
|
| 397 | + 'help_text' => __( 'Updating the status will trigger related actions and hooks', 'invoicing' ), |
|
| 398 | + 'select2' => true, |
|
| 399 | + 'value' => $subscription->get_status( 'edit' ), |
|
| 400 | + ) |
|
| 401 | + ); |
|
| 402 | + ?> |
|
| 403 | 403 | |
| 404 | 404 | <div class="mt-2 px-3 py-2 bg-light border-top" style="margin: -12px;"> |
| 405 | 405 | |
| 406 | 406 | <?php |
| 407 | - submit_button( __( 'Update', 'invoicing' ), 'primary', 'submit', false ); |
|
| 407 | + submit_button( __( 'Update', 'invoicing' ), 'primary', 'submit', false ); |
|
| 408 | 408 | |
| 409 | - $url = esc_url( wp_nonce_url( add_query_arg( 'getpaid-admin-action', 'subscription_manual_renew' ), 'getpaid-nonce', 'getpaid-nonce' ) ); |
|
| 410 | - $anchor = __( 'Renew Subscription', 'invoicing' ); |
|
| 411 | - $title = esc_attr__( 'Are you sure you want to extend the subscription and generate a new invoice that will be automatically marked as paid?', 'invoicing' ); |
|
| 409 | + $url = esc_url( wp_nonce_url( add_query_arg( 'getpaid-admin-action', 'subscription_manual_renew' ), 'getpaid-nonce', 'getpaid-nonce' ) ); |
|
| 410 | + $anchor = __( 'Renew Subscription', 'invoicing' ); |
|
| 411 | + $title = esc_attr__( 'Are you sure you want to extend the subscription and generate a new invoice that will be automatically marked as paid?', 'invoicing' ); |
|
| 412 | 412 | |
| 413 | - if ( $subscription->is_active() ) { |
|
| 414 | - echo "<a href='$url' class='float-right text-muted' onclick='return confirm(\"$title\")'>$anchor</a>"; |
|
| 415 | - } |
|
| 413 | + if ( $subscription->is_active() ) { |
|
| 414 | + echo "<a href='$url' class='float-right text-muted' onclick='return confirm(\"$title\")'>$anchor</a>"; |
|
| 415 | + } |
|
| 416 | 416 | |
| 417 | - echo '</div></div>'; |
|
| 417 | + echo '</div></div>'; |
|
| 418 | 418 | } |
| 419 | 419 | |
| 420 | 420 | /** |
@@ -425,33 +425,33 @@ discard block |
||
| 425 | 425 | */ |
| 426 | 426 | function getpaid_admin_subscription_invoice_details_metabox( $subscription, $strict = true ) { |
| 427 | 427 | |
| 428 | - $columns = apply_filters( |
|
| 429 | - 'getpaid_subscription_related_invoices_columns', |
|
| 430 | - array( |
|
| 431 | - 'invoice' => __( 'Invoice', 'invoicing' ), |
|
| 432 | - 'relationship' => __( 'Relationship', 'invoicing' ), |
|
| 433 | - 'date' => __( 'Date', 'invoicing' ), |
|
| 434 | - 'status' => __( 'Status', 'invoicing' ), |
|
| 435 | - 'total' => __( 'Total', 'invoicing' ), |
|
| 436 | - ), |
|
| 437 | - $subscription |
|
| 438 | - ); |
|
| 439 | - |
|
| 440 | - // Prepare the invoices. |
|
| 441 | - $payments = $subscription->get_child_payments( ! is_admin() ); |
|
| 442 | - $parent = $subscription->get_parent_invoice(); |
|
| 443 | - |
|
| 444 | - if ( $parent->exists() ) { |
|
| 445 | - $payments = array_merge( array( $parent ), $payments ); |
|
| 446 | - } |
|
| 447 | - |
|
| 448 | - $table_class = 'w-100 bg-white'; |
|
| 449 | - |
|
| 450 | - if ( ! is_admin() ) { |
|
| 451 | - $table_class = 'table table-bordered'; |
|
| 452 | - } |
|
| 453 | - |
|
| 454 | - ?> |
|
| 428 | + $columns = apply_filters( |
|
| 429 | + 'getpaid_subscription_related_invoices_columns', |
|
| 430 | + array( |
|
| 431 | + 'invoice' => __( 'Invoice', 'invoicing' ), |
|
| 432 | + 'relationship' => __( 'Relationship', 'invoicing' ), |
|
| 433 | + 'date' => __( 'Date', 'invoicing' ), |
|
| 434 | + 'status' => __( 'Status', 'invoicing' ), |
|
| 435 | + 'total' => __( 'Total', 'invoicing' ), |
|
| 436 | + ), |
|
| 437 | + $subscription |
|
| 438 | + ); |
|
| 439 | + |
|
| 440 | + // Prepare the invoices. |
|
| 441 | + $payments = $subscription->get_child_payments( ! is_admin() ); |
|
| 442 | + $parent = $subscription->get_parent_invoice(); |
|
| 443 | + |
|
| 444 | + if ( $parent->exists() ) { |
|
| 445 | + $payments = array_merge( array( $parent ), $payments ); |
|
| 446 | + } |
|
| 447 | + |
|
| 448 | + $table_class = 'w-100 bg-white'; |
|
| 449 | + |
|
| 450 | + if ( ! is_admin() ) { |
|
| 451 | + $table_class = 'table table-bordered'; |
|
| 452 | + } |
|
| 453 | + |
|
| 454 | + ?> |
|
| 455 | 455 | <div class="m-0" style="overflow: auto;"> |
| 456 | 456 | |
| 457 | 457 | <table class="<?php echo $table_class; ?>"> |
@@ -459,14 +459,14 @@ discard block |
||
| 459 | 459 | <thead> |
| 460 | 460 | <tr> |
| 461 | 461 | <?php |
| 462 | - foreach ( $columns as $key => $label ) { |
|
| 463 | - $key = esc_attr( $key ); |
|
| 464 | - $label = esc_html( $label ); |
|
| 465 | - $class = 'text-left'; |
|
| 466 | - |
|
| 467 | - echo "<th class='subscription-invoice-field-$key bg-light p-2 $class color-dark font-weight-bold'>$label</th>"; |
|
| 468 | - } |
|
| 469 | - ?> |
|
| 462 | + foreach ( $columns as $key => $label ) { |
|
| 463 | + $key = esc_attr( $key ); |
|
| 464 | + $label = esc_html( $label ); |
|
| 465 | + $class = 'text-left'; |
|
| 466 | + |
|
| 467 | + echo "<th class='subscription-invoice-field-$key bg-light p-2 $class color-dark font-weight-bold'>$label</th>"; |
|
| 468 | + } |
|
| 469 | + ?> |
|
| 470 | 470 | </tr> |
| 471 | 471 | </thead> |
| 472 | 472 | |
@@ -482,73 +482,73 @@ discard block |
||
| 482 | 482 | |
| 483 | 483 | <?php |
| 484 | 484 | |
| 485 | - foreach( $payments as $payment ) : |
|
| 485 | + foreach( $payments as $payment ) : |
|
| 486 | 486 | |
| 487 | - // Ensure that we have an invoice. |
|
| 488 | - $payment = new WPInv_Invoice( $payment ); |
|
| 487 | + // Ensure that we have an invoice. |
|
| 488 | + $payment = new WPInv_Invoice( $payment ); |
|
| 489 | 489 | |
| 490 | - // Abort if the invoice is invalid... |
|
| 491 | - if ( ! $payment->exists() ) { |
|
| 492 | - continue; |
|
| 493 | - } |
|
| 490 | + // Abort if the invoice is invalid... |
|
| 491 | + if ( ! $payment->exists() ) { |
|
| 492 | + continue; |
|
| 493 | + } |
|
| 494 | 494 | |
| 495 | - // ... or belongs to a different subscription. |
|
| 496 | - if ( $strict && $payment->is_renewal() && $payment->get_subscription_id() && $payment->get_subscription_id() != $subscription->get_id() ) { |
|
| 497 | - continue; |
|
| 498 | - } |
|
| 495 | + // ... or belongs to a different subscription. |
|
| 496 | + if ( $strict && $payment->is_renewal() && $payment->get_subscription_id() && $payment->get_subscription_id() != $subscription->get_id() ) { |
|
| 497 | + continue; |
|
| 498 | + } |
|
| 499 | 499 | |
| 500 | - echo '<tr>'; |
|
| 500 | + echo '<tr>'; |
|
| 501 | 501 | |
| 502 | - foreach ( array_keys( $columns ) as $key ) { |
|
| 502 | + foreach ( array_keys( $columns ) as $key ) { |
|
| 503 | 503 | |
| 504 | - $class = 'text-left'; |
|
| 504 | + $class = 'text-left'; |
|
| 505 | 505 | |
| 506 | - echo "<td class='p-2 $class'>"; |
|
| 506 | + echo "<td class='p-2 $class'>"; |
|
| 507 | 507 | |
| 508 | - switch( $key ) { |
|
| 508 | + switch( $key ) { |
|
| 509 | 509 | |
| 510 | - case 'total': |
|
| 511 | - echo '<strong>' . wpinv_price( $payment->get_total(), $payment->get_currency() ) . '</strong>'; |
|
| 512 | - break; |
|
| 510 | + case 'total': |
|
| 511 | + echo '<strong>' . wpinv_price( $payment->get_total(), $payment->get_currency() ) . '</strong>'; |
|
| 512 | + break; |
|
| 513 | 513 | |
| 514 | - case 'relationship': |
|
| 515 | - echo $payment->is_renewal() ? __( 'Renewal Invoice', 'invoicing' ) : __( 'Initial Invoice', 'invoicing' ); |
|
| 516 | - break; |
|
| 514 | + case 'relationship': |
|
| 515 | + echo $payment->is_renewal() ? __( 'Renewal Invoice', 'invoicing' ) : __( 'Initial Invoice', 'invoicing' ); |
|
| 516 | + break; |
|
| 517 | 517 | |
| 518 | - case 'date': |
|
| 519 | - echo getpaid_format_date_value( $payment->get_date_created() ); |
|
| 520 | - break; |
|
| 518 | + case 'date': |
|
| 519 | + echo getpaid_format_date_value( $payment->get_date_created() ); |
|
| 520 | + break; |
|
| 521 | 521 | |
| 522 | - case 'status': |
|
| 522 | + case 'status': |
|
| 523 | 523 | |
| 524 | - $status = $payment->get_status_nicename(); |
|
| 525 | - if ( is_admin() ) { |
|
| 526 | - $status = $payment->get_status_label_html(); |
|
| 527 | - } |
|
| 524 | + $status = $payment->get_status_nicename(); |
|
| 525 | + if ( is_admin() ) { |
|
| 526 | + $status = $payment->get_status_label_html(); |
|
| 527 | + } |
|
| 528 | 528 | |
| 529 | - echo $status; |
|
| 530 | - break; |
|
| 529 | + echo $status; |
|
| 530 | + break; |
|
| 531 | 531 | |
| 532 | - case 'invoice': |
|
| 533 | - $link = esc_url( get_edit_post_link( $payment->get_id() ) ); |
|
| 532 | + case 'invoice': |
|
| 533 | + $link = esc_url( get_edit_post_link( $payment->get_id() ) ); |
|
| 534 | 534 | |
| 535 | - if ( ! is_admin() ) { |
|
| 536 | - $link = esc_url( $payment->get_view_url() ); |
|
| 537 | - } |
|
| 535 | + if ( ! is_admin() ) { |
|
| 536 | + $link = esc_url( $payment->get_view_url() ); |
|
| 537 | + } |
|
| 538 | 538 | |
| 539 | - $invoice = esc_html( $payment->get_number() ); |
|
| 540 | - echo "<a href='$link'>$invoice</a>"; |
|
| 541 | - break; |
|
| 542 | - } |
|
| 539 | + $invoice = esc_html( $payment->get_number() ); |
|
| 540 | + echo "<a href='$link'>$invoice</a>"; |
|
| 541 | + break; |
|
| 542 | + } |
|
| 543 | 543 | |
| 544 | - echo '</td>'; |
|
| 544 | + echo '</td>'; |
|
| 545 | 545 | |
| 546 | - } |
|
| 546 | + } |
|
| 547 | 547 | |
| 548 | - echo '</tr>'; |
|
| 548 | + echo '</tr>'; |
|
| 549 | 549 | |
| 550 | - endforeach; |
|
| 551 | - ?> |
|
| 550 | + endforeach; |
|
| 551 | + ?> |
|
| 552 | 552 | |
| 553 | 553 | </tbody> |
| 554 | 554 | |
@@ -566,42 +566,42 @@ discard block |
||
| 566 | 566 | */ |
| 567 | 567 | function getpaid_admin_subscription_item_details_metabox( $subscription ) { |
| 568 | 568 | |
| 569 | - // Fetch the subscription group. |
|
| 570 | - $subscription_group = getpaid_get_invoice_subscription_group( $subscription->get_parent_payment_id(), $subscription->get_id() ); |
|
| 569 | + // Fetch the subscription group. |
|
| 570 | + $subscription_group = getpaid_get_invoice_subscription_group( $subscription->get_parent_payment_id(), $subscription->get_id() ); |
|
| 571 | 571 | |
| 572 | - if ( empty( $subscription_group ) || empty( $subscription_group['items'] ) ) { |
|
| 573 | - return; |
|
| 574 | - } |
|
| 572 | + if ( empty( $subscription_group ) || empty( $subscription_group['items'] ) ) { |
|
| 573 | + return; |
|
| 574 | + } |
|
| 575 | 575 | |
| 576 | - // Prepare table columns. |
|
| 577 | - $columns = apply_filters( |
|
| 578 | - 'getpaid_subscription_item_details_columns', |
|
| 579 | - array( |
|
| 580 | - 'item_name' => __( 'Item', 'invoicing' ), |
|
| 581 | - 'price' => __( 'Price', 'invoicing' ), |
|
| 582 | - 'tax' => __( 'Tax', 'invoicing' ), |
|
| 583 | - 'discount' => __( 'Discount', 'invoicing' ), |
|
| 584 | - //'initial' => __( 'Initial Amount', 'invoicing' ), |
|
| 585 | - 'recurring' => __( 'Subtotal', 'invoicing' ), |
|
| 586 | - ), |
|
| 587 | - $subscription |
|
| 588 | - ); |
|
| 576 | + // Prepare table columns. |
|
| 577 | + $columns = apply_filters( |
|
| 578 | + 'getpaid_subscription_item_details_columns', |
|
| 579 | + array( |
|
| 580 | + 'item_name' => __( 'Item', 'invoicing' ), |
|
| 581 | + 'price' => __( 'Price', 'invoicing' ), |
|
| 582 | + 'tax' => __( 'Tax', 'invoicing' ), |
|
| 583 | + 'discount' => __( 'Discount', 'invoicing' ), |
|
| 584 | + //'initial' => __( 'Initial Amount', 'invoicing' ), |
|
| 585 | + 'recurring' => __( 'Subtotal', 'invoicing' ), |
|
| 586 | + ), |
|
| 587 | + $subscription |
|
| 588 | + ); |
|
| 589 | 589 | |
| 590 | - // Prepare the invoices. |
|
| 590 | + // Prepare the invoices. |
|
| 591 | 591 | |
| 592 | - $invoice = $subscription->get_parent_invoice(); |
|
| 592 | + $invoice = $subscription->get_parent_invoice(); |
|
| 593 | 593 | |
| 594 | - if ( ( ! wpinv_use_taxes() || ! $invoice->is_taxable() ) && isset( $columns['tax'] ) ) { |
|
| 595 | - unset( $columns['tax'] ); |
|
| 596 | - } |
|
| 594 | + if ( ( ! wpinv_use_taxes() || ! $invoice->is_taxable() ) && isset( $columns['tax'] ) ) { |
|
| 595 | + unset( $columns['tax'] ); |
|
| 596 | + } |
|
| 597 | 597 | |
| 598 | - $table_class = 'w-100 bg-white'; |
|
| 598 | + $table_class = 'w-100 bg-white'; |
|
| 599 | 599 | |
| 600 | - if ( ! is_admin() ) { |
|
| 601 | - $table_class = 'table table-bordered'; |
|
| 602 | - } |
|
| 600 | + if ( ! is_admin() ) { |
|
| 601 | + $table_class = 'table table-bordered'; |
|
| 602 | + } |
|
| 603 | 603 | |
| 604 | - ?> |
|
| 604 | + ?> |
|
| 605 | 605 | <div class="m-0" style="overflow: auto;"> |
| 606 | 606 | |
| 607 | 607 | <table class="<?php echo $table_class; ?>"> |
@@ -610,14 +610,14 @@ discard block |
||
| 610 | 610 | <tr> |
| 611 | 611 | <?php |
| 612 | 612 | |
| 613 | - foreach ( $columns as $key => $label ) { |
|
| 614 | - $key = esc_attr( $key ); |
|
| 615 | - $label = esc_html( $label ); |
|
| 616 | - $class = 'text-left'; |
|
| 613 | + foreach ( $columns as $key => $label ) { |
|
| 614 | + $key = esc_attr( $key ); |
|
| 615 | + $label = esc_html( $label ); |
|
| 616 | + $class = 'text-left'; |
|
| 617 | 617 | |
| 618 | - echo "<th class='subscription-item-field-$key bg-light p-2 $class color-dark font-weight-bold'>$label</th>"; |
|
| 619 | - } |
|
| 620 | - ?> |
|
| 618 | + echo "<th class='subscription-item-field-$key bg-light p-2 $class color-dark font-weight-bold'>$label</th>"; |
|
| 619 | + } |
|
| 620 | + ?> |
|
| 621 | 621 | </tr> |
| 622 | 622 | </thead> |
| 623 | 623 | |
@@ -625,106 +625,106 @@ discard block |
||
| 625 | 625 | |
| 626 | 626 | <?php |
| 627 | 627 | |
| 628 | - foreach( $subscription_group['items'] as $subscription_group_item ) : |
|
| 628 | + foreach( $subscription_group['items'] as $subscription_group_item ) : |
|
| 629 | 629 | |
| 630 | - echo '<tr>'; |
|
| 630 | + echo '<tr>'; |
|
| 631 | 631 | |
| 632 | - foreach ( array_keys( $columns ) as $key ) { |
|
| 632 | + foreach ( array_keys( $columns ) as $key ) { |
|
| 633 | 633 | |
| 634 | - $class = 'text-left'; |
|
| 634 | + $class = 'text-left'; |
|
| 635 | 635 | |
| 636 | - echo "<td class='p-2 $class'>"; |
|
| 636 | + echo "<td class='p-2 $class'>"; |
|
| 637 | 637 | |
| 638 | - switch( $key ) { |
|
| 638 | + switch( $key ) { |
|
| 639 | 639 | |
| 640 | - case 'item_name': |
|
| 641 | - $item_name = get_the_title( $subscription_group_item['item_id'] ); |
|
| 642 | - $item_name = empty( $item_name ) ? $subscription_group_item['item_name'] : $item_name; |
|
| 640 | + case 'item_name': |
|
| 641 | + $item_name = get_the_title( $subscription_group_item['item_id'] ); |
|
| 642 | + $item_name = empty( $item_name ) ? $subscription_group_item['item_name'] : $item_name; |
|
| 643 | 643 | |
| 644 | - if ( $invoice->get_template() == 'amount' || 1 == (float) $subscription_group_item['quantity'] ) { |
|
| 645 | - echo esc_html( $item_name ); |
|
| 646 | - } else { |
|
| 647 | - printf( '%1$s x %2$d', esc_html( $item_name ), (float) $subscription_group_item['quantity'] ); |
|
| 648 | - } |
|
| 644 | + if ( $invoice->get_template() == 'amount' || 1 == (float) $subscription_group_item['quantity'] ) { |
|
| 645 | + echo esc_html( $item_name ); |
|
| 646 | + } else { |
|
| 647 | + printf( '%1$s x %2$d', esc_html( $item_name ), (float) $subscription_group_item['quantity'] ); |
|
| 648 | + } |
|
| 649 | 649 | |
| 650 | - break; |
|
| 650 | + break; |
|
| 651 | 651 | |
| 652 | - case 'price': |
|
| 653 | - echo wpinv_price( $subscription_group_item['item_price'], $invoice->get_currency() ); |
|
| 654 | - break; |
|
| 652 | + case 'price': |
|
| 653 | + echo wpinv_price( $subscription_group_item['item_price'], $invoice->get_currency() ); |
|
| 654 | + break; |
|
| 655 | 655 | |
| 656 | - case 'tax': |
|
| 657 | - echo wpinv_price( $subscription_group_item['tax'], $invoice->get_currency() ); |
|
| 658 | - break; |
|
| 656 | + case 'tax': |
|
| 657 | + echo wpinv_price( $subscription_group_item['tax'], $invoice->get_currency() ); |
|
| 658 | + break; |
|
| 659 | 659 | |
| 660 | - case 'discount': |
|
| 661 | - echo wpinv_price( $subscription_group_item['discount'], $invoice->get_currency() ); |
|
| 662 | - break; |
|
| 660 | + case 'discount': |
|
| 661 | + echo wpinv_price( $subscription_group_item['discount'], $invoice->get_currency() ); |
|
| 662 | + break; |
|
| 663 | 663 | |
| 664 | - case 'initial': |
|
| 665 | - echo wpinv_price( $subscription_group_item['price'] * $subscription_group_item['quantity'], $invoice->get_currency() ); |
|
| 666 | - break; |
|
| 664 | + case 'initial': |
|
| 665 | + echo wpinv_price( $subscription_group_item['price'] * $subscription_group_item['quantity'], $invoice->get_currency() ); |
|
| 666 | + break; |
|
| 667 | 667 | |
| 668 | - case 'recurring': |
|
| 669 | - echo '<strong>' . wpinv_price( $subscription_group_item['price'] * $subscription_group_item['quantity'], $invoice->get_currency() ) . '</strong>'; |
|
| 670 | - break; |
|
| 668 | + case 'recurring': |
|
| 669 | + echo '<strong>' . wpinv_price( $subscription_group_item['price'] * $subscription_group_item['quantity'], $invoice->get_currency() ) . '</strong>'; |
|
| 670 | + break; |
|
| 671 | 671 | |
| 672 | - } |
|
| 672 | + } |
|
| 673 | 673 | |
| 674 | - echo '</td>'; |
|
| 674 | + echo '</td>'; |
|
| 675 | 675 | |
| 676 | - } |
|
| 676 | + } |
|
| 677 | 677 | |
| 678 | - echo '</tr>'; |
|
| 678 | + echo '</tr>'; |
|
| 679 | 679 | |
| 680 | - endforeach; |
|
| 680 | + endforeach; |
|
| 681 | 681 | |
| 682 | - foreach( $subscription_group['fees'] as $subscription_group_fee ) : |
|
| 682 | + foreach( $subscription_group['fees'] as $subscription_group_fee ) : |
|
| 683 | 683 | |
| 684 | - echo '<tr>'; |
|
| 684 | + echo '<tr>'; |
|
| 685 | 685 | |
| 686 | - foreach ( array_keys( $columns ) as $key ) { |
|
| 686 | + foreach ( array_keys( $columns ) as $key ) { |
|
| 687 | 687 | |
| 688 | - $class = 'text-left'; |
|
| 688 | + $class = 'text-left'; |
|
| 689 | 689 | |
| 690 | - echo "<td class='p-2 $class'>"; |
|
| 690 | + echo "<td class='p-2 $class'>"; |
|
| 691 | 691 | |
| 692 | - switch( $key ) { |
|
| 692 | + switch( $key ) { |
|
| 693 | 693 | |
| 694 | - case 'item_name': |
|
| 695 | - echo esc_html( $subscription_group_fee['name'] ); |
|
| 696 | - break; |
|
| 694 | + case 'item_name': |
|
| 695 | + echo esc_html( $subscription_group_fee['name'] ); |
|
| 696 | + break; |
|
| 697 | 697 | |
| 698 | - case 'price': |
|
| 699 | - echo wpinv_price( $subscription_group_fee['initial_fee'], $invoice->get_currency() ); |
|
| 700 | - break; |
|
| 698 | + case 'price': |
|
| 699 | + echo wpinv_price( $subscription_group_fee['initial_fee'], $invoice->get_currency() ); |
|
| 700 | + break; |
|
| 701 | 701 | |
| 702 | - case 'tax': |
|
| 703 | - echo "—"; |
|
| 704 | - break; |
|
| 702 | + case 'tax': |
|
| 703 | + echo "—"; |
|
| 704 | + break; |
|
| 705 | 705 | |
| 706 | - case 'discount': |
|
| 707 | - echo "—"; |
|
| 708 | - break; |
|
| 706 | + case 'discount': |
|
| 707 | + echo "—"; |
|
| 708 | + break; |
|
| 709 | 709 | |
| 710 | - case 'initial': |
|
| 711 | - echo wpinv_price( $subscription_group_fee['initial_fee'], $invoice->get_currency() ); |
|
| 712 | - break; |
|
| 710 | + case 'initial': |
|
| 711 | + echo wpinv_price( $subscription_group_fee['initial_fee'], $invoice->get_currency() ); |
|
| 712 | + break; |
|
| 713 | 713 | |
| 714 | - case 'recurring': |
|
| 715 | - echo '<strong>' . wpinv_price( $subscription_group_fee['recurring_fee'], $invoice->get_currency() ) . '</strong>'; |
|
| 716 | - break; |
|
| 714 | + case 'recurring': |
|
| 715 | + echo '<strong>' . wpinv_price( $subscription_group_fee['recurring_fee'], $invoice->get_currency() ) . '</strong>'; |
|
| 716 | + break; |
|
| 717 | 717 | |
| 718 | - } |
|
| 718 | + } |
|
| 719 | 719 | |
| 720 | - echo '</td>'; |
|
| 720 | + echo '</td>'; |
|
| 721 | 721 | |
| 722 | - } |
|
| 722 | + } |
|
| 723 | 723 | |
| 724 | - echo '</tr>'; |
|
| 724 | + echo '</tr>'; |
|
| 725 | 725 | |
| 726 | - endforeach; |
|
| 727 | - ?> |
|
| 726 | + endforeach; |
|
| 727 | + ?> |
|
| 728 | 728 | |
| 729 | 729 | </tbody> |
| 730 | 730 | |
@@ -743,38 +743,38 @@ discard block |
||
| 743 | 743 | */ |
| 744 | 744 | function getpaid_admin_subscription_related_subscriptions_metabox( $subscription, $skip_current = true ) { |
| 745 | 745 | |
| 746 | - // Fetch the subscription groups. |
|
| 747 | - $subscription_groups = getpaid_get_invoice_subscription_groups( $subscription->get_parent_payment_id() ); |
|
| 748 | - |
|
| 749 | - if ( empty( $subscription_groups ) ) { |
|
| 750 | - return; |
|
| 751 | - } |
|
| 752 | - |
|
| 753 | - // Prepare table columns. |
|
| 754 | - $columns = apply_filters( |
|
| 755 | - 'getpaid_subscription_related_subscriptions_columns', |
|
| 756 | - array( |
|
| 757 | - 'subscription' => __( 'Subscription', 'invoicing' ), |
|
| 758 | - 'start_date' => __( 'Start Date', 'invoicing' ), |
|
| 759 | - 'renewal_date' => __( 'Next Payment', 'invoicing' ), |
|
| 760 | - 'renewals' => __( 'Payments', 'invoicing' ), |
|
| 761 | - 'item' => __( 'Items', 'invoicing' ), |
|
| 762 | - 'status' => __( 'Status', 'invoicing' ), |
|
| 763 | - ), |
|
| 764 | - $subscription |
|
| 765 | - ); |
|
| 766 | - |
|
| 767 | - if ( $subscription->get_status() == 'pending' ) { |
|
| 768 | - unset( $columns['start_date'], $columns['renewal_date'] ); |
|
| 769 | - } |
|
| 770 | - |
|
| 771 | - $table_class = 'w-100 bg-white'; |
|
| 772 | - |
|
| 773 | - if ( ! is_admin() ) { |
|
| 774 | - $table_class = 'table table-bordered'; |
|
| 775 | - } |
|
| 776 | - |
|
| 777 | - ?> |
|
| 746 | + // Fetch the subscription groups. |
|
| 747 | + $subscription_groups = getpaid_get_invoice_subscription_groups( $subscription->get_parent_payment_id() ); |
|
| 748 | + |
|
| 749 | + if ( empty( $subscription_groups ) ) { |
|
| 750 | + return; |
|
| 751 | + } |
|
| 752 | + |
|
| 753 | + // Prepare table columns. |
|
| 754 | + $columns = apply_filters( |
|
| 755 | + 'getpaid_subscription_related_subscriptions_columns', |
|
| 756 | + array( |
|
| 757 | + 'subscription' => __( 'Subscription', 'invoicing' ), |
|
| 758 | + 'start_date' => __( 'Start Date', 'invoicing' ), |
|
| 759 | + 'renewal_date' => __( 'Next Payment', 'invoicing' ), |
|
| 760 | + 'renewals' => __( 'Payments', 'invoicing' ), |
|
| 761 | + 'item' => __( 'Items', 'invoicing' ), |
|
| 762 | + 'status' => __( 'Status', 'invoicing' ), |
|
| 763 | + ), |
|
| 764 | + $subscription |
|
| 765 | + ); |
|
| 766 | + |
|
| 767 | + if ( $subscription->get_status() == 'pending' ) { |
|
| 768 | + unset( $columns['start_date'], $columns['renewal_date'] ); |
|
| 769 | + } |
|
| 770 | + |
|
| 771 | + $table_class = 'w-100 bg-white'; |
|
| 772 | + |
|
| 773 | + if ( ! is_admin() ) { |
|
| 774 | + $table_class = 'table table-bordered'; |
|
| 775 | + } |
|
| 776 | + |
|
| 777 | + ?> |
|
| 778 | 778 | <div class="m-0" style="overflow: auto;"> |
| 779 | 779 | |
| 780 | 780 | <table class="<?php echo $table_class; ?>"> |
@@ -783,14 +783,14 @@ discard block |
||
| 783 | 783 | <tr> |
| 784 | 784 | <?php |
| 785 | 785 | |
| 786 | - foreach ( $columns as $key => $label ) { |
|
| 787 | - $key = esc_attr( $key ); |
|
| 788 | - $label = esc_html( $label ); |
|
| 789 | - $class = 'text-left'; |
|
| 786 | + foreach ( $columns as $key => $label ) { |
|
| 787 | + $key = esc_attr( $key ); |
|
| 788 | + $label = esc_html( $label ); |
|
| 789 | + $class = 'text-left'; |
|
| 790 | 790 | |
| 791 | - echo "<th class='related-subscription-field-$key bg-light p-2 $class color-dark font-weight-bold'>$label</th>"; |
|
| 792 | - } |
|
| 793 | - ?> |
|
| 791 | + echo "<th class='related-subscription-field-$key bg-light p-2 $class color-dark font-weight-bold'>$label</th>"; |
|
| 792 | + } |
|
| 793 | + ?> |
|
| 794 | 794 | </tr> |
| 795 | 795 | </thead> |
| 796 | 796 | |
@@ -798,74 +798,74 @@ discard block |
||
| 798 | 798 | |
| 799 | 799 | <?php |
| 800 | 800 | |
| 801 | - foreach( $subscription_groups as $subscription_group ) : |
|
| 801 | + foreach( $subscription_groups as $subscription_group ) : |
|
| 802 | 802 | |
| 803 | - // Do not list current subscription. |
|
| 804 | - if ( $skip_current && (int) $subscription_group['subscription_id'] === $subscription->get_id() ) { |
|
| 805 | - continue; |
|
| 806 | - } |
|
| 803 | + // Do not list current subscription. |
|
| 804 | + if ( $skip_current && (int) $subscription_group['subscription_id'] === $subscription->get_id() ) { |
|
| 805 | + continue; |
|
| 806 | + } |
|
| 807 | 807 | |
| 808 | - // Ensure the subscription exists. |
|
| 809 | - $_suscription = new WPInv_Subscription( $subscription_group['subscription_id'] ); |
|
| 808 | + // Ensure the subscription exists. |
|
| 809 | + $_suscription = new WPInv_Subscription( $subscription_group['subscription_id'] ); |
|
| 810 | 810 | |
| 811 | - if ( ! $_suscription->exists() ) { |
|
| 812 | - continue; |
|
| 813 | - } |
|
| 811 | + if ( ! $_suscription->exists() ) { |
|
| 812 | + continue; |
|
| 813 | + } |
|
| 814 | 814 | |
| 815 | - echo '<tr>'; |
|
| 815 | + echo '<tr>'; |
|
| 816 | 816 | |
| 817 | - foreach ( array_keys( $columns ) as $key ) { |
|
| 817 | + foreach ( array_keys( $columns ) as $key ) { |
|
| 818 | 818 | |
| 819 | - $class = 'text-left'; |
|
| 819 | + $class = 'text-left'; |
|
| 820 | 820 | |
| 821 | - echo "<td class='p-2 $class'>"; |
|
| 821 | + echo "<td class='p-2 $class'>"; |
|
| 822 | 822 | |
| 823 | - switch( $key ) { |
|
| 823 | + switch( $key ) { |
|
| 824 | 824 | |
| 825 | - case 'status': |
|
| 826 | - echo $_suscription->get_status_label_html(); |
|
| 827 | - break; |
|
| 825 | + case 'status': |
|
| 826 | + echo $_suscription->get_status_label_html(); |
|
| 827 | + break; |
|
| 828 | 828 | |
| 829 | - case 'item': |
|
| 830 | - $markup = array_map( array( 'WPInv_Subscriptions_List_Table', 'generate_item_markup' ), array_keys( $subscription_group['items'] ) ); |
|
| 831 | - echo implode( ' | ', $markup ); |
|
| 832 | - break; |
|
| 829 | + case 'item': |
|
| 830 | + $markup = array_map( array( 'WPInv_Subscriptions_List_Table', 'generate_item_markup' ), array_keys( $subscription_group['items'] ) ); |
|
| 831 | + echo implode( ' | ', $markup ); |
|
| 832 | + break; |
|
| 833 | 833 | |
| 834 | - case 'renewals': |
|
| 835 | - $max_bills = $_suscription->get_bill_times(); |
|
| 836 | - echo $_suscription->get_times_billed() . ' / ' . ( empty( $max_bills ) ? "∞" : $max_bills ); |
|
| 837 | - break; |
|
| 834 | + case 'renewals': |
|
| 835 | + $max_bills = $_suscription->get_bill_times(); |
|
| 836 | + echo $_suscription->get_times_billed() . ' / ' . ( empty( $max_bills ) ? "∞" : $max_bills ); |
|
| 837 | + break; |
|
| 838 | 838 | |
| 839 | - case 'renewal_date': |
|
| 840 | - echo $_suscription->is_active() ? getpaid_format_date_value( $_suscription->get_expiration() ) : "—"; |
|
| 841 | - break; |
|
| 839 | + case 'renewal_date': |
|
| 840 | + echo $_suscription->is_active() ? getpaid_format_date_value( $_suscription->get_expiration() ) : "—"; |
|
| 841 | + break; |
|
| 842 | 842 | |
| 843 | - case 'start_date': |
|
| 844 | - echo 'pending' == $_suscription->get_status() ? "—" : getpaid_format_date_value( $_suscription->get_date_created() ); |
|
| 845 | - break; |
|
| 843 | + case 'start_date': |
|
| 844 | + echo 'pending' == $_suscription->get_status() ? "—" : getpaid_format_date_value( $_suscription->get_date_created() ); |
|
| 845 | + break; |
|
| 846 | 846 | |
| 847 | - case 'subscription': |
|
| 848 | - $url = is_admin() ? admin_url( 'admin.php?page=wpinv-subscriptions&id=' . absint( $_suscription->get_id() ) ) : $_suscription->get_view_url(); |
|
| 849 | - printf( |
|
| 850 | - '%1$s#%2$s%3$s', |
|
| 851 | - '<a href="' . esc_url( $url ) . '">', |
|
| 852 | - '<strong>' . intval( $_suscription->get_id() ) . '</strong>', |
|
| 853 | - '</a>' |
|
| 854 | - ); |
|
| 847 | + case 'subscription': |
|
| 848 | + $url = is_admin() ? admin_url( 'admin.php?page=wpinv-subscriptions&id=' . absint( $_suscription->get_id() ) ) : $_suscription->get_view_url(); |
|
| 849 | + printf( |
|
| 850 | + '%1$s#%2$s%3$s', |
|
| 851 | + '<a href="' . esc_url( $url ) . '">', |
|
| 852 | + '<strong>' . intval( $_suscription->get_id() ) . '</strong>', |
|
| 853 | + '</a>' |
|
| 854 | + ); |
|
| 855 | 855 | |
| 856 | - echo WPInv_Subscriptions_List_Table::column_amount( $_suscription ); |
|
| 857 | - break; |
|
| 856 | + echo WPInv_Subscriptions_List_Table::column_amount( $_suscription ); |
|
| 857 | + break; |
|
| 858 | 858 | |
| 859 | - } |
|
| 859 | + } |
|
| 860 | 860 | |
| 861 | - echo '</td>'; |
|
| 861 | + echo '</td>'; |
|
| 862 | 862 | |
| 863 | - } |
|
| 863 | + } |
|
| 864 | 864 | |
| 865 | - echo '</tr>'; |
|
| 865 | + echo '</tr>'; |
|
| 866 | 866 | |
| 867 | - endforeach; |
|
| 868 | - ?> |
|
| 867 | + endforeach; |
|
| 868 | + ?> |
|
| 869 | 869 | |
| 870 | 870 | </tbody> |
| 871 | 871 | |
@@ -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' ), |
@@ -170,144 +170,144 @@ discard block |
||
| 170 | 170 | return; |
| 171 | 171 | } |
| 172 | 172 | |
| 173 | - echo '<h3 class="getpaid-bank-transfer-title"> ' . apply_filters( 'wpinv_receipt_bank_details_title', __( 'Bank Details', 'invoicing' ) ) . '</h3>' . PHP_EOL; |
|
| 173 | + echo '<h3 class="getpaid-bank-transfer-title"> ' . apply_filters( 'wpinv_receipt_bank_details_title', __( 'Bank Details', 'invoicing' ) ) . '</h3>' . PHP_EOL; |
|
| 174 | + |
|
| 175 | + echo '<table class="table table-bordered getpaid-bank-transfer-details">' . PHP_EOL; |
|
| 176 | + |
|
| 177 | + foreach ( $bank_info as $key => $data ) { |
|
| 178 | + |
|
| 179 | + $key = sanitize_html_class( $key ); |
|
| 180 | + $label = wp_kses_post( $data['label'] ); |
|
| 181 | + $value = wp_kses_post( wptexturize( $data['value'] ) ); |
|
| 182 | + |
|
| 183 | + echo "<tr class='getpaid-bank-transfer-$key'><th class='font-weight-bold'>$label</th><td class='w-75'>$value</td></tr>" . PHP_EOL; |
|
| 184 | + } |
|
| 174 | 185 | |
| 175 | - echo '<table class="table table-bordered getpaid-bank-transfer-details">' . PHP_EOL; |
|
| 186 | + echo '</table>'; |
|
| 176 | 187 | |
| 177 | - foreach ( $bank_info as $key => $data ) { |
|
| 188 | + } |
|
| 178 | 189 | |
| 179 | - $key = sanitize_html_class( $key ); |
|
| 180 | - $label = wp_kses_post( $data['label'] ); |
|
| 181 | - $value = wp_kses_post( wptexturize( $data['value'] ) ); |
|
| 190 | + /** |
|
| 191 | + * Get country locale if localized. |
|
| 192 | + * |
|
| 193 | + * @return array |
|
| 194 | + */ |
|
| 195 | + public function get_country_locale() { |
|
| 196 | + |
|
| 197 | + if ( empty( $this->locale ) ) { |
|
| 198 | + |
|
| 199 | + // Locale information to be used - only those that are not 'Sort Code'. |
|
| 200 | + $this->locale = apply_filters( |
|
| 201 | + 'getpaid_get_bank_transfer_locale', |
|
| 202 | + array( |
|
| 203 | + 'AU' => array( |
|
| 204 | + 'sortcode' => array( |
|
| 205 | + 'label' => __( 'BSB', 'invoicing' ), |
|
| 206 | + ), |
|
| 207 | + ), |
|
| 208 | + 'CA' => array( |
|
| 209 | + 'sortcode' => array( |
|
| 210 | + 'label' => __( 'Bank transit number', 'invoicing' ), |
|
| 211 | + ), |
|
| 212 | + ), |
|
| 213 | + 'IN' => array( |
|
| 214 | + 'sortcode' => array( |
|
| 215 | + 'label' => __( 'IFSC', 'invoicing' ), |
|
| 216 | + ), |
|
| 217 | + ), |
|
| 218 | + 'IT' => array( |
|
| 219 | + 'sortcode' => array( |
|
| 220 | + 'label' => __( 'Branch sort', 'invoicing' ), |
|
| 221 | + ), |
|
| 222 | + ), |
|
| 223 | + 'NZ' => array( |
|
| 224 | + 'sortcode' => array( |
|
| 225 | + 'label' => __( 'Bank code', 'invoicing' ), |
|
| 226 | + ), |
|
| 227 | + ), |
|
| 228 | + 'SE' => array( |
|
| 229 | + 'sortcode' => array( |
|
| 230 | + 'label' => __( 'Bank code', 'invoicing' ), |
|
| 231 | + ), |
|
| 232 | + ), |
|
| 233 | + 'US' => array( |
|
| 234 | + 'sortcode' => array( |
|
| 235 | + 'label' => __( 'Routing number', 'invoicing' ), |
|
| 236 | + ), |
|
| 237 | + ), |
|
| 238 | + 'ZA' => array( |
|
| 239 | + 'sortcode' => array( |
|
| 240 | + 'label' => __( 'Branch code', 'invoicing' ), |
|
| 241 | + ), |
|
| 242 | + ), |
|
| 243 | + ) |
|
| 244 | + ); |
|
| 182 | 245 | |
| 183 | - echo "<tr class='getpaid-bank-transfer-$key'><th class='font-weight-bold'>$label</th><td class='w-75'>$value</td></tr>" . PHP_EOL; |
|
| 184 | - } |
|
| 246 | + } |
|
| 185 | 247 | |
| 186 | - echo '</table>'; |
|
| 248 | + return $this->locale; |
|
| 187 | 249 | |
| 188 | 250 | } |
| 189 | 251 | |
| 190 | 252 | /** |
| 191 | - * Get country locale if localized. |
|
| 192 | - * |
|
| 193 | - * @return array |
|
| 194 | - */ |
|
| 195 | - public function get_country_locale() { |
|
| 196 | - |
|
| 197 | - if ( empty( $this->locale ) ) { |
|
| 198 | - |
|
| 199 | - // Locale information to be used - only those that are not 'Sort Code'. |
|
| 200 | - $this->locale = apply_filters( |
|
| 201 | - 'getpaid_get_bank_transfer_locale', |
|
| 202 | - array( |
|
| 203 | - 'AU' => array( |
|
| 204 | - 'sortcode' => array( |
|
| 205 | - 'label' => __( 'BSB', 'invoicing' ), |
|
| 206 | - ), |
|
| 207 | - ), |
|
| 208 | - 'CA' => array( |
|
| 209 | - 'sortcode' => array( |
|
| 210 | - 'label' => __( 'Bank transit number', 'invoicing' ), |
|
| 211 | - ), |
|
| 212 | - ), |
|
| 213 | - 'IN' => array( |
|
| 214 | - 'sortcode' => array( |
|
| 215 | - 'label' => __( 'IFSC', 'invoicing' ), |
|
| 216 | - ), |
|
| 217 | - ), |
|
| 218 | - 'IT' => array( |
|
| 219 | - 'sortcode' => array( |
|
| 220 | - 'label' => __( 'Branch sort', 'invoicing' ), |
|
| 221 | - ), |
|
| 222 | - ), |
|
| 223 | - 'NZ' => array( |
|
| 224 | - 'sortcode' => array( |
|
| 225 | - 'label' => __( 'Bank code', 'invoicing' ), |
|
| 226 | - ), |
|
| 227 | - ), |
|
| 228 | - 'SE' => array( |
|
| 229 | - 'sortcode' => array( |
|
| 230 | - 'label' => __( 'Bank code', 'invoicing' ), |
|
| 231 | - ), |
|
| 232 | - ), |
|
| 233 | - 'US' => array( |
|
| 234 | - 'sortcode' => array( |
|
| 235 | - 'label' => __( 'Routing number', 'invoicing' ), |
|
| 236 | - ), |
|
| 237 | - ), |
|
| 238 | - 'ZA' => array( |
|
| 239 | - 'sortcode' => array( |
|
| 240 | - 'label' => __( 'Branch code', 'invoicing' ), |
|
| 241 | - ), |
|
| 242 | - ), |
|
| 243 | - ) |
|
| 244 | - ); |
|
| 245 | - |
|
| 246 | - } |
|
| 247 | - |
|
| 248 | - return $this->locale; |
|
| 249 | - |
|
| 250 | - } |
|
| 251 | - |
|
| 252 | - /** |
|
| 253 | - * Filters the gateway settings. |
|
| 254 | - * |
|
| 255 | - * @param array $admin_settings |
|
| 256 | - */ |
|
| 257 | - public function admin_settings( $admin_settings ) { |
|
| 253 | + * Filters the gateway settings. |
|
| 254 | + * |
|
| 255 | + * @param array $admin_settings |
|
| 256 | + */ |
|
| 257 | + public function admin_settings( $admin_settings ) { |
|
| 258 | 258 | |
| 259 | 259 | $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' ); |
| 260 | - $admin_settings['bank_transfer_active']['desc'] = __( 'Enable bank transfer', 'invoicing' ); |
|
| 260 | + $admin_settings['bank_transfer_active']['desc'] = __( 'Enable bank transfer', 'invoicing' ); |
|
| 261 | 261 | |
| 262 | - $locale = $this->get_country_locale(); |
|
| 262 | + $locale = $this->get_country_locale(); |
|
| 263 | 263 | |
| 264 | - // Get sortcode label in the $locale array and use appropriate one. |
|
| 265 | - $country = wpinv_default_billing_country(); |
|
| 266 | - $sortcode = isset( $locale[ $country ]['sortcode']['label'] ) ? $locale[ $country ]['sortcode']['label'] : __( 'Sort code', 'invoicing' ); |
|
| 264 | + // Get sortcode label in the $locale array and use appropriate one. |
|
| 265 | + $country = wpinv_default_billing_country(); |
|
| 266 | + $sortcode = isset( $locale[ $country ]['sortcode']['label'] ) ? $locale[ $country ]['sortcode']['label'] : __( 'Sort code', 'invoicing' ); |
|
| 267 | 267 | |
| 268 | - $admin_settings['bank_transfer_ac_name'] = array( |
|
| 268 | + $admin_settings['bank_transfer_ac_name'] = array( |
|
| 269 | 269 | 'type' => 'text', |
| 270 | 270 | 'id' => 'bank_transfer_ac_name', |
| 271 | 271 | 'name' => __( 'Account Name', 'invoicing' ), |
| 272 | - ); |
|
| 272 | + ); |
|
| 273 | 273 | |
| 274 | - $admin_settings['bank_transfer_ac_no'] = array( |
|
| 274 | + $admin_settings['bank_transfer_ac_no'] = array( |
|
| 275 | 275 | 'type' => 'text', |
| 276 | 276 | 'id' => 'bank_transfer_ac_no', |
| 277 | 277 | 'name' => __( 'Account Number', 'invoicing' ), |
| 278 | - ); |
|
| 278 | + ); |
|
| 279 | 279 | |
| 280 | - $admin_settings['bank_transfer_bank_name'] = array( |
|
| 280 | + $admin_settings['bank_transfer_bank_name'] = array( |
|
| 281 | 281 | 'type' => 'text', |
| 282 | 282 | 'id' => 'bank_transfer_bank_name', |
| 283 | 283 | 'name' => __( 'Bank Name', 'invoicing' ), |
| 284 | - ); |
|
| 284 | + ); |
|
| 285 | 285 | |
| 286 | - $admin_settings['bank_transfer_ifsc'] = array( |
|
| 286 | + $admin_settings['bank_transfer_ifsc'] = array( |
|
| 287 | 287 | 'type' => 'text', |
| 288 | 288 | 'id' => 'bank_transfer_ifsc', |
| 289 | 289 | 'name' => __( 'IFSC Code', 'invoicing' ), |
| 290 | - ); |
|
| 290 | + ); |
|
| 291 | 291 | |
| 292 | - $admin_settings['bank_transfer_iban'] = array( |
|
| 292 | + $admin_settings['bank_transfer_iban'] = array( |
|
| 293 | 293 | 'type' => 'text', |
| 294 | 294 | 'id' => 'bank_transfer_iban', |
| 295 | 295 | 'name' => __( 'IBAN', 'invoicing' ), |
| 296 | - ); |
|
| 296 | + ); |
|
| 297 | 297 | |
| 298 | - $admin_settings['bank_transfer_bic'] = array( |
|
| 298 | + $admin_settings['bank_transfer_bic'] = array( |
|
| 299 | 299 | 'type' => 'text', |
| 300 | 300 | 'id' => 'bank_transfer_bic', |
| 301 | 301 | 'name' => __( 'BIC/Swift Code', 'invoicing' ), |
| 302 | - ); |
|
| 302 | + ); |
|
| 303 | 303 | |
| 304 | - $admin_settings['bank_transfer_sort_code'] = array( |
|
| 305 | - 'type' => 'text', |
|
| 306 | - 'id' => 'bank_transfer_sort_code', |
|
| 307 | - 'name' => $sortcode, |
|
| 308 | - ); |
|
| 304 | + $admin_settings['bank_transfer_sort_code'] = array( |
|
| 305 | + 'type' => 'text', |
|
| 306 | + 'id' => 'bank_transfer_sort_code', |
|
| 307 | + 'name' => $sortcode, |
|
| 308 | + ); |
|
| 309 | 309 | |
| 310 | - $admin_settings['bank_transfer_info'] = array( |
|
| 310 | + $admin_settings['bank_transfer_info'] = array( |
|
| 311 | 311 | 'id' => 'bank_transfer_info', |
| 312 | 312 | 'name' => __( 'Instructions', 'invoicing' ), |
| 313 | 313 | 'desc' => __( 'Instructions that will be added to the thank you page and emails.', 'invoicing' ), |
@@ -317,17 +317,17 @@ discard block |
||
| 317 | 317 | 'rows' => 5 |
| 318 | 318 | ); |
| 319 | 319 | |
| 320 | - return $admin_settings; |
|
| 321 | - } |
|
| 320 | + return $admin_settings; |
|
| 321 | + } |
|
| 322 | 322 | |
| 323 | - /** |
|
| 324 | - * Processes invoice addons. |
|
| 325 | - * |
|
| 326 | - * @param WPInv_Invoice $invoice |
|
| 327 | - * @param GetPaid_Form_Item[] $items |
|
| 328 | - * @return WPInv_Invoice |
|
| 329 | - */ |
|
| 330 | - public function process_addons( $invoice, $items ) { |
|
| 323 | + /** |
|
| 324 | + * Processes invoice addons. |
|
| 325 | + * |
|
| 326 | + * @param WPInv_Invoice $invoice |
|
| 327 | + * @param GetPaid_Form_Item[] $items |
|
| 328 | + * @return WPInv_Invoice |
|
| 329 | + */ |
|
| 330 | + public function process_addons( $invoice, $items ) { |
|
| 331 | 331 | |
| 332 | 332 | foreach ( $items as $item ) { |
| 333 | 333 | $invoice->add_item( $item ); |
@@ -335,70 +335,70 @@ discard block |
||
| 335 | 335 | |
| 336 | 336 | $invoice->recalculate_total(); |
| 337 | 337 | $invoice->save(); |
| 338 | - } |
|
| 338 | + } |
|
| 339 | 339 | |
| 340 | - /** |
|
| 341 | - * (Maybe) renews a bank transfer subscription profile. |
|
| 342 | - * |
|
| 343 | - * |
|
| 340 | + /** |
|
| 341 | + * (Maybe) renews a bank transfer subscription profile. |
|
| 342 | + * |
|
| 343 | + * |
|
| 344 | 344 | * @param WPInv_Subscription $subscription |
| 345 | - */ |
|
| 346 | - public function maybe_renew_subscription( $subscription ) { |
|
| 345 | + */ |
|
| 346 | + public function maybe_renew_subscription( $subscription ) { |
|
| 347 | 347 | |
| 348 | 348 | // Ensure its our subscription && it's active. |
| 349 | 349 | if ( $this->id == $subscription->get_gateway() && $subscription->has_status( 'active trialling' ) ) { |
| 350 | - $subscription->create_payment(); |
|
| 350 | + $subscription->create_payment(); |
|
| 351 | 351 | } |
| 352 | 352 | |
| 353 | 353 | } |
| 354 | 354 | |
| 355 | - /** |
|
| 356 | - * Process a bank transfer payment. |
|
| 357 | - * |
|
| 358 | - * |
|
| 355 | + /** |
|
| 356 | + * Process a bank transfer payment. |
|
| 357 | + * |
|
| 358 | + * |
|
| 359 | 359 | * @param WPInv_Invoice $invoice |
| 360 | - */ |
|
| 361 | - public function invoice_paid( $invoice ) { |
|
| 360 | + */ |
|
| 361 | + public function invoice_paid( $invoice ) { |
|
| 362 | 362 | |
| 363 | - // Abort if not paid by bank transfer. |
|
| 364 | - if ( $this->id !== $invoice->get_gateway() || ! $invoice->is_recurring() ) { |
|
| 365 | - return; |
|
| 366 | - } |
|
| 363 | + // Abort if not paid by bank transfer. |
|
| 364 | + if ( $this->id !== $invoice->get_gateway() || ! $invoice->is_recurring() ) { |
|
| 365 | + return; |
|
| 366 | + } |
|
| 367 | 367 | |
| 368 | - // Is it a parent payment? |
|
| 369 | - if ( 0 == $invoice->get_parent_id() ) { |
|
| 368 | + // Is it a parent payment? |
|
| 369 | + if ( 0 == $invoice->get_parent_id() ) { |
|
| 370 | 370 | |
| 371 | - // (Maybe) activate subscriptions. |
|
| 372 | - $subscriptions = getpaid_get_invoice_subscriptions( $invoice ); |
|
| 371 | + // (Maybe) activate subscriptions. |
|
| 372 | + $subscriptions = getpaid_get_invoice_subscriptions( $invoice ); |
|
| 373 | 373 | |
| 374 | - if ( ! empty( $subscriptions ) ) { |
|
| 375 | - $subscriptions = is_array( $subscriptions ) ? $subscriptions : array( $subscriptions ); |
|
| 374 | + if ( ! empty( $subscriptions ) ) { |
|
| 375 | + $subscriptions = is_array( $subscriptions ) ? $subscriptions : array( $subscriptions ); |
|
| 376 | 376 | |
| 377 | - foreach ( $subscriptions as $subscription ) { |
|
| 378 | - if ( $subscription->exists() ) { |
|
| 379 | - $duration = strtotime( $subscription->get_expiration() ) - strtotime( $subscription->get_date_created() ); |
|
| 380 | - $expiry = date( 'Y-m-d H:i:s', ( current_time( 'timestamp' ) + $duration ) ); |
|
| 377 | + foreach ( $subscriptions as $subscription ) { |
|
| 378 | + if ( $subscription->exists() ) { |
|
| 379 | + $duration = strtotime( $subscription->get_expiration() ) - strtotime( $subscription->get_date_created() ); |
|
| 380 | + $expiry = date( 'Y-m-d H:i:s', ( current_time( 'timestamp' ) + $duration ) ); |
|
| 381 | 381 | |
| 382 | - $subscription->set_next_renewal_date( $expiry ); |
|
| 383 | - $subscription->set_date_created( current_time( 'mysql' ) ); |
|
| 384 | - $subscription->set_profile_id( 'bt_sub_' . $invoice->get_id() . '_' . $subscription->get_id() ); |
|
| 385 | - $subscription->activate(); |
|
| 386 | - } |
|
| 387 | - } |
|
| 382 | + $subscription->set_next_renewal_date( $expiry ); |
|
| 383 | + $subscription->set_date_created( current_time( 'mysql' ) ); |
|
| 384 | + $subscription->set_profile_id( 'bt_sub_' . $invoice->get_id() . '_' . $subscription->get_id() ); |
|
| 385 | + $subscription->activate(); |
|
| 386 | + } |
|
| 387 | + } |
|
| 388 | 388 | |
| 389 | - } |
|
| 389 | + } |
|
| 390 | 390 | |
| 391 | - } else { |
|
| 391 | + } else { |
|
| 392 | 392 | |
| 393 | - $subscription = getpaid_get_subscription( $invoice->get_subscription_id() ); |
|
| 393 | + $subscription = getpaid_get_subscription( $invoice->get_subscription_id() ); |
|
| 394 | 394 | |
| 395 | - // Renew the subscription. |
|
| 396 | - if ( $subscription && $subscription->exists() ) { |
|
| 397 | - $subscription->add_payment( array(), $invoice ); |
|
| 398 | - $subscription->renew(); |
|
| 399 | - } |
|
| 395 | + // Renew the subscription. |
|
| 396 | + if ( $subscription && $subscription->exists() ) { |
|
| 397 | + $subscription->add_payment( array(), $invoice ); |
|
| 398 | + $subscription->renew(); |
|
| 399 | + } |
|
| 400 | 400 | |
| 401 | - } |
|
| 401 | + } |
|
| 402 | 402 | |
| 403 | 403 | } |
| 404 | 404 | |
@@ -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,1056 +11,1056 @@ discard block |
||
| 11 | 11 | */ |
| 12 | 12 | class AUI_Component_Input { |
| 13 | 13 | |
| 14 | - /** |
|
| 15 | - * Build the component. |
|
| 16 | - * |
|
| 17 | - * @param array $args |
|
| 18 | - * |
|
| 19 | - * @return string The rendered component. |
|
| 20 | - */ |
|
| 21 | - public static function input($args = array()){ |
|
| 22 | - $defaults = array( |
|
| 23 | - 'type' => 'text', |
|
| 24 | - 'name' => '', |
|
| 25 | - 'class' => '', |
|
| 26 | - 'wrap_class' => '', |
|
| 27 | - 'id' => '', |
|
| 28 | - 'placeholder'=> '', |
|
| 29 | - 'title' => '', |
|
| 30 | - 'value' => '', |
|
| 31 | - 'required' => false, |
|
| 32 | - 'label' => '', |
|
| 33 | - 'label_after'=> false, |
|
| 34 | - 'label_class'=> '', |
|
| 35 | - 'label_type' => '', // sets the label type, default: hidden. Options: hidden, top, horizontal, floating |
|
| 36 | - 'help_text' => '', |
|
| 37 | - 'validation_text' => '', |
|
| 38 | - 'validation_pattern' => '', |
|
| 39 | - 'no_wrap' => false, |
|
| 40 | - 'input_group_right' => '', |
|
| 41 | - 'input_group_left' => '', |
|
| 42 | - 'input_group_right_inside' => false, // forces the input group inside the input |
|
| 43 | - 'input_group_left_inside' => false, // forces the input group inside the input |
|
| 44 | - 'step' => '', |
|
| 45 | - 'switch' => false, // to show checkbox as a switch |
|
| 46 | - 'checked' => false, // set a checkbox or radio as selected |
|
| 47 | - 'password_toggle' => true, // toggle view/hide password |
|
| 48 | - 'element_require' => '', // [%element_id%] == "1" |
|
| 49 | - 'extra_attributes' => array(), // an array of extra attributes |
|
| 50 | - 'wrap_attributes' => array() |
|
| 51 | - ); |
|
| 52 | - |
|
| 53 | - /** |
|
| 54 | - * Parse incoming $args into an array and merge it with $defaults |
|
| 55 | - */ |
|
| 56 | - $args = wp_parse_args( $args, $defaults ); |
|
| 57 | - $output = ''; |
|
| 58 | - if ( ! empty( $args['type'] ) ) { |
|
| 59 | - // hidden label option needs to be empty |
|
| 60 | - $args['label_type'] = $args['label_type'] == 'hidden' ? '' : $args['label_type']; |
|
| 61 | - |
|
| 62 | - $type = sanitize_html_class( $args['type'] ); |
|
| 63 | - |
|
| 64 | - $help_text = ''; |
|
| 65 | - $label = ''; |
|
| 66 | - $label_after = $args['label_after']; |
|
| 67 | - $label_args = array( |
|
| 68 | - 'title'=> $args['label'], |
|
| 69 | - 'for'=> $args['id'], |
|
| 70 | - 'class' => $args['label_class']." ", |
|
| 71 | - 'label_type' => $args['label_type'] |
|
| 72 | - ); |
|
| 73 | - |
|
| 74 | - // floating labels need label after |
|
| 75 | - if( $args['label_type'] == 'floating' && $type != 'checkbox' ){ |
|
| 76 | - $label_after = true; |
|
| 77 | - $args['placeholder'] = ' '; // set the placeholder not empty so the floating label works. |
|
| 78 | - } |
|
| 79 | - |
|
| 80 | - // Some special sauce for files |
|
| 81 | - if($type=='file' ){ |
|
| 82 | - $label_after = true; // if type file we need the label after |
|
| 83 | - $args['class'] .= ' custom-file-input '; |
|
| 84 | - }elseif($type=='checkbox'){ |
|
| 85 | - $label_after = true; // if type file we need the label after |
|
| 86 | - $args['class'] .= ' custom-control-input '; |
|
| 87 | - }elseif($type=='datepicker' || $type=='timepicker'){ |
|
| 88 | - $type = 'text'; |
|
| 89 | - //$args['class'] .= ' aui-flatpickr bg-initial '; |
|
| 90 | - $args['class'] .= ' bg-initial '; |
|
| 91 | - |
|
| 92 | - $args['extra_attributes']['data-aui-init'] = 'flatpickr'; |
|
| 93 | - // enqueue the script |
|
| 94 | - $aui_settings = AyeCode_UI_Settings::instance(); |
|
| 95 | - $aui_settings->enqueue_flatpickr(); |
|
| 96 | - } |
|
| 97 | - |
|
| 98 | - |
|
| 99 | - // open/type |
|
| 100 | - $output .= '<input type="' . $type . '" '; |
|
| 101 | - |
|
| 102 | - // name |
|
| 103 | - if(!empty($args['name'])){ |
|
| 104 | - $output .= ' name="'.esc_attr($args['name']).'" '; |
|
| 105 | - } |
|
| 106 | - |
|
| 107 | - // id |
|
| 108 | - if(!empty($args['id'])){ |
|
| 109 | - $output .= ' id="'.sanitize_html_class($args['id']).'" '; |
|
| 110 | - } |
|
| 111 | - |
|
| 112 | - // placeholder |
|
| 113 | - if(isset($args['placeholder']) && '' != $args['placeholder'] ){ |
|
| 114 | - $output .= ' placeholder="'.esc_attr($args['placeholder']).'" '; |
|
| 115 | - } |
|
| 116 | - |
|
| 117 | - // title |
|
| 118 | - if(!empty($args['title'])){ |
|
| 119 | - $output .= ' title="'.esc_attr($args['title']).'" '; |
|
| 120 | - } |
|
| 121 | - |
|
| 122 | - // value |
|
| 123 | - if(!empty($args['value'])){ |
|
| 124 | - $output .= AUI_Component_Helper::value($args['value']); |
|
| 125 | - } |
|
| 126 | - |
|
| 127 | - // checked, for radio and checkboxes |
|
| 128 | - if( ( $type == 'checkbox' || $type == 'radio' ) && $args['checked'] ){ |
|
| 129 | - $output .= ' checked '; |
|
| 130 | - } |
|
| 131 | - |
|
| 132 | - // validation text |
|
| 133 | - if(!empty($args['validation_text'])){ |
|
| 134 | - $output .= ' oninvalid="setCustomValidity(\''.esc_attr($args['validation_text']).'\')" '; |
|
| 135 | - $output .= ' onchange="try{setCustomValidity(\'\')}catch(e){}" '; |
|
| 136 | - } |
|
| 137 | - |
|
| 138 | - // validation_pattern |
|
| 139 | - if(!empty($args['validation_pattern'])){ |
|
| 140 | - $output .= ' pattern="' . esc_attr( $args['validation_pattern'] ) . '" '; |
|
| 141 | - } |
|
| 142 | - |
|
| 143 | - // step (for numbers) |
|
| 144 | - if(!empty($args['step'])){ |
|
| 145 | - $output .= ' step="'.$args['step'].'" '; |
|
| 146 | - } |
|
| 147 | - |
|
| 148 | - // required |
|
| 149 | - if(!empty($args['required'])){ |
|
| 150 | - $output .= ' required '; |
|
| 151 | - } |
|
| 152 | - |
|
| 153 | - // class |
|
| 154 | - $class = !empty($args['class']) ? AUI_Component_Helper::esc_classes( $args['class'] ) : ''; |
|
| 155 | - $output .= ' class="form-control '.$class.'" '; |
|
| 156 | - |
|
| 157 | - // data-attributes |
|
| 158 | - $output .= AUI_Component_Helper::data_attributes($args); |
|
| 159 | - |
|
| 160 | - // extra attributes |
|
| 161 | - if(!empty($args['extra_attributes'])){ |
|
| 162 | - $output .= AUI_Component_Helper::extra_attributes($args['extra_attributes']); |
|
| 163 | - } |
|
| 164 | - |
|
| 165 | - // close |
|
| 166 | - $output .= ' >'; |
|
| 167 | - |
|
| 168 | - |
|
| 169 | - // label |
|
| 170 | - if(!empty($args['label'])){ |
|
| 171 | - if($type == 'file'){$label_args['class'] .= 'custom-file-label';} |
|
| 172 | - elseif($type == 'checkbox'){$label_args['class'] .= 'custom-control-label';} |
|
| 173 | - $label = self::label( $label_args, $type ); |
|
| 174 | - } |
|
| 175 | - |
|
| 176 | - // help text |
|
| 177 | - if(!empty($args['help_text'])){ |
|
| 178 | - $help_text = AUI_Component_Helper::help_text($args['help_text']); |
|
| 179 | - } |
|
| 180 | - |
|
| 181 | - |
|
| 182 | - // set help text in the correct possition |
|
| 183 | - if($label_after){ |
|
| 184 | - $output .= $label . $help_text; |
|
| 185 | - } |
|
| 186 | - |
|
| 187 | - // some input types need a separate wrap |
|
| 188 | - if($type == 'file') { |
|
| 189 | - $output = self::wrap( array( |
|
| 190 | - 'content' => $output, |
|
| 191 | - 'class' => 'form-group custom-file' |
|
| 192 | - ) ); |
|
| 193 | - }elseif($type == 'checkbox'){ |
|
| 194 | - $wrap_class = $args['switch'] ? 'custom-switch' : 'custom-checkbox'; |
|
| 195 | - $output = self::wrap( array( |
|
| 196 | - 'content' => $output, |
|
| 197 | - 'class' => 'custom-control '.$wrap_class |
|
| 198 | - ) ); |
|
| 199 | - |
|
| 200 | - if($args['label_type']=='horizontal'){ |
|
| 201 | - $output = '<div class="col-sm-2 col-form-label"></div><div class="col-sm-10">' . $output . '</div>'; |
|
| 202 | - } |
|
| 203 | - }elseif($type == 'password' && $args['password_toggle'] && !$args['input_group_right']){ |
|
| 204 | - |
|
| 205 | - |
|
| 206 | - // allow password field to toggle view |
|
| 207 | - $args['input_group_right'] = '<span class="input-group-text c-pointer px-3" |
|
| 14 | + /** |
|
| 15 | + * Build the component. |
|
| 16 | + * |
|
| 17 | + * @param array $args |
|
| 18 | + * |
|
| 19 | + * @return string The rendered component. |
|
| 20 | + */ |
|
| 21 | + public static function input($args = array()){ |
|
| 22 | + $defaults = array( |
|
| 23 | + 'type' => 'text', |
|
| 24 | + 'name' => '', |
|
| 25 | + 'class' => '', |
|
| 26 | + 'wrap_class' => '', |
|
| 27 | + 'id' => '', |
|
| 28 | + 'placeholder'=> '', |
|
| 29 | + 'title' => '', |
|
| 30 | + 'value' => '', |
|
| 31 | + 'required' => false, |
|
| 32 | + 'label' => '', |
|
| 33 | + 'label_after'=> false, |
|
| 34 | + 'label_class'=> '', |
|
| 35 | + 'label_type' => '', // sets the label type, default: hidden. Options: hidden, top, horizontal, floating |
|
| 36 | + 'help_text' => '', |
|
| 37 | + 'validation_text' => '', |
|
| 38 | + 'validation_pattern' => '', |
|
| 39 | + 'no_wrap' => false, |
|
| 40 | + 'input_group_right' => '', |
|
| 41 | + 'input_group_left' => '', |
|
| 42 | + 'input_group_right_inside' => false, // forces the input group inside the input |
|
| 43 | + 'input_group_left_inside' => false, // forces the input group inside the input |
|
| 44 | + 'step' => '', |
|
| 45 | + 'switch' => false, // to show checkbox as a switch |
|
| 46 | + 'checked' => false, // set a checkbox or radio as selected |
|
| 47 | + 'password_toggle' => true, // toggle view/hide password |
|
| 48 | + 'element_require' => '', // [%element_id%] == "1" |
|
| 49 | + 'extra_attributes' => array(), // an array of extra attributes |
|
| 50 | + 'wrap_attributes' => array() |
|
| 51 | + ); |
|
| 52 | + |
|
| 53 | + /** |
|
| 54 | + * Parse incoming $args into an array and merge it with $defaults |
|
| 55 | + */ |
|
| 56 | + $args = wp_parse_args( $args, $defaults ); |
|
| 57 | + $output = ''; |
|
| 58 | + if ( ! empty( $args['type'] ) ) { |
|
| 59 | + // hidden label option needs to be empty |
|
| 60 | + $args['label_type'] = $args['label_type'] == 'hidden' ? '' : $args['label_type']; |
|
| 61 | + |
|
| 62 | + $type = sanitize_html_class( $args['type'] ); |
|
| 63 | + |
|
| 64 | + $help_text = ''; |
|
| 65 | + $label = ''; |
|
| 66 | + $label_after = $args['label_after']; |
|
| 67 | + $label_args = array( |
|
| 68 | + 'title'=> $args['label'], |
|
| 69 | + 'for'=> $args['id'], |
|
| 70 | + 'class' => $args['label_class']." ", |
|
| 71 | + 'label_type' => $args['label_type'] |
|
| 72 | + ); |
|
| 73 | + |
|
| 74 | + // floating labels need label after |
|
| 75 | + if( $args['label_type'] == 'floating' && $type != 'checkbox' ){ |
|
| 76 | + $label_after = true; |
|
| 77 | + $args['placeholder'] = ' '; // set the placeholder not empty so the floating label works. |
|
| 78 | + } |
|
| 79 | + |
|
| 80 | + // Some special sauce for files |
|
| 81 | + if($type=='file' ){ |
|
| 82 | + $label_after = true; // if type file we need the label after |
|
| 83 | + $args['class'] .= ' custom-file-input '; |
|
| 84 | + }elseif($type=='checkbox'){ |
|
| 85 | + $label_after = true; // if type file we need the label after |
|
| 86 | + $args['class'] .= ' custom-control-input '; |
|
| 87 | + }elseif($type=='datepicker' || $type=='timepicker'){ |
|
| 88 | + $type = 'text'; |
|
| 89 | + //$args['class'] .= ' aui-flatpickr bg-initial '; |
|
| 90 | + $args['class'] .= ' bg-initial '; |
|
| 91 | + |
|
| 92 | + $args['extra_attributes']['data-aui-init'] = 'flatpickr'; |
|
| 93 | + // enqueue the script |
|
| 94 | + $aui_settings = AyeCode_UI_Settings::instance(); |
|
| 95 | + $aui_settings->enqueue_flatpickr(); |
|
| 96 | + } |
|
| 97 | + |
|
| 98 | + |
|
| 99 | + // open/type |
|
| 100 | + $output .= '<input type="' . $type . '" '; |
|
| 101 | + |
|
| 102 | + // name |
|
| 103 | + if(!empty($args['name'])){ |
|
| 104 | + $output .= ' name="'.esc_attr($args['name']).'" '; |
|
| 105 | + } |
|
| 106 | + |
|
| 107 | + // id |
|
| 108 | + if(!empty($args['id'])){ |
|
| 109 | + $output .= ' id="'.sanitize_html_class($args['id']).'" '; |
|
| 110 | + } |
|
| 111 | + |
|
| 112 | + // placeholder |
|
| 113 | + if(isset($args['placeholder']) && '' != $args['placeholder'] ){ |
|
| 114 | + $output .= ' placeholder="'.esc_attr($args['placeholder']).'" '; |
|
| 115 | + } |
|
| 116 | + |
|
| 117 | + // title |
|
| 118 | + if(!empty($args['title'])){ |
|
| 119 | + $output .= ' title="'.esc_attr($args['title']).'" '; |
|
| 120 | + } |
|
| 121 | + |
|
| 122 | + // value |
|
| 123 | + if(!empty($args['value'])){ |
|
| 124 | + $output .= AUI_Component_Helper::value($args['value']); |
|
| 125 | + } |
|
| 126 | + |
|
| 127 | + // checked, for radio and checkboxes |
|
| 128 | + if( ( $type == 'checkbox' || $type == 'radio' ) && $args['checked'] ){ |
|
| 129 | + $output .= ' checked '; |
|
| 130 | + } |
|
| 131 | + |
|
| 132 | + // validation text |
|
| 133 | + if(!empty($args['validation_text'])){ |
|
| 134 | + $output .= ' oninvalid="setCustomValidity(\''.esc_attr($args['validation_text']).'\')" '; |
|
| 135 | + $output .= ' onchange="try{setCustomValidity(\'\')}catch(e){}" '; |
|
| 136 | + } |
|
| 137 | + |
|
| 138 | + // validation_pattern |
|
| 139 | + if(!empty($args['validation_pattern'])){ |
|
| 140 | + $output .= ' pattern="' . esc_attr( $args['validation_pattern'] ) . '" '; |
|
| 141 | + } |
|
| 142 | + |
|
| 143 | + // step (for numbers) |
|
| 144 | + if(!empty($args['step'])){ |
|
| 145 | + $output .= ' step="'.$args['step'].'" '; |
|
| 146 | + } |
|
| 147 | + |
|
| 148 | + // required |
|
| 149 | + if(!empty($args['required'])){ |
|
| 150 | + $output .= ' required '; |
|
| 151 | + } |
|
| 152 | + |
|
| 153 | + // class |
|
| 154 | + $class = !empty($args['class']) ? AUI_Component_Helper::esc_classes( $args['class'] ) : ''; |
|
| 155 | + $output .= ' class="form-control '.$class.'" '; |
|
| 156 | + |
|
| 157 | + // data-attributes |
|
| 158 | + $output .= AUI_Component_Helper::data_attributes($args); |
|
| 159 | + |
|
| 160 | + // extra attributes |
|
| 161 | + if(!empty($args['extra_attributes'])){ |
|
| 162 | + $output .= AUI_Component_Helper::extra_attributes($args['extra_attributes']); |
|
| 163 | + } |
|
| 164 | + |
|
| 165 | + // close |
|
| 166 | + $output .= ' >'; |
|
| 167 | + |
|
| 168 | + |
|
| 169 | + // label |
|
| 170 | + if(!empty($args['label'])){ |
|
| 171 | + if($type == 'file'){$label_args['class'] .= 'custom-file-label';} |
|
| 172 | + elseif($type == 'checkbox'){$label_args['class'] .= 'custom-control-label';} |
|
| 173 | + $label = self::label( $label_args, $type ); |
|
| 174 | + } |
|
| 175 | + |
|
| 176 | + // help text |
|
| 177 | + if(!empty($args['help_text'])){ |
|
| 178 | + $help_text = AUI_Component_Helper::help_text($args['help_text']); |
|
| 179 | + } |
|
| 180 | + |
|
| 181 | + |
|
| 182 | + // set help text in the correct possition |
|
| 183 | + if($label_after){ |
|
| 184 | + $output .= $label . $help_text; |
|
| 185 | + } |
|
| 186 | + |
|
| 187 | + // some input types need a separate wrap |
|
| 188 | + if($type == 'file') { |
|
| 189 | + $output = self::wrap( array( |
|
| 190 | + 'content' => $output, |
|
| 191 | + 'class' => 'form-group custom-file' |
|
| 192 | + ) ); |
|
| 193 | + }elseif($type == 'checkbox'){ |
|
| 194 | + $wrap_class = $args['switch'] ? 'custom-switch' : 'custom-checkbox'; |
|
| 195 | + $output = self::wrap( array( |
|
| 196 | + 'content' => $output, |
|
| 197 | + 'class' => 'custom-control '.$wrap_class |
|
| 198 | + ) ); |
|
| 199 | + |
|
| 200 | + if($args['label_type']=='horizontal'){ |
|
| 201 | + $output = '<div class="col-sm-2 col-form-label"></div><div class="col-sm-10">' . $output . '</div>'; |
|
| 202 | + } |
|
| 203 | + }elseif($type == 'password' && $args['password_toggle'] && !$args['input_group_right']){ |
|
| 204 | + |
|
| 205 | + |
|
| 206 | + // allow password field to toggle view |
|
| 207 | + $args['input_group_right'] = '<span class="input-group-text c-pointer px-3" |
|
| 208 | 208 | onclick="var $el = jQuery(this).find(\'i\');$el.toggleClass(\'fa-eye fa-eye-slash\'); |
| 209 | 209 | var $eli = jQuery(this).parent().parent().find(\'input\'); |
| 210 | 210 | if($el.hasClass(\'fa-eye\')) |
| 211 | 211 | {$eli.attr(\'type\',\'text\');} |
| 212 | 212 | else{$eli.attr(\'type\',\'password\');}" |
| 213 | 213 | ><i class="far fa-fw fa-eye-slash"></i></span>'; |
| 214 | - } |
|
| 215 | - |
|
| 216 | - // input group wraps |
|
| 217 | - if($args['input_group_left'] || $args['input_group_right']){ |
|
| 218 | - $w100 = strpos($args['class'], 'w-100') !== false ? ' w-100' : ''; |
|
| 219 | - if($args['input_group_left']){ |
|
| 220 | - $output = self::wrap( array( |
|
| 221 | - 'content' => $output, |
|
| 222 | - 'class' => $args['input_group_left_inside'] ? 'input-group-inside position-relative'.$w100 : 'input-group', |
|
| 223 | - 'input_group_left' => $args['input_group_left'], |
|
| 224 | - 'input_group_left_inside' => $args['input_group_left_inside'] |
|
| 225 | - ) ); |
|
| 226 | - } |
|
| 227 | - if($args['input_group_right']){ |
|
| 228 | - $output = self::wrap( array( |
|
| 229 | - 'content' => $output, |
|
| 230 | - 'class' => $args['input_group_right_inside'] ? 'input-group-inside position-relative'.$w100 : 'input-group', |
|
| 231 | - 'input_group_right' => $args['input_group_right'], |
|
| 232 | - 'input_group_right_inside' => $args['input_group_right_inside'] |
|
| 233 | - ) ); |
|
| 234 | - } |
|
| 235 | - |
|
| 236 | - } |
|
| 237 | - |
|
| 238 | - if(!$label_after){ |
|
| 239 | - $output .= $help_text; |
|
| 240 | - } |
|
| 241 | - |
|
| 242 | - |
|
| 243 | - if($args['label_type']=='horizontal' && $type != 'checkbox'){ |
|
| 244 | - $output = self::wrap( array( |
|
| 245 | - 'content' => $output, |
|
| 246 | - 'class' => 'col-sm-10', |
|
| 247 | - ) ); |
|
| 248 | - } |
|
| 249 | - |
|
| 250 | - if(!$label_after){ |
|
| 251 | - $output = $label . $output; |
|
| 252 | - } |
|
| 253 | - |
|
| 254 | - // wrap |
|
| 255 | - if ( ! $args['no_wrap'] ) { |
|
| 256 | - $form_group_class = $args['label_type']=='floating' && $type != 'checkbox' ? 'form-label-group' : 'form-group'; |
|
| 257 | - $wrap_class = $args['label_type']=='horizontal' ? $form_group_class . ' row' : $form_group_class; |
|
| 258 | - $wrap_class = !empty($args['wrap_class']) ? $wrap_class." ".$args['wrap_class'] : $wrap_class; |
|
| 259 | - $output = self::wrap(array( |
|
| 260 | - 'content' => $output, |
|
| 261 | - 'class' => $wrap_class, |
|
| 262 | - 'element_require' => $args['element_require'], |
|
| 263 | - 'argument_id' => $args['id'], |
|
| 264 | - 'wrap_attributes' => $args['wrap_attributes'], |
|
| 265 | - )); |
|
| 266 | - } |
|
| 267 | - } |
|
| 268 | - |
|
| 269 | - return $output; |
|
| 270 | - } |
|
| 271 | - |
|
| 272 | - /** |
|
| 273 | - * Build the component. |
|
| 274 | - * |
|
| 275 | - * @param array $args |
|
| 276 | - * |
|
| 277 | - * @return string The rendered component. |
|
| 278 | - */ |
|
| 279 | - public static function textarea($args = array()){ |
|
| 280 | - $defaults = array( |
|
| 281 | - 'name' => '', |
|
| 282 | - 'class' => '', |
|
| 283 | - 'wrap_class' => '', |
|
| 284 | - 'id' => '', |
|
| 285 | - 'placeholder'=> '', |
|
| 286 | - 'title' => '', |
|
| 287 | - 'value' => '', |
|
| 288 | - 'required' => false, |
|
| 289 | - 'label' => '', |
|
| 290 | - 'label_after'=> false, |
|
| 291 | - 'label_class' => '', |
|
| 292 | - 'label_type' => '', // sets the label type, default: hidden. Options: hidden, top, horizontal, floating |
|
| 293 | - 'help_text' => '', |
|
| 294 | - 'validation_text' => '', |
|
| 295 | - 'validation_pattern' => '', |
|
| 296 | - 'no_wrap' => false, |
|
| 297 | - 'rows' => '', |
|
| 298 | - 'wysiwyg' => false, |
|
| 299 | - 'allow_tags' => false, // Allow HTML tags |
|
| 300 | - 'element_require' => '', // [%element_id%] == "1" |
|
| 301 | - 'extra_attributes' => array(), // an array of extra attributes |
|
| 302 | - 'wrap_attributes' => array(), |
|
| 303 | - ); |
|
| 304 | - |
|
| 305 | - /** |
|
| 306 | - * Parse incoming $args into an array and merge it with $defaults |
|
| 307 | - */ |
|
| 308 | - $args = wp_parse_args( $args, $defaults ); |
|
| 309 | - $output = ''; |
|
| 310 | - |
|
| 311 | - // hidden label option needs to be empty |
|
| 312 | - $args['label_type'] = $args['label_type'] == 'hidden' ? '' : $args['label_type']; |
|
| 313 | - |
|
| 314 | - // floating labels don't work with wysiwyg so set it as top |
|
| 315 | - if($args['label_type'] == 'floating' && !empty($args['wysiwyg'])){ |
|
| 316 | - $args['label_type'] = 'top'; |
|
| 317 | - } |
|
| 318 | - |
|
| 319 | - $label_after = $args['label_after']; |
|
| 320 | - |
|
| 321 | - // floating labels need label after |
|
| 322 | - if( $args['label_type'] == 'floating' && empty($args['wysiwyg']) ){ |
|
| 323 | - $label_after = true; |
|
| 324 | - $args['placeholder'] = ' '; // set the placeholder not empty so the floating label works. |
|
| 325 | - } |
|
| 326 | - |
|
| 327 | - // label |
|
| 328 | - if(!empty($args['label']) && is_array($args['label'])){ |
|
| 329 | - }elseif(!empty($args['label']) && !$label_after){ |
|
| 330 | - $label_args = array( |
|
| 331 | - 'title'=> $args['label'], |
|
| 332 | - 'for'=> $args['id'], |
|
| 333 | - 'class' => $args['label_class']." ", |
|
| 334 | - 'label_type' => $args['label_type'] |
|
| 335 | - ); |
|
| 336 | - $output .= self::label( $label_args ); |
|
| 337 | - } |
|
| 338 | - |
|
| 339 | - // maybe horizontal label |
|
| 340 | - if($args['label_type']=='horizontal'){ |
|
| 341 | - $output .= '<div class="col-sm-10">'; |
|
| 342 | - } |
|
| 343 | - |
|
| 344 | - if(!empty($args['wysiwyg'])){ |
|
| 345 | - ob_start(); |
|
| 346 | - $content = $args['value']; |
|
| 347 | - $editor_id = !empty($args['id']) ? sanitize_html_class($args['id']) : 'wp_editor'; |
|
| 348 | - $settings = array( |
|
| 349 | - 'textarea_rows' => !empty(absint($args['rows'])) ? absint($args['rows']) : 4, |
|
| 350 | - 'quicktags' => false, |
|
| 351 | - 'media_buttons' => false, |
|
| 352 | - 'editor_class' => 'form-control', |
|
| 353 | - 'textarea_name' => !empty($args['name']) ? sanitize_html_class($args['name']) : sanitize_html_class($args['id']), |
|
| 354 | - 'teeny' => true, |
|
| 355 | - ); |
|
| 356 | - |
|
| 357 | - // maybe set settings if array |
|
| 358 | - if(is_array($args['wysiwyg'])){ |
|
| 359 | - $settings = wp_parse_args( $args['wysiwyg'], $settings ); |
|
| 360 | - } |
|
| 361 | - |
|
| 362 | - wp_editor( $content, $editor_id, $settings ); |
|
| 363 | - $output .= ob_get_clean(); |
|
| 364 | - }else{ |
|
| 365 | - |
|
| 366 | - // open |
|
| 367 | - $output .= '<textarea '; |
|
| 368 | - |
|
| 369 | - // name |
|
| 370 | - if(!empty($args['name'])){ |
|
| 371 | - $output .= ' name="'.esc_attr($args['name']).'" '; |
|
| 372 | - } |
|
| 373 | - |
|
| 374 | - // id |
|
| 375 | - if(!empty($args['id'])){ |
|
| 376 | - $output .= ' id="'.sanitize_html_class($args['id']).'" '; |
|
| 377 | - } |
|
| 378 | - |
|
| 379 | - // placeholder |
|
| 380 | - if(isset($args['placeholder']) && '' != $args['placeholder']){ |
|
| 381 | - $output .= ' placeholder="'.esc_attr($args['placeholder']).'" '; |
|
| 382 | - } |
|
| 383 | - |
|
| 384 | - // title |
|
| 385 | - if(!empty($args['title'])){ |
|
| 386 | - $output .= ' title="'.esc_attr($args['title']).'" '; |
|
| 387 | - } |
|
| 388 | - |
|
| 389 | - // validation text |
|
| 390 | - if(!empty($args['validation_text'])){ |
|
| 391 | - $output .= ' oninvalid="setCustomValidity(\''.esc_attr($args['validation_text']).'\')" '; |
|
| 392 | - $output .= ' onchange="try{setCustomValidity(\'\')}catch(e){}" '; |
|
| 393 | - } |
|
| 394 | - |
|
| 395 | - // validation_pattern |
|
| 396 | - if(!empty($args['validation_pattern'])){ |
|
| 397 | - $output .= ' pattern="' . esc_attr( $args['validation_pattern'] ) . '" '; |
|
| 398 | - } |
|
| 399 | - |
|
| 400 | - // required |
|
| 401 | - if(!empty($args['required'])){ |
|
| 402 | - $output .= ' required '; |
|
| 403 | - } |
|
| 404 | - |
|
| 405 | - // rows |
|
| 406 | - if(!empty($args['rows'])){ |
|
| 407 | - $output .= ' rows="'.absint($args['rows']).'" '; |
|
| 408 | - } |
|
| 409 | - |
|
| 410 | - |
|
| 411 | - // class |
|
| 412 | - $class = !empty($args['class']) ? $args['class'] : ''; |
|
| 413 | - $output .= ' class="form-control '.$class.'" '; |
|
| 414 | - |
|
| 415 | - // extra attributes |
|
| 416 | - if(!empty($args['extra_attributes'])){ |
|
| 417 | - $output .= AUI_Component_Helper::extra_attributes($args['extra_attributes']); |
|
| 418 | - } |
|
| 419 | - |
|
| 420 | - // close tag |
|
| 421 | - $output .= ' >'; |
|
| 422 | - |
|
| 423 | - // value |
|
| 424 | - if ( ! empty( $args['value'] ) ) { |
|
| 425 | - if ( ! empty( $args['allow_tags'] ) ) { |
|
| 426 | - $output .= AUI_Component_Helper::sanitize_html_field( $args['value'], $args ); // Sanitize HTML. |
|
| 427 | - } else { |
|
| 428 | - $output .= sanitize_textarea_field( $args['value'] ); |
|
| 429 | - } |
|
| 430 | - } |
|
| 431 | - |
|
| 432 | - // closing tag |
|
| 433 | - $output .= '</textarea>'; |
|
| 434 | - |
|
| 435 | - } |
|
| 436 | - |
|
| 437 | - if(!empty($args['label']) && $label_after){ |
|
| 438 | - $label_args = array( |
|
| 439 | - 'title'=> $args['label'], |
|
| 440 | - 'for'=> $args['id'], |
|
| 441 | - 'class' => $args['label_class']." ", |
|
| 442 | - 'label_type' => $args['label_type'] |
|
| 443 | - ); |
|
| 444 | - $output .= self::label( $label_args ); |
|
| 445 | - } |
|
| 446 | - |
|
| 447 | - // help text |
|
| 448 | - if(!empty($args['help_text'])){ |
|
| 449 | - $output .= AUI_Component_Helper::help_text($args['help_text']); |
|
| 450 | - } |
|
| 451 | - |
|
| 452 | - // maybe horizontal label |
|
| 453 | - if($args['label_type']=='horizontal'){ |
|
| 454 | - $output .= '</div>'; |
|
| 455 | - } |
|
| 456 | - |
|
| 457 | - |
|
| 458 | - // wrap |
|
| 459 | - if(!$args['no_wrap']){ |
|
| 460 | - $form_group_class = $args['label_type']=='floating' ? 'form-label-group' : 'form-group'; |
|
| 461 | - $wrap_class = $args['label_type']=='horizontal' ? $form_group_class . ' row' : $form_group_class; |
|
| 462 | - $wrap_class = !empty($args['wrap_class']) ? $wrap_class." ".$args['wrap_class'] : $wrap_class; |
|
| 463 | - $output = self::wrap(array( |
|
| 464 | - 'content' => $output, |
|
| 465 | - 'class' => $wrap_class, |
|
| 466 | - 'element_require' => $args['element_require'], |
|
| 467 | - 'argument_id' => $args['id'], |
|
| 468 | - 'wrap_attributes' => $args['wrap_attributes'], |
|
| 469 | - )); |
|
| 470 | - } |
|
| 471 | - |
|
| 472 | - |
|
| 473 | - return $output; |
|
| 474 | - } |
|
| 475 | - |
|
| 476 | - public static function label($args = array(), $type = ''){ |
|
| 477 | - //<label for="exampleInputEmail1">Email address</label> |
|
| 478 | - $defaults = array( |
|
| 479 | - 'title' => 'div', |
|
| 480 | - 'for' => '', |
|
| 481 | - 'class' => '', |
|
| 482 | - 'label_type' => '', // empty = hidden, top, horizontal |
|
| 483 | - ); |
|
| 484 | - |
|
| 485 | - /** |
|
| 486 | - * Parse incoming $args into an array and merge it with $defaults |
|
| 487 | - */ |
|
| 488 | - $args = wp_parse_args( $args, $defaults ); |
|
| 489 | - $output = ''; |
|
| 490 | - |
|
| 491 | - if($args['title']){ |
|
| 492 | - |
|
| 493 | - // maybe hide labels //@todo set a global option for visibility class |
|
| 494 | - if($type == 'file' || $type == 'checkbox' || $type == 'radio' || !empty($args['label_type']) ){ |
|
| 495 | - $class = $args['class']; |
|
| 496 | - }else{ |
|
| 497 | - $class = 'sr-only '.$args['class']; |
|
| 498 | - } |
|
| 499 | - |
|
| 500 | - // maybe horizontal |
|
| 501 | - if($args['label_type']=='horizontal' && $type != 'checkbox'){ |
|
| 502 | - $class .= ' col-sm-2 col-form-label'; |
|
| 503 | - } |
|
| 504 | - |
|
| 505 | - // open |
|
| 506 | - $output .= '<label '; |
|
| 507 | - |
|
| 508 | - // for |
|
| 509 | - if(!empty($args['for'])){ |
|
| 510 | - $output .= ' for="'.esc_attr($args['for']).'" '; |
|
| 511 | - } |
|
| 512 | - |
|
| 513 | - // class |
|
| 514 | - $class = $class ? AUI_Component_Helper::esc_classes( $class ) : ''; |
|
| 515 | - $output .= ' class="'.$class.'" '; |
|
| 516 | - |
|
| 517 | - // close |
|
| 518 | - $output .= '>'; |
|
| 519 | - |
|
| 520 | - |
|
| 521 | - // title, don't escape fully as can contain html |
|
| 522 | - if(!empty($args['title'])){ |
|
| 523 | - $output .= wp_kses_post($args['title']); |
|
| 524 | - } |
|
| 525 | - |
|
| 526 | - // close wrap |
|
| 527 | - $output .= '</label>'; |
|
| 528 | - |
|
| 529 | - |
|
| 530 | - } |
|
| 531 | - |
|
| 532 | - |
|
| 533 | - return $output; |
|
| 534 | - } |
|
| 535 | - |
|
| 536 | - /** |
|
| 537 | - * Wrap some content in a HTML wrapper. |
|
| 538 | - * |
|
| 539 | - * @param array $args |
|
| 540 | - * |
|
| 541 | - * @return string |
|
| 542 | - */ |
|
| 543 | - public static function wrap($args = array()){ |
|
| 544 | - $defaults = array( |
|
| 545 | - 'type' => 'div', |
|
| 546 | - 'class' => 'form-group', |
|
| 547 | - 'content' => '', |
|
| 548 | - 'input_group_left' => '', |
|
| 549 | - 'input_group_right' => '', |
|
| 550 | - 'input_group_left_inside' => false, |
|
| 551 | - 'input_group_right_inside' => false, |
|
| 552 | - 'element_require' => '', |
|
| 553 | - 'argument_id' => '', |
|
| 554 | - 'wrap_attributes' => array() |
|
| 555 | - ); |
|
| 556 | - |
|
| 557 | - /** |
|
| 558 | - * Parse incoming $args into an array and merge it with $defaults |
|
| 559 | - */ |
|
| 560 | - $args = wp_parse_args( $args, $defaults ); |
|
| 561 | - $output = ''; |
|
| 562 | - if($args['type']){ |
|
| 563 | - |
|
| 564 | - // open |
|
| 565 | - $output .= '<'.sanitize_html_class($args['type']); |
|
| 566 | - |
|
| 567 | - // element require |
|
| 568 | - if(!empty($args['element_require'])){ |
|
| 569 | - $output .= AUI_Component_Helper::element_require($args['element_require']); |
|
| 570 | - $args['class'] .= " aui-conditional-field"; |
|
| 571 | - } |
|
| 572 | - |
|
| 573 | - // argument_id |
|
| 574 | - if( !empty($args['argument_id']) ){ |
|
| 575 | - $output .= ' data-argument="'.esc_attr($args['argument_id']).'"'; |
|
| 576 | - } |
|
| 577 | - |
|
| 578 | - // class |
|
| 579 | - $class = !empty($args['class']) ? AUI_Component_Helper::esc_classes( $args['class'] ) : ''; |
|
| 580 | - $output .= ' class="'.$class.'" '; |
|
| 581 | - |
|
| 582 | - // Attributes |
|
| 583 | - if ( ! empty( $args['wrap_attributes'] ) ) { |
|
| 584 | - $output .= AUI_Component_Helper::extra_attributes( $args['wrap_attributes'] ); |
|
| 585 | - } |
|
| 586 | - |
|
| 587 | - // close wrap |
|
| 588 | - $output .= ' >'; |
|
| 589 | - |
|
| 590 | - |
|
| 591 | - // Input group left |
|
| 592 | - if(!empty($args['input_group_left'])){ |
|
| 593 | - $position_class = !empty($args['input_group_left_inside']) ? 'position-absolute h-100' : ''; |
|
| 594 | - $input_group_left = strpos($args['input_group_left'], '<') !== false ? $args['input_group_left'] : '<span class="input-group-text">'.$args['input_group_left'].'</span>'; |
|
| 595 | - $output .= '<div class="input-group-prepend '.$position_class.'">'.$input_group_left.'</div>'; |
|
| 596 | - } |
|
| 597 | - |
|
| 598 | - // content |
|
| 599 | - $output .= $args['content']; |
|
| 600 | - |
|
| 601 | - // Input group right |
|
| 602 | - if(!empty($args['input_group_right'])){ |
|
| 603 | - $position_class = !empty($args['input_group_left_inside']) ? 'position-absolute h-100' : ''; |
|
| 604 | - $input_group_right = strpos($args['input_group_right'], '<') !== false ? $args['input_group_right'] : '<span class="input-group-text">'.$args['input_group_right'].'</span>'; |
|
| 605 | - $output .= '<div class="input-group-append '.$position_class.'">'.$input_group_right.'</div>'; |
|
| 606 | - } |
|
| 607 | - |
|
| 608 | - |
|
| 609 | - // close wrap |
|
| 610 | - $output .= '</'.sanitize_html_class($args['type']).'>'; |
|
| 611 | - |
|
| 612 | - |
|
| 613 | - }else{ |
|
| 614 | - $output = $args['content']; |
|
| 615 | - } |
|
| 616 | - |
|
| 617 | - return $output; |
|
| 618 | - } |
|
| 619 | - |
|
| 620 | - /** |
|
| 621 | - * Build the component. |
|
| 622 | - * |
|
| 623 | - * @param array $args |
|
| 624 | - * |
|
| 625 | - * @return string The rendered component. |
|
| 626 | - */ |
|
| 627 | - public static function select($args = array()){ |
|
| 628 | - $defaults = array( |
|
| 629 | - 'class' => '', |
|
| 630 | - 'wrap_class' => '', |
|
| 631 | - 'id' => '', |
|
| 632 | - 'title' => '', |
|
| 633 | - 'value' => '', // can be an array or a string |
|
| 634 | - 'required' => false, |
|
| 635 | - 'label' => '', |
|
| 636 | - 'label_after'=> false, |
|
| 637 | - 'label_type' => '', // sets the label type, default: hidden. Options: hidden, top, horizontal, floating |
|
| 638 | - 'label_class' => '', |
|
| 639 | - 'help_text' => '', |
|
| 640 | - 'placeholder'=> '', |
|
| 641 | - 'options' => array(), // array or string |
|
| 642 | - 'icon' => '', |
|
| 643 | - 'multiple' => false, |
|
| 644 | - 'select2' => false, |
|
| 645 | - 'no_wrap' => false, |
|
| 646 | - 'element_require' => '', // [%element_id%] == "1" |
|
| 647 | - 'extra_attributes' => array(), // an array of extra attributes |
|
| 648 | - 'wrap_attributes' => array(), |
|
| 649 | - ); |
|
| 650 | - |
|
| 651 | - /** |
|
| 652 | - * Parse incoming $args into an array and merge it with $defaults |
|
| 653 | - */ |
|
| 654 | - $args = wp_parse_args( $args, $defaults ); |
|
| 655 | - $output = ''; |
|
| 656 | - |
|
| 657 | - // for now lets hide floating labels |
|
| 658 | - if( $args['label_type'] == 'floating' ){$args['label_type'] = 'hidden';} |
|
| 659 | - |
|
| 660 | - // hidden label option needs to be empty |
|
| 661 | - $args['label_type'] = $args['label_type'] == 'hidden' ? '' : $args['label_type']; |
|
| 662 | - |
|
| 663 | - |
|
| 664 | - $label_after = $args['label_after']; |
|
| 665 | - |
|
| 666 | - // floating labels need label after |
|
| 667 | - if( $args['label_type'] == 'floating' ){ |
|
| 668 | - $label_after = true; |
|
| 669 | - $args['placeholder'] = ' '; // set the placeholder not empty so the floating label works. |
|
| 670 | - } |
|
| 671 | - |
|
| 672 | - // Maybe setup select2 |
|
| 673 | - $is_select2 = false; |
|
| 674 | - if(!empty($args['select2'])){ |
|
| 675 | - $args['class'] .= ' aui-select2'; |
|
| 676 | - $is_select2 = true; |
|
| 677 | - }elseif( strpos($args['class'], 'aui-select2') !== false){ |
|
| 678 | - $is_select2 = true; |
|
| 679 | - } |
|
| 680 | - |
|
| 681 | - // select2 tags |
|
| 682 | - if( !empty($args['select2']) && $args['select2'] === 'tags'){ // triple equals needed here for some reason |
|
| 683 | - $args['data-tags'] = 'true'; |
|
| 684 | - $args['data-token-separators'] = "[',']"; |
|
| 685 | - $args['multiple'] = true; |
|
| 686 | - } |
|
| 687 | - |
|
| 688 | - // select2 placeholder |
|
| 689 | - if($is_select2 && isset($args['placeholder']) && '' != $args['placeholder'] && empty($args['data-placeholder'])){ |
|
| 690 | - $args['data-placeholder'] = esc_attr($args['placeholder']); |
|
| 691 | - $args['data-allow-clear'] = isset($args['data-allow-clear']) ? (bool) $args['data-allow-clear'] : true; |
|
| 692 | - } |
|
| 693 | - |
|
| 694 | - // label |
|
| 695 | - if(!empty($args['label']) && is_array($args['label'])){ |
|
| 696 | - }elseif(!empty($args['label']) && !$label_after){ |
|
| 697 | - $label_args = array( |
|
| 698 | - 'title'=> $args['label'], |
|
| 699 | - 'for'=> $args['id'], |
|
| 700 | - 'class' => $args['label_class']." ", |
|
| 701 | - 'label_type' => $args['label_type'] |
|
| 702 | - ); |
|
| 703 | - $output .= self::label($label_args); |
|
| 704 | - } |
|
| 705 | - |
|
| 706 | - // maybe horizontal label |
|
| 707 | - if($args['label_type']=='horizontal'){ |
|
| 708 | - $output .= '<div class="col-sm-10">'; |
|
| 709 | - } |
|
| 710 | - |
|
| 711 | - // Set hidden input to save empty value for multiselect. |
|
| 712 | - if ( ! empty( $args['multiple'] ) && ! empty( $args['name'] ) ) { |
|
| 713 | - $output .= '<input type="hidden" ' . AUI_Component_Helper::name( $args['name'] ) . ' value=""/>'; |
|
| 714 | - } |
|
| 715 | - |
|
| 716 | - // open/type |
|
| 717 | - $output .= '<select '; |
|
| 718 | - |
|
| 719 | - // style |
|
| 720 | - if($is_select2){ |
|
| 721 | - $output .= " style='width:100%;' "; |
|
| 722 | - } |
|
| 723 | - |
|
| 724 | - // element require |
|
| 725 | - if(!empty($args['element_require'])){ |
|
| 726 | - $output .= AUI_Component_Helper::element_require($args['element_require']); |
|
| 727 | - $args['class'] .= " aui-conditional-field"; |
|
| 728 | - } |
|
| 729 | - |
|
| 730 | - // class |
|
| 731 | - $class = !empty($args['class']) ? $args['class'] : ''; |
|
| 732 | - $output .= AUI_Component_Helper::class_attr('custom-select '.$class); |
|
| 733 | - |
|
| 734 | - // name |
|
| 735 | - if(!empty($args['name'])){ |
|
| 736 | - $output .= AUI_Component_Helper::name($args['name'],$args['multiple']); |
|
| 737 | - } |
|
| 738 | - |
|
| 739 | - // id |
|
| 740 | - if(!empty($args['id'])){ |
|
| 741 | - $output .= AUI_Component_Helper::id($args['id']); |
|
| 742 | - } |
|
| 743 | - |
|
| 744 | - // title |
|
| 745 | - if(!empty($args['title'])){ |
|
| 746 | - $output .= AUI_Component_Helper::title($args['title']); |
|
| 747 | - } |
|
| 748 | - |
|
| 749 | - // data-attributes |
|
| 750 | - $output .= AUI_Component_Helper::data_attributes($args); |
|
| 751 | - |
|
| 752 | - // aria-attributes |
|
| 753 | - $output .= AUI_Component_Helper::aria_attributes($args); |
|
| 754 | - |
|
| 755 | - // extra attributes |
|
| 756 | - if(!empty($args['extra_attributes'])){ |
|
| 757 | - $output .= AUI_Component_Helper::extra_attributes($args['extra_attributes']); |
|
| 758 | - } |
|
| 759 | - |
|
| 760 | - // required |
|
| 761 | - if(!empty($args['required'])){ |
|
| 762 | - $output .= ' required '; |
|
| 763 | - } |
|
| 764 | - |
|
| 765 | - // multiple |
|
| 766 | - if(!empty($args['multiple'])){ |
|
| 767 | - $output .= ' multiple '; |
|
| 768 | - } |
|
| 769 | - |
|
| 770 | - // close opening tag |
|
| 771 | - $output .= ' >'; |
|
| 772 | - |
|
| 773 | - // placeholder |
|
| 774 | - if(isset($args['placeholder']) && '' != $args['placeholder'] && !$is_select2){ |
|
| 775 | - $output .= '<option value="" disabled selected hidden>'.esc_attr($args['placeholder']).'</option>'; |
|
| 776 | - }elseif($is_select2 && !empty($args['placeholder'])){ |
|
| 777 | - $output .= "<option></option>"; // select2 needs an empty select to fill the placeholder |
|
| 778 | - } |
|
| 779 | - |
|
| 780 | - // Options |
|
| 781 | - if(!empty($args['options'])){ |
|
| 782 | - |
|
| 783 | - if(!is_array($args['options'])){ |
|
| 784 | - $output .= $args['options']; // not the preferred way but an option |
|
| 785 | - }else{ |
|
| 786 | - foreach($args['options'] as $val => $name){ |
|
| 787 | - $selected = ''; |
|
| 788 | - if(is_array($name)){ |
|
| 789 | - if (isset($name['optgroup']) && ($name['optgroup'] == 'start' || $name['optgroup'] == 'end')) { |
|
| 790 | - $option_label = isset($name['label']) ? $name['label'] : ''; |
|
| 791 | - |
|
| 792 | - $output .= $name['optgroup'] == 'start' ? '<optgroup label="' . esc_attr($option_label) . '">' : '</optgroup>'; |
|
| 793 | - } else { |
|
| 794 | - $option_label = isset($name['label']) ? $name['label'] : ''; |
|
| 795 | - $option_value = isset($name['value']) ? $name['value'] : ''; |
|
| 796 | - if(!empty($args['multiple']) && !empty($args['value']) && is_array($args['value']) ){ |
|
| 797 | - $selected = in_array($option_value, stripslashes_deep($args['value'])) ? "selected" : ""; |
|
| 798 | - } elseif(!empty($args['value'])) { |
|
| 799 | - $selected = selected($option_value,stripslashes_deep($args['value']), false); |
|
| 800 | - } |
|
| 801 | - |
|
| 802 | - $output .= '<option value="' . esc_attr($option_value) . '" ' . $selected . '>' . $option_label . '</option>'; |
|
| 803 | - } |
|
| 804 | - }else{ |
|
| 805 | - if(!empty($args['value'])){ |
|
| 806 | - if(is_array($args['value'])){ |
|
| 807 | - $selected = in_array($val,$args['value']) ? 'selected="selected"' : ''; |
|
| 808 | - } elseif(!empty($args['value'])) { |
|
| 809 | - $selected = selected( $args['value'], $val, false); |
|
| 810 | - } |
|
| 811 | - } |
|
| 812 | - $output .= '<option value="'.esc_attr($val).'" '.$selected.'>'.esc_attr($name).'</option>'; |
|
| 813 | - } |
|
| 814 | - } |
|
| 815 | - } |
|
| 816 | - |
|
| 817 | - } |
|
| 818 | - |
|
| 819 | - // closing tag |
|
| 820 | - $output .= '</select>'; |
|
| 821 | - |
|
| 822 | - if(!empty($args['label']) && $label_after){ |
|
| 823 | - $label_args = array( |
|
| 824 | - 'title'=> $args['label'], |
|
| 825 | - 'for'=> $args['id'], |
|
| 826 | - 'class' => $args['label_class']." ", |
|
| 827 | - 'label_type' => $args['label_type'] |
|
| 828 | - ); |
|
| 829 | - $output .= self::label($label_args); |
|
| 830 | - } |
|
| 831 | - |
|
| 832 | - // help text |
|
| 833 | - if(!empty($args['help_text'])){ |
|
| 834 | - $output .= AUI_Component_Helper::help_text($args['help_text']); |
|
| 835 | - } |
|
| 836 | - |
|
| 837 | - // maybe horizontal label |
|
| 838 | - if($args['label_type']=='horizontal'){ |
|
| 839 | - $output .= '</div>'; |
|
| 840 | - } |
|
| 841 | - |
|
| 842 | - |
|
| 843 | - // wrap |
|
| 844 | - if(!$args['no_wrap']){ |
|
| 845 | - $wrap_class = $args['label_type']=='horizontal' ? 'form-group row' : 'form-group'; |
|
| 846 | - $wrap_class = !empty($args['wrap_class']) ? $wrap_class." ".$args['wrap_class'] : $wrap_class; |
|
| 847 | - $output = self::wrap(array( |
|
| 848 | - 'content' => $output, |
|
| 849 | - 'class' => $wrap_class, |
|
| 850 | - 'element_require' => $args['element_require'], |
|
| 851 | - 'argument_id' => $args['id'], |
|
| 852 | - 'wrap_attributes' => $args['wrap_attributes'], |
|
| 853 | - )); |
|
| 854 | - } |
|
| 855 | - |
|
| 856 | - |
|
| 857 | - return $output; |
|
| 858 | - } |
|
| 859 | - |
|
| 860 | - /** |
|
| 861 | - * Build the component. |
|
| 862 | - * |
|
| 863 | - * @param array $args |
|
| 864 | - * |
|
| 865 | - * @return string The rendered component. |
|
| 866 | - */ |
|
| 867 | - public static function radio($args = array()){ |
|
| 868 | - $defaults = array( |
|
| 869 | - 'class' => '', |
|
| 870 | - 'wrap_class' => '', |
|
| 871 | - 'id' => '', |
|
| 872 | - 'title' => '', |
|
| 873 | - 'horizontal' => false, // sets the lable horizontal |
|
| 874 | - 'value' => '', |
|
| 875 | - 'label' => '', |
|
| 876 | - 'label_class'=> '', |
|
| 877 | - 'label_type' => '', // sets the label type, default: hidden. Options: hidden, top, horizontal, floating |
|
| 878 | - 'help_text' => '', |
|
| 879 | - 'inline' => true, |
|
| 880 | - 'required' => false, |
|
| 881 | - 'options' => array(), |
|
| 882 | - 'icon' => '', |
|
| 883 | - 'no_wrap' => false, |
|
| 884 | - 'element_require' => '', // [%element_id%] == "1" |
|
| 885 | - 'extra_attributes' => array(), // an array of extra attributes |
|
| 886 | - 'wrap_attributes' => array() |
|
| 887 | - ); |
|
| 888 | - |
|
| 889 | - /** |
|
| 890 | - * Parse incoming $args into an array and merge it with $defaults |
|
| 891 | - */ |
|
| 892 | - $args = wp_parse_args( $args, $defaults ); |
|
| 893 | - |
|
| 894 | - // for now lets use horizontal for floating |
|
| 895 | - if( $args['label_type'] == 'floating' ){$args['label_type'] = 'horizontal';} |
|
| 896 | - |
|
| 897 | - $label_args = array( |
|
| 898 | - 'title'=> $args['label'], |
|
| 899 | - 'class' => $args['label_class']." pt-0 ", |
|
| 900 | - 'label_type' => $args['label_type'] |
|
| 901 | - ); |
|
| 902 | - |
|
| 903 | - $output = ''; |
|
| 904 | - |
|
| 905 | - |
|
| 906 | - |
|
| 907 | - // label before |
|
| 908 | - if(!empty($args['label'])){ |
|
| 909 | - $output .= self::label( $label_args, 'radio' ); |
|
| 910 | - } |
|
| 911 | - |
|
| 912 | - // maybe horizontal label |
|
| 913 | - if($args['label_type']=='horizontal'){ |
|
| 914 | - $output .= '<div class="col-sm-10">'; |
|
| 915 | - } |
|
| 916 | - |
|
| 917 | - if(!empty($args['options'])){ |
|
| 918 | - $count = 0; |
|
| 919 | - foreach($args['options'] as $value => $label){ |
|
| 920 | - $option_args = $args; |
|
| 921 | - $option_args['value'] = $value; |
|
| 922 | - $option_args['label'] = $label; |
|
| 923 | - $option_args['checked'] = $value == $args['value'] ? true : false; |
|
| 924 | - $output .= self::radio_option($option_args,$count); |
|
| 925 | - $count++; |
|
| 926 | - } |
|
| 927 | - } |
|
| 928 | - |
|
| 929 | - // help text |
|
| 930 | - $help_text = ! empty( $args['help_text'] ) ? AUI_Component_Helper::help_text( $args['help_text'] ) : ''; |
|
| 931 | - $output .= $help_text; |
|
| 932 | - |
|
| 933 | - // maybe horizontal label |
|
| 934 | - if($args['label_type']=='horizontal'){ |
|
| 935 | - $output .= '</div>'; |
|
| 936 | - } |
|
| 937 | - |
|
| 938 | - // wrap |
|
| 939 | - $wrap_class = $args['label_type']=='horizontal' ? 'form-group row' : 'form-group'; |
|
| 940 | - $wrap_class = !empty($args['wrap_class']) ? $wrap_class." ".$args['wrap_class'] : $wrap_class; |
|
| 941 | - $output = self::wrap(array( |
|
| 942 | - 'content' => $output, |
|
| 943 | - 'class' => $wrap_class, |
|
| 944 | - 'element_require' => $args['element_require'], |
|
| 945 | - 'argument_id' => $args['id'], |
|
| 946 | - 'wrap_attributes' => $args['wrap_attributes'], |
|
| 947 | - )); |
|
| 948 | - |
|
| 949 | - |
|
| 950 | - return $output; |
|
| 951 | - } |
|
| 952 | - |
|
| 953 | - /** |
|
| 954 | - * Build the component. |
|
| 955 | - * |
|
| 956 | - * @param array $args |
|
| 957 | - * |
|
| 958 | - * @return string The rendered component. |
|
| 959 | - */ |
|
| 960 | - public static function radio_option($args = array(),$count = ''){ |
|
| 961 | - $defaults = array( |
|
| 962 | - 'class' => '', |
|
| 963 | - 'id' => '', |
|
| 964 | - 'title' => '', |
|
| 965 | - 'value' => '', |
|
| 966 | - 'required' => false, |
|
| 967 | - 'inline' => true, |
|
| 968 | - 'label' => '', |
|
| 969 | - 'options' => array(), |
|
| 970 | - 'icon' => '', |
|
| 971 | - 'no_wrap' => false, |
|
| 972 | - 'extra_attributes' => array() // an array of extra attributes |
|
| 973 | - ); |
|
| 974 | - |
|
| 975 | - /** |
|
| 976 | - * Parse incoming $args into an array and merge it with $defaults |
|
| 977 | - */ |
|
| 978 | - $args = wp_parse_args( $args, $defaults ); |
|
| 979 | - |
|
| 980 | - $output = ''; |
|
| 981 | - |
|
| 982 | - // open/type |
|
| 983 | - $output .= '<input type="radio"'; |
|
| 984 | - |
|
| 985 | - // class |
|
| 986 | - $output .= ' class="form-check-input" '; |
|
| 987 | - |
|
| 988 | - // name |
|
| 989 | - if(!empty($args['name'])){ |
|
| 990 | - $output .= AUI_Component_Helper::name($args['name']); |
|
| 991 | - } |
|
| 992 | - |
|
| 993 | - // id |
|
| 994 | - if(!empty($args['id'])){ |
|
| 995 | - $output .= AUI_Component_Helper::id($args['id'].$count); |
|
| 996 | - } |
|
| 997 | - |
|
| 998 | - // title |
|
| 999 | - if(!empty($args['title'])){ |
|
| 1000 | - $output .= AUI_Component_Helper::title($args['title']); |
|
| 1001 | - } |
|
| 1002 | - |
|
| 1003 | - // value |
|
| 1004 | - if(isset($args['value'])){ |
|
| 1005 | - $output .= AUI_Component_Helper::value($args['value']); |
|
| 1006 | - } |
|
| 1007 | - |
|
| 1008 | - // checked, for radio and checkboxes |
|
| 1009 | - if( $args['checked'] ){ |
|
| 1010 | - $output .= ' checked '; |
|
| 1011 | - } |
|
| 1012 | - |
|
| 1013 | - // data-attributes |
|
| 1014 | - $output .= AUI_Component_Helper::data_attributes($args); |
|
| 1015 | - |
|
| 1016 | - // aria-attributes |
|
| 1017 | - $output .= AUI_Component_Helper::aria_attributes($args); |
|
| 1018 | - |
|
| 1019 | - // extra attributes |
|
| 1020 | - if(!empty($args['extra_attributes'])){ |
|
| 1021 | - $output .= AUI_Component_Helper::extra_attributes($args['extra_attributes']); |
|
| 1022 | - } |
|
| 1023 | - |
|
| 1024 | - // required |
|
| 1025 | - if(!empty($args['required'])){ |
|
| 1026 | - $output .= ' required '; |
|
| 1027 | - } |
|
| 1028 | - |
|
| 1029 | - // close opening tag |
|
| 1030 | - $output .= ' >'; |
|
| 1031 | - |
|
| 1032 | - // label |
|
| 1033 | - if(!empty($args['label']) && is_array($args['label'])){ |
|
| 1034 | - }elseif(!empty($args['label'])){ |
|
| 1035 | - $output .= self::label(array('title'=>$args['label'],'for'=>$args['id'].$count,'class'=>'form-check-label'),'radio'); |
|
| 1036 | - } |
|
| 1037 | - |
|
| 1038 | - // wrap |
|
| 1039 | - if ( ! $args['no_wrap'] ) { |
|
| 1040 | - $wrap_class = $args['inline'] ? 'form-check form-check-inline' : 'form-check'; |
|
| 1041 | - |
|
| 1042 | - // Unique wrap class |
|
| 1043 | - $uniq_class = 'fwrap'; |
|
| 1044 | - if ( ! empty( $args['name'] ) ) { |
|
| 1045 | - $uniq_class .= '-' . $args['name']; |
|
| 1046 | - } else if ( ! empty( $args['id'] ) ) { |
|
| 1047 | - $uniq_class .= '-' . $args['id']; |
|
| 1048 | - } |
|
| 1049 | - |
|
| 1050 | - if ( isset( $args['value'] ) || $args['value'] !== "" ) { |
|
| 1051 | - $uniq_class .= '-' . $args['value']; |
|
| 1052 | - } else { |
|
| 1053 | - $uniq_class .= '-' . $count; |
|
| 1054 | - } |
|
| 1055 | - $wrap_class .= ' ' . sanitize_html_class( $uniq_class ); |
|
| 1056 | - |
|
| 1057 | - $output = self::wrap(array( |
|
| 1058 | - 'content' => $output, |
|
| 1059 | - 'class' => $wrap_class |
|
| 1060 | - )); |
|
| 1061 | - } |
|
| 1062 | - |
|
| 1063 | - return $output; |
|
| 1064 | - } |
|
| 214 | + } |
|
| 215 | + |
|
| 216 | + // input group wraps |
|
| 217 | + if($args['input_group_left'] || $args['input_group_right']){ |
|
| 218 | + $w100 = strpos($args['class'], 'w-100') !== false ? ' w-100' : ''; |
|
| 219 | + if($args['input_group_left']){ |
|
| 220 | + $output = self::wrap( array( |
|
| 221 | + 'content' => $output, |
|
| 222 | + 'class' => $args['input_group_left_inside'] ? 'input-group-inside position-relative'.$w100 : 'input-group', |
|
| 223 | + 'input_group_left' => $args['input_group_left'], |
|
| 224 | + 'input_group_left_inside' => $args['input_group_left_inside'] |
|
| 225 | + ) ); |
|
| 226 | + } |
|
| 227 | + if($args['input_group_right']){ |
|
| 228 | + $output = self::wrap( array( |
|
| 229 | + 'content' => $output, |
|
| 230 | + 'class' => $args['input_group_right_inside'] ? 'input-group-inside position-relative'.$w100 : 'input-group', |
|
| 231 | + 'input_group_right' => $args['input_group_right'], |
|
| 232 | + 'input_group_right_inside' => $args['input_group_right_inside'] |
|
| 233 | + ) ); |
|
| 234 | + } |
|
| 235 | + |
|
| 236 | + } |
|
| 237 | + |
|
| 238 | + if(!$label_after){ |
|
| 239 | + $output .= $help_text; |
|
| 240 | + } |
|
| 241 | + |
|
| 242 | + |
|
| 243 | + if($args['label_type']=='horizontal' && $type != 'checkbox'){ |
|
| 244 | + $output = self::wrap( array( |
|
| 245 | + 'content' => $output, |
|
| 246 | + 'class' => 'col-sm-10', |
|
| 247 | + ) ); |
|
| 248 | + } |
|
| 249 | + |
|
| 250 | + if(!$label_after){ |
|
| 251 | + $output = $label . $output; |
|
| 252 | + } |
|
| 253 | + |
|
| 254 | + // wrap |
|
| 255 | + if ( ! $args['no_wrap'] ) { |
|
| 256 | + $form_group_class = $args['label_type']=='floating' && $type != 'checkbox' ? 'form-label-group' : 'form-group'; |
|
| 257 | + $wrap_class = $args['label_type']=='horizontal' ? $form_group_class . ' row' : $form_group_class; |
|
| 258 | + $wrap_class = !empty($args['wrap_class']) ? $wrap_class." ".$args['wrap_class'] : $wrap_class; |
|
| 259 | + $output = self::wrap(array( |
|
| 260 | + 'content' => $output, |
|
| 261 | + 'class' => $wrap_class, |
|
| 262 | + 'element_require' => $args['element_require'], |
|
| 263 | + 'argument_id' => $args['id'], |
|
| 264 | + 'wrap_attributes' => $args['wrap_attributes'], |
|
| 265 | + )); |
|
| 266 | + } |
|
| 267 | + } |
|
| 268 | + |
|
| 269 | + return $output; |
|
| 270 | + } |
|
| 271 | + |
|
| 272 | + /** |
|
| 273 | + * Build the component. |
|
| 274 | + * |
|
| 275 | + * @param array $args |
|
| 276 | + * |
|
| 277 | + * @return string The rendered component. |
|
| 278 | + */ |
|
| 279 | + public static function textarea($args = array()){ |
|
| 280 | + $defaults = array( |
|
| 281 | + 'name' => '', |
|
| 282 | + 'class' => '', |
|
| 283 | + 'wrap_class' => '', |
|
| 284 | + 'id' => '', |
|
| 285 | + 'placeholder'=> '', |
|
| 286 | + 'title' => '', |
|
| 287 | + 'value' => '', |
|
| 288 | + 'required' => false, |
|
| 289 | + 'label' => '', |
|
| 290 | + 'label_after'=> false, |
|
| 291 | + 'label_class' => '', |
|
| 292 | + 'label_type' => '', // sets the label type, default: hidden. Options: hidden, top, horizontal, floating |
|
| 293 | + 'help_text' => '', |
|
| 294 | + 'validation_text' => '', |
|
| 295 | + 'validation_pattern' => '', |
|
| 296 | + 'no_wrap' => false, |
|
| 297 | + 'rows' => '', |
|
| 298 | + 'wysiwyg' => false, |
|
| 299 | + 'allow_tags' => false, // Allow HTML tags |
|
| 300 | + 'element_require' => '', // [%element_id%] == "1" |
|
| 301 | + 'extra_attributes' => array(), // an array of extra attributes |
|
| 302 | + 'wrap_attributes' => array(), |
|
| 303 | + ); |
|
| 304 | + |
|
| 305 | + /** |
|
| 306 | + * Parse incoming $args into an array and merge it with $defaults |
|
| 307 | + */ |
|
| 308 | + $args = wp_parse_args( $args, $defaults ); |
|
| 309 | + $output = ''; |
|
| 310 | + |
|
| 311 | + // hidden label option needs to be empty |
|
| 312 | + $args['label_type'] = $args['label_type'] == 'hidden' ? '' : $args['label_type']; |
|
| 313 | + |
|
| 314 | + // floating labels don't work with wysiwyg so set it as top |
|
| 315 | + if($args['label_type'] == 'floating' && !empty($args['wysiwyg'])){ |
|
| 316 | + $args['label_type'] = 'top'; |
|
| 317 | + } |
|
| 318 | + |
|
| 319 | + $label_after = $args['label_after']; |
|
| 320 | + |
|
| 321 | + // floating labels need label after |
|
| 322 | + if( $args['label_type'] == 'floating' && empty($args['wysiwyg']) ){ |
|
| 323 | + $label_after = true; |
|
| 324 | + $args['placeholder'] = ' '; // set the placeholder not empty so the floating label works. |
|
| 325 | + } |
|
| 326 | + |
|
| 327 | + // label |
|
| 328 | + if(!empty($args['label']) && is_array($args['label'])){ |
|
| 329 | + }elseif(!empty($args['label']) && !$label_after){ |
|
| 330 | + $label_args = array( |
|
| 331 | + 'title'=> $args['label'], |
|
| 332 | + 'for'=> $args['id'], |
|
| 333 | + 'class' => $args['label_class']." ", |
|
| 334 | + 'label_type' => $args['label_type'] |
|
| 335 | + ); |
|
| 336 | + $output .= self::label( $label_args ); |
|
| 337 | + } |
|
| 338 | + |
|
| 339 | + // maybe horizontal label |
|
| 340 | + if($args['label_type']=='horizontal'){ |
|
| 341 | + $output .= '<div class="col-sm-10">'; |
|
| 342 | + } |
|
| 343 | + |
|
| 344 | + if(!empty($args['wysiwyg'])){ |
|
| 345 | + ob_start(); |
|
| 346 | + $content = $args['value']; |
|
| 347 | + $editor_id = !empty($args['id']) ? sanitize_html_class($args['id']) : 'wp_editor'; |
|
| 348 | + $settings = array( |
|
| 349 | + 'textarea_rows' => !empty(absint($args['rows'])) ? absint($args['rows']) : 4, |
|
| 350 | + 'quicktags' => false, |
|
| 351 | + 'media_buttons' => false, |
|
| 352 | + 'editor_class' => 'form-control', |
|
| 353 | + 'textarea_name' => !empty($args['name']) ? sanitize_html_class($args['name']) : sanitize_html_class($args['id']), |
|
| 354 | + 'teeny' => true, |
|
| 355 | + ); |
|
| 356 | + |
|
| 357 | + // maybe set settings if array |
|
| 358 | + if(is_array($args['wysiwyg'])){ |
|
| 359 | + $settings = wp_parse_args( $args['wysiwyg'], $settings ); |
|
| 360 | + } |
|
| 361 | + |
|
| 362 | + wp_editor( $content, $editor_id, $settings ); |
|
| 363 | + $output .= ob_get_clean(); |
|
| 364 | + }else{ |
|
| 365 | + |
|
| 366 | + // open |
|
| 367 | + $output .= '<textarea '; |
|
| 368 | + |
|
| 369 | + // name |
|
| 370 | + if(!empty($args['name'])){ |
|
| 371 | + $output .= ' name="'.esc_attr($args['name']).'" '; |
|
| 372 | + } |
|
| 373 | + |
|
| 374 | + // id |
|
| 375 | + if(!empty($args['id'])){ |
|
| 376 | + $output .= ' id="'.sanitize_html_class($args['id']).'" '; |
|
| 377 | + } |
|
| 378 | + |
|
| 379 | + // placeholder |
|
| 380 | + if(isset($args['placeholder']) && '' != $args['placeholder']){ |
|
| 381 | + $output .= ' placeholder="'.esc_attr($args['placeholder']).'" '; |
|
| 382 | + } |
|
| 383 | + |
|
| 384 | + // title |
|
| 385 | + if(!empty($args['title'])){ |
|
| 386 | + $output .= ' title="'.esc_attr($args['title']).'" '; |
|
| 387 | + } |
|
| 388 | + |
|
| 389 | + // validation text |
|
| 390 | + if(!empty($args['validation_text'])){ |
|
| 391 | + $output .= ' oninvalid="setCustomValidity(\''.esc_attr($args['validation_text']).'\')" '; |
|
| 392 | + $output .= ' onchange="try{setCustomValidity(\'\')}catch(e){}" '; |
|
| 393 | + } |
|
| 394 | + |
|
| 395 | + // validation_pattern |
|
| 396 | + if(!empty($args['validation_pattern'])){ |
|
| 397 | + $output .= ' pattern="' . esc_attr( $args['validation_pattern'] ) . '" '; |
|
| 398 | + } |
|
| 399 | + |
|
| 400 | + // required |
|
| 401 | + if(!empty($args['required'])){ |
|
| 402 | + $output .= ' required '; |
|
| 403 | + } |
|
| 404 | + |
|
| 405 | + // rows |
|
| 406 | + if(!empty($args['rows'])){ |
|
| 407 | + $output .= ' rows="'.absint($args['rows']).'" '; |
|
| 408 | + } |
|
| 409 | + |
|
| 410 | + |
|
| 411 | + // class |
|
| 412 | + $class = !empty($args['class']) ? $args['class'] : ''; |
|
| 413 | + $output .= ' class="form-control '.$class.'" '; |
|
| 414 | + |
|
| 415 | + // extra attributes |
|
| 416 | + if(!empty($args['extra_attributes'])){ |
|
| 417 | + $output .= AUI_Component_Helper::extra_attributes($args['extra_attributes']); |
|
| 418 | + } |
|
| 419 | + |
|
| 420 | + // close tag |
|
| 421 | + $output .= ' >'; |
|
| 422 | + |
|
| 423 | + // value |
|
| 424 | + if ( ! empty( $args['value'] ) ) { |
|
| 425 | + if ( ! empty( $args['allow_tags'] ) ) { |
|
| 426 | + $output .= AUI_Component_Helper::sanitize_html_field( $args['value'], $args ); // Sanitize HTML. |
|
| 427 | + } else { |
|
| 428 | + $output .= sanitize_textarea_field( $args['value'] ); |
|
| 429 | + } |
|
| 430 | + } |
|
| 431 | + |
|
| 432 | + // closing tag |
|
| 433 | + $output .= '</textarea>'; |
|
| 434 | + |
|
| 435 | + } |
|
| 436 | + |
|
| 437 | + if(!empty($args['label']) && $label_after){ |
|
| 438 | + $label_args = array( |
|
| 439 | + 'title'=> $args['label'], |
|
| 440 | + 'for'=> $args['id'], |
|
| 441 | + 'class' => $args['label_class']." ", |
|
| 442 | + 'label_type' => $args['label_type'] |
|
| 443 | + ); |
|
| 444 | + $output .= self::label( $label_args ); |
|
| 445 | + } |
|
| 446 | + |
|
| 447 | + // help text |
|
| 448 | + if(!empty($args['help_text'])){ |
|
| 449 | + $output .= AUI_Component_Helper::help_text($args['help_text']); |
|
| 450 | + } |
|
| 451 | + |
|
| 452 | + // maybe horizontal label |
|
| 453 | + if($args['label_type']=='horizontal'){ |
|
| 454 | + $output .= '</div>'; |
|
| 455 | + } |
|
| 456 | + |
|
| 457 | + |
|
| 458 | + // wrap |
|
| 459 | + if(!$args['no_wrap']){ |
|
| 460 | + $form_group_class = $args['label_type']=='floating' ? 'form-label-group' : 'form-group'; |
|
| 461 | + $wrap_class = $args['label_type']=='horizontal' ? $form_group_class . ' row' : $form_group_class; |
|
| 462 | + $wrap_class = !empty($args['wrap_class']) ? $wrap_class." ".$args['wrap_class'] : $wrap_class; |
|
| 463 | + $output = self::wrap(array( |
|
| 464 | + 'content' => $output, |
|
| 465 | + 'class' => $wrap_class, |
|
| 466 | + 'element_require' => $args['element_require'], |
|
| 467 | + 'argument_id' => $args['id'], |
|
| 468 | + 'wrap_attributes' => $args['wrap_attributes'], |
|
| 469 | + )); |
|
| 470 | + } |
|
| 471 | + |
|
| 472 | + |
|
| 473 | + return $output; |
|
| 474 | + } |
|
| 475 | + |
|
| 476 | + public static function label($args = array(), $type = ''){ |
|
| 477 | + //<label for="exampleInputEmail1">Email address</label> |
|
| 478 | + $defaults = array( |
|
| 479 | + 'title' => 'div', |
|
| 480 | + 'for' => '', |
|
| 481 | + 'class' => '', |
|
| 482 | + 'label_type' => '', // empty = hidden, top, horizontal |
|
| 483 | + ); |
|
| 484 | + |
|
| 485 | + /** |
|
| 486 | + * Parse incoming $args into an array and merge it with $defaults |
|
| 487 | + */ |
|
| 488 | + $args = wp_parse_args( $args, $defaults ); |
|
| 489 | + $output = ''; |
|
| 490 | + |
|
| 491 | + if($args['title']){ |
|
| 492 | + |
|
| 493 | + // maybe hide labels //@todo set a global option for visibility class |
|
| 494 | + if($type == 'file' || $type == 'checkbox' || $type == 'radio' || !empty($args['label_type']) ){ |
|
| 495 | + $class = $args['class']; |
|
| 496 | + }else{ |
|
| 497 | + $class = 'sr-only '.$args['class']; |
|
| 498 | + } |
|
| 499 | + |
|
| 500 | + // maybe horizontal |
|
| 501 | + if($args['label_type']=='horizontal' && $type != 'checkbox'){ |
|
| 502 | + $class .= ' col-sm-2 col-form-label'; |
|
| 503 | + } |
|
| 504 | + |
|
| 505 | + // open |
|
| 506 | + $output .= '<label '; |
|
| 507 | + |
|
| 508 | + // for |
|
| 509 | + if(!empty($args['for'])){ |
|
| 510 | + $output .= ' for="'.esc_attr($args['for']).'" '; |
|
| 511 | + } |
|
| 512 | + |
|
| 513 | + // class |
|
| 514 | + $class = $class ? AUI_Component_Helper::esc_classes( $class ) : ''; |
|
| 515 | + $output .= ' class="'.$class.'" '; |
|
| 516 | + |
|
| 517 | + // close |
|
| 518 | + $output .= '>'; |
|
| 519 | + |
|
| 520 | + |
|
| 521 | + // title, don't escape fully as can contain html |
|
| 522 | + if(!empty($args['title'])){ |
|
| 523 | + $output .= wp_kses_post($args['title']); |
|
| 524 | + } |
|
| 525 | + |
|
| 526 | + // close wrap |
|
| 527 | + $output .= '</label>'; |
|
| 528 | + |
|
| 529 | + |
|
| 530 | + } |
|
| 531 | + |
|
| 532 | + |
|
| 533 | + return $output; |
|
| 534 | + } |
|
| 535 | + |
|
| 536 | + /** |
|
| 537 | + * Wrap some content in a HTML wrapper. |
|
| 538 | + * |
|
| 539 | + * @param array $args |
|
| 540 | + * |
|
| 541 | + * @return string |
|
| 542 | + */ |
|
| 543 | + public static function wrap($args = array()){ |
|
| 544 | + $defaults = array( |
|
| 545 | + 'type' => 'div', |
|
| 546 | + 'class' => 'form-group', |
|
| 547 | + 'content' => '', |
|
| 548 | + 'input_group_left' => '', |
|
| 549 | + 'input_group_right' => '', |
|
| 550 | + 'input_group_left_inside' => false, |
|
| 551 | + 'input_group_right_inside' => false, |
|
| 552 | + 'element_require' => '', |
|
| 553 | + 'argument_id' => '', |
|
| 554 | + 'wrap_attributes' => array() |
|
| 555 | + ); |
|
| 556 | + |
|
| 557 | + /** |
|
| 558 | + * Parse incoming $args into an array and merge it with $defaults |
|
| 559 | + */ |
|
| 560 | + $args = wp_parse_args( $args, $defaults ); |
|
| 561 | + $output = ''; |
|
| 562 | + if($args['type']){ |
|
| 563 | + |
|
| 564 | + // open |
|
| 565 | + $output .= '<'.sanitize_html_class($args['type']); |
|
| 566 | + |
|
| 567 | + // element require |
|
| 568 | + if(!empty($args['element_require'])){ |
|
| 569 | + $output .= AUI_Component_Helper::element_require($args['element_require']); |
|
| 570 | + $args['class'] .= " aui-conditional-field"; |
|
| 571 | + } |
|
| 572 | + |
|
| 573 | + // argument_id |
|
| 574 | + if( !empty($args['argument_id']) ){ |
|
| 575 | + $output .= ' data-argument="'.esc_attr($args['argument_id']).'"'; |
|
| 576 | + } |
|
| 577 | + |
|
| 578 | + // class |
|
| 579 | + $class = !empty($args['class']) ? AUI_Component_Helper::esc_classes( $args['class'] ) : ''; |
|
| 580 | + $output .= ' class="'.$class.'" '; |
|
| 581 | + |
|
| 582 | + // Attributes |
|
| 583 | + if ( ! empty( $args['wrap_attributes'] ) ) { |
|
| 584 | + $output .= AUI_Component_Helper::extra_attributes( $args['wrap_attributes'] ); |
|
| 585 | + } |
|
| 586 | + |
|
| 587 | + // close wrap |
|
| 588 | + $output .= ' >'; |
|
| 589 | + |
|
| 590 | + |
|
| 591 | + // Input group left |
|
| 592 | + if(!empty($args['input_group_left'])){ |
|
| 593 | + $position_class = !empty($args['input_group_left_inside']) ? 'position-absolute h-100' : ''; |
|
| 594 | + $input_group_left = strpos($args['input_group_left'], '<') !== false ? $args['input_group_left'] : '<span class="input-group-text">'.$args['input_group_left'].'</span>'; |
|
| 595 | + $output .= '<div class="input-group-prepend '.$position_class.'">'.$input_group_left.'</div>'; |
|
| 596 | + } |
|
| 597 | + |
|
| 598 | + // content |
|
| 599 | + $output .= $args['content']; |
|
| 600 | + |
|
| 601 | + // Input group right |
|
| 602 | + if(!empty($args['input_group_right'])){ |
|
| 603 | + $position_class = !empty($args['input_group_left_inside']) ? 'position-absolute h-100' : ''; |
|
| 604 | + $input_group_right = strpos($args['input_group_right'], '<') !== false ? $args['input_group_right'] : '<span class="input-group-text">'.$args['input_group_right'].'</span>'; |
|
| 605 | + $output .= '<div class="input-group-append '.$position_class.'">'.$input_group_right.'</div>'; |
|
| 606 | + } |
|
| 607 | + |
|
| 608 | + |
|
| 609 | + // close wrap |
|
| 610 | + $output .= '</'.sanitize_html_class($args['type']).'>'; |
|
| 611 | + |
|
| 612 | + |
|
| 613 | + }else{ |
|
| 614 | + $output = $args['content']; |
|
| 615 | + } |
|
| 616 | + |
|
| 617 | + return $output; |
|
| 618 | + } |
|
| 619 | + |
|
| 620 | + /** |
|
| 621 | + * Build the component. |
|
| 622 | + * |
|
| 623 | + * @param array $args |
|
| 624 | + * |
|
| 625 | + * @return string The rendered component. |
|
| 626 | + */ |
|
| 627 | + public static function select($args = array()){ |
|
| 628 | + $defaults = array( |
|
| 629 | + 'class' => '', |
|
| 630 | + 'wrap_class' => '', |
|
| 631 | + 'id' => '', |
|
| 632 | + 'title' => '', |
|
| 633 | + 'value' => '', // can be an array or a string |
|
| 634 | + 'required' => false, |
|
| 635 | + 'label' => '', |
|
| 636 | + 'label_after'=> false, |
|
| 637 | + 'label_type' => '', // sets the label type, default: hidden. Options: hidden, top, horizontal, floating |
|
| 638 | + 'label_class' => '', |
|
| 639 | + 'help_text' => '', |
|
| 640 | + 'placeholder'=> '', |
|
| 641 | + 'options' => array(), // array or string |
|
| 642 | + 'icon' => '', |
|
| 643 | + 'multiple' => false, |
|
| 644 | + 'select2' => false, |
|
| 645 | + 'no_wrap' => false, |
|
| 646 | + 'element_require' => '', // [%element_id%] == "1" |
|
| 647 | + 'extra_attributes' => array(), // an array of extra attributes |
|
| 648 | + 'wrap_attributes' => array(), |
|
| 649 | + ); |
|
| 650 | + |
|
| 651 | + /** |
|
| 652 | + * Parse incoming $args into an array and merge it with $defaults |
|
| 653 | + */ |
|
| 654 | + $args = wp_parse_args( $args, $defaults ); |
|
| 655 | + $output = ''; |
|
| 656 | + |
|
| 657 | + // for now lets hide floating labels |
|
| 658 | + if( $args['label_type'] == 'floating' ){$args['label_type'] = 'hidden';} |
|
| 659 | + |
|
| 660 | + // hidden label option needs to be empty |
|
| 661 | + $args['label_type'] = $args['label_type'] == 'hidden' ? '' : $args['label_type']; |
|
| 662 | + |
|
| 663 | + |
|
| 664 | + $label_after = $args['label_after']; |
|
| 665 | + |
|
| 666 | + // floating labels need label after |
|
| 667 | + if( $args['label_type'] == 'floating' ){ |
|
| 668 | + $label_after = true; |
|
| 669 | + $args['placeholder'] = ' '; // set the placeholder not empty so the floating label works. |
|
| 670 | + } |
|
| 671 | + |
|
| 672 | + // Maybe setup select2 |
|
| 673 | + $is_select2 = false; |
|
| 674 | + if(!empty($args['select2'])){ |
|
| 675 | + $args['class'] .= ' aui-select2'; |
|
| 676 | + $is_select2 = true; |
|
| 677 | + }elseif( strpos($args['class'], 'aui-select2') !== false){ |
|
| 678 | + $is_select2 = true; |
|
| 679 | + } |
|
| 680 | + |
|
| 681 | + // select2 tags |
|
| 682 | + if( !empty($args['select2']) && $args['select2'] === 'tags'){ // triple equals needed here for some reason |
|
| 683 | + $args['data-tags'] = 'true'; |
|
| 684 | + $args['data-token-separators'] = "[',']"; |
|
| 685 | + $args['multiple'] = true; |
|
| 686 | + } |
|
| 687 | + |
|
| 688 | + // select2 placeholder |
|
| 689 | + if($is_select2 && isset($args['placeholder']) && '' != $args['placeholder'] && empty($args['data-placeholder'])){ |
|
| 690 | + $args['data-placeholder'] = esc_attr($args['placeholder']); |
|
| 691 | + $args['data-allow-clear'] = isset($args['data-allow-clear']) ? (bool) $args['data-allow-clear'] : true; |
|
| 692 | + } |
|
| 693 | + |
|
| 694 | + // label |
|
| 695 | + if(!empty($args['label']) && is_array($args['label'])){ |
|
| 696 | + }elseif(!empty($args['label']) && !$label_after){ |
|
| 697 | + $label_args = array( |
|
| 698 | + 'title'=> $args['label'], |
|
| 699 | + 'for'=> $args['id'], |
|
| 700 | + 'class' => $args['label_class']." ", |
|
| 701 | + 'label_type' => $args['label_type'] |
|
| 702 | + ); |
|
| 703 | + $output .= self::label($label_args); |
|
| 704 | + } |
|
| 705 | + |
|
| 706 | + // maybe horizontal label |
|
| 707 | + if($args['label_type']=='horizontal'){ |
|
| 708 | + $output .= '<div class="col-sm-10">'; |
|
| 709 | + } |
|
| 710 | + |
|
| 711 | + // Set hidden input to save empty value for multiselect. |
|
| 712 | + if ( ! empty( $args['multiple'] ) && ! empty( $args['name'] ) ) { |
|
| 713 | + $output .= '<input type="hidden" ' . AUI_Component_Helper::name( $args['name'] ) . ' value=""/>'; |
|
| 714 | + } |
|
| 715 | + |
|
| 716 | + // open/type |
|
| 717 | + $output .= '<select '; |
|
| 718 | + |
|
| 719 | + // style |
|
| 720 | + if($is_select2){ |
|
| 721 | + $output .= " style='width:100%;' "; |
|
| 722 | + } |
|
| 723 | + |
|
| 724 | + // element require |
|
| 725 | + if(!empty($args['element_require'])){ |
|
| 726 | + $output .= AUI_Component_Helper::element_require($args['element_require']); |
|
| 727 | + $args['class'] .= " aui-conditional-field"; |
|
| 728 | + } |
|
| 729 | + |
|
| 730 | + // class |
|
| 731 | + $class = !empty($args['class']) ? $args['class'] : ''; |
|
| 732 | + $output .= AUI_Component_Helper::class_attr('custom-select '.$class); |
|
| 733 | + |
|
| 734 | + // name |
|
| 735 | + if(!empty($args['name'])){ |
|
| 736 | + $output .= AUI_Component_Helper::name($args['name'],$args['multiple']); |
|
| 737 | + } |
|
| 738 | + |
|
| 739 | + // id |
|
| 740 | + if(!empty($args['id'])){ |
|
| 741 | + $output .= AUI_Component_Helper::id($args['id']); |
|
| 742 | + } |
|
| 743 | + |
|
| 744 | + // title |
|
| 745 | + if(!empty($args['title'])){ |
|
| 746 | + $output .= AUI_Component_Helper::title($args['title']); |
|
| 747 | + } |
|
| 748 | + |
|
| 749 | + // data-attributes |
|
| 750 | + $output .= AUI_Component_Helper::data_attributes($args); |
|
| 751 | + |
|
| 752 | + // aria-attributes |
|
| 753 | + $output .= AUI_Component_Helper::aria_attributes($args); |
|
| 754 | + |
|
| 755 | + // extra attributes |
|
| 756 | + if(!empty($args['extra_attributes'])){ |
|
| 757 | + $output .= AUI_Component_Helper::extra_attributes($args['extra_attributes']); |
|
| 758 | + } |
|
| 759 | + |
|
| 760 | + // required |
|
| 761 | + if(!empty($args['required'])){ |
|
| 762 | + $output .= ' required '; |
|
| 763 | + } |
|
| 764 | + |
|
| 765 | + // multiple |
|
| 766 | + if(!empty($args['multiple'])){ |
|
| 767 | + $output .= ' multiple '; |
|
| 768 | + } |
|
| 769 | + |
|
| 770 | + // close opening tag |
|
| 771 | + $output .= ' >'; |
|
| 772 | + |
|
| 773 | + // placeholder |
|
| 774 | + if(isset($args['placeholder']) && '' != $args['placeholder'] && !$is_select2){ |
|
| 775 | + $output .= '<option value="" disabled selected hidden>'.esc_attr($args['placeholder']).'</option>'; |
|
| 776 | + }elseif($is_select2 && !empty($args['placeholder'])){ |
|
| 777 | + $output .= "<option></option>"; // select2 needs an empty select to fill the placeholder |
|
| 778 | + } |
|
| 779 | + |
|
| 780 | + // Options |
|
| 781 | + if(!empty($args['options'])){ |
|
| 782 | + |
|
| 783 | + if(!is_array($args['options'])){ |
|
| 784 | + $output .= $args['options']; // not the preferred way but an option |
|
| 785 | + }else{ |
|
| 786 | + foreach($args['options'] as $val => $name){ |
|
| 787 | + $selected = ''; |
|
| 788 | + if(is_array($name)){ |
|
| 789 | + if (isset($name['optgroup']) && ($name['optgroup'] == 'start' || $name['optgroup'] == 'end')) { |
|
| 790 | + $option_label = isset($name['label']) ? $name['label'] : ''; |
|
| 791 | + |
|
| 792 | + $output .= $name['optgroup'] == 'start' ? '<optgroup label="' . esc_attr($option_label) . '">' : '</optgroup>'; |
|
| 793 | + } else { |
|
| 794 | + $option_label = isset($name['label']) ? $name['label'] : ''; |
|
| 795 | + $option_value = isset($name['value']) ? $name['value'] : ''; |
|
| 796 | + if(!empty($args['multiple']) && !empty($args['value']) && is_array($args['value']) ){ |
|
| 797 | + $selected = in_array($option_value, stripslashes_deep($args['value'])) ? "selected" : ""; |
|
| 798 | + } elseif(!empty($args['value'])) { |
|
| 799 | + $selected = selected($option_value,stripslashes_deep($args['value']), false); |
|
| 800 | + } |
|
| 801 | + |
|
| 802 | + $output .= '<option value="' . esc_attr($option_value) . '" ' . $selected . '>' . $option_label . '</option>'; |
|
| 803 | + } |
|
| 804 | + }else{ |
|
| 805 | + if(!empty($args['value'])){ |
|
| 806 | + if(is_array($args['value'])){ |
|
| 807 | + $selected = in_array($val,$args['value']) ? 'selected="selected"' : ''; |
|
| 808 | + } elseif(!empty($args['value'])) { |
|
| 809 | + $selected = selected( $args['value'], $val, false); |
|
| 810 | + } |
|
| 811 | + } |
|
| 812 | + $output .= '<option value="'.esc_attr($val).'" '.$selected.'>'.esc_attr($name).'</option>'; |
|
| 813 | + } |
|
| 814 | + } |
|
| 815 | + } |
|
| 816 | + |
|
| 817 | + } |
|
| 818 | + |
|
| 819 | + // closing tag |
|
| 820 | + $output .= '</select>'; |
|
| 821 | + |
|
| 822 | + if(!empty($args['label']) && $label_after){ |
|
| 823 | + $label_args = array( |
|
| 824 | + 'title'=> $args['label'], |
|
| 825 | + 'for'=> $args['id'], |
|
| 826 | + 'class' => $args['label_class']." ", |
|
| 827 | + 'label_type' => $args['label_type'] |
|
| 828 | + ); |
|
| 829 | + $output .= self::label($label_args); |
|
| 830 | + } |
|
| 831 | + |
|
| 832 | + // help text |
|
| 833 | + if(!empty($args['help_text'])){ |
|
| 834 | + $output .= AUI_Component_Helper::help_text($args['help_text']); |
|
| 835 | + } |
|
| 836 | + |
|
| 837 | + // maybe horizontal label |
|
| 838 | + if($args['label_type']=='horizontal'){ |
|
| 839 | + $output .= '</div>'; |
|
| 840 | + } |
|
| 841 | + |
|
| 842 | + |
|
| 843 | + // wrap |
|
| 844 | + if(!$args['no_wrap']){ |
|
| 845 | + $wrap_class = $args['label_type']=='horizontal' ? 'form-group row' : 'form-group'; |
|
| 846 | + $wrap_class = !empty($args['wrap_class']) ? $wrap_class." ".$args['wrap_class'] : $wrap_class; |
|
| 847 | + $output = self::wrap(array( |
|
| 848 | + 'content' => $output, |
|
| 849 | + 'class' => $wrap_class, |
|
| 850 | + 'element_require' => $args['element_require'], |
|
| 851 | + 'argument_id' => $args['id'], |
|
| 852 | + 'wrap_attributes' => $args['wrap_attributes'], |
|
| 853 | + )); |
|
| 854 | + } |
|
| 855 | + |
|
| 856 | + |
|
| 857 | + return $output; |
|
| 858 | + } |
|
| 859 | + |
|
| 860 | + /** |
|
| 861 | + * Build the component. |
|
| 862 | + * |
|
| 863 | + * @param array $args |
|
| 864 | + * |
|
| 865 | + * @return string The rendered component. |
|
| 866 | + */ |
|
| 867 | + public static function radio($args = array()){ |
|
| 868 | + $defaults = array( |
|
| 869 | + 'class' => '', |
|
| 870 | + 'wrap_class' => '', |
|
| 871 | + 'id' => '', |
|
| 872 | + 'title' => '', |
|
| 873 | + 'horizontal' => false, // sets the lable horizontal |
|
| 874 | + 'value' => '', |
|
| 875 | + 'label' => '', |
|
| 876 | + 'label_class'=> '', |
|
| 877 | + 'label_type' => '', // sets the label type, default: hidden. Options: hidden, top, horizontal, floating |
|
| 878 | + 'help_text' => '', |
|
| 879 | + 'inline' => true, |
|
| 880 | + 'required' => false, |
|
| 881 | + 'options' => array(), |
|
| 882 | + 'icon' => '', |
|
| 883 | + 'no_wrap' => false, |
|
| 884 | + 'element_require' => '', // [%element_id%] == "1" |
|
| 885 | + 'extra_attributes' => array(), // an array of extra attributes |
|
| 886 | + 'wrap_attributes' => array() |
|
| 887 | + ); |
|
| 888 | + |
|
| 889 | + /** |
|
| 890 | + * Parse incoming $args into an array and merge it with $defaults |
|
| 891 | + */ |
|
| 892 | + $args = wp_parse_args( $args, $defaults ); |
|
| 893 | + |
|
| 894 | + // for now lets use horizontal for floating |
|
| 895 | + if( $args['label_type'] == 'floating' ){$args['label_type'] = 'horizontal';} |
|
| 896 | + |
|
| 897 | + $label_args = array( |
|
| 898 | + 'title'=> $args['label'], |
|
| 899 | + 'class' => $args['label_class']." pt-0 ", |
|
| 900 | + 'label_type' => $args['label_type'] |
|
| 901 | + ); |
|
| 902 | + |
|
| 903 | + $output = ''; |
|
| 904 | + |
|
| 905 | + |
|
| 906 | + |
|
| 907 | + // label before |
|
| 908 | + if(!empty($args['label'])){ |
|
| 909 | + $output .= self::label( $label_args, 'radio' ); |
|
| 910 | + } |
|
| 911 | + |
|
| 912 | + // maybe horizontal label |
|
| 913 | + if($args['label_type']=='horizontal'){ |
|
| 914 | + $output .= '<div class="col-sm-10">'; |
|
| 915 | + } |
|
| 916 | + |
|
| 917 | + if(!empty($args['options'])){ |
|
| 918 | + $count = 0; |
|
| 919 | + foreach($args['options'] as $value => $label){ |
|
| 920 | + $option_args = $args; |
|
| 921 | + $option_args['value'] = $value; |
|
| 922 | + $option_args['label'] = $label; |
|
| 923 | + $option_args['checked'] = $value == $args['value'] ? true : false; |
|
| 924 | + $output .= self::radio_option($option_args,$count); |
|
| 925 | + $count++; |
|
| 926 | + } |
|
| 927 | + } |
|
| 928 | + |
|
| 929 | + // help text |
|
| 930 | + $help_text = ! empty( $args['help_text'] ) ? AUI_Component_Helper::help_text( $args['help_text'] ) : ''; |
|
| 931 | + $output .= $help_text; |
|
| 932 | + |
|
| 933 | + // maybe horizontal label |
|
| 934 | + if($args['label_type']=='horizontal'){ |
|
| 935 | + $output .= '</div>'; |
|
| 936 | + } |
|
| 937 | + |
|
| 938 | + // wrap |
|
| 939 | + $wrap_class = $args['label_type']=='horizontal' ? 'form-group row' : 'form-group'; |
|
| 940 | + $wrap_class = !empty($args['wrap_class']) ? $wrap_class." ".$args['wrap_class'] : $wrap_class; |
|
| 941 | + $output = self::wrap(array( |
|
| 942 | + 'content' => $output, |
|
| 943 | + 'class' => $wrap_class, |
|
| 944 | + 'element_require' => $args['element_require'], |
|
| 945 | + 'argument_id' => $args['id'], |
|
| 946 | + 'wrap_attributes' => $args['wrap_attributes'], |
|
| 947 | + )); |
|
| 948 | + |
|
| 949 | + |
|
| 950 | + return $output; |
|
| 951 | + } |
|
| 952 | + |
|
| 953 | + /** |
|
| 954 | + * Build the component. |
|
| 955 | + * |
|
| 956 | + * @param array $args |
|
| 957 | + * |
|
| 958 | + * @return string The rendered component. |
|
| 959 | + */ |
|
| 960 | + public static function radio_option($args = array(),$count = ''){ |
|
| 961 | + $defaults = array( |
|
| 962 | + 'class' => '', |
|
| 963 | + 'id' => '', |
|
| 964 | + 'title' => '', |
|
| 965 | + 'value' => '', |
|
| 966 | + 'required' => false, |
|
| 967 | + 'inline' => true, |
|
| 968 | + 'label' => '', |
|
| 969 | + 'options' => array(), |
|
| 970 | + 'icon' => '', |
|
| 971 | + 'no_wrap' => false, |
|
| 972 | + 'extra_attributes' => array() // an array of extra attributes |
|
| 973 | + ); |
|
| 974 | + |
|
| 975 | + /** |
|
| 976 | + * Parse incoming $args into an array and merge it with $defaults |
|
| 977 | + */ |
|
| 978 | + $args = wp_parse_args( $args, $defaults ); |
|
| 979 | + |
|
| 980 | + $output = ''; |
|
| 981 | + |
|
| 982 | + // open/type |
|
| 983 | + $output .= '<input type="radio"'; |
|
| 984 | + |
|
| 985 | + // class |
|
| 986 | + $output .= ' class="form-check-input" '; |
|
| 987 | + |
|
| 988 | + // name |
|
| 989 | + if(!empty($args['name'])){ |
|
| 990 | + $output .= AUI_Component_Helper::name($args['name']); |
|
| 991 | + } |
|
| 992 | + |
|
| 993 | + // id |
|
| 994 | + if(!empty($args['id'])){ |
|
| 995 | + $output .= AUI_Component_Helper::id($args['id'].$count); |
|
| 996 | + } |
|
| 997 | + |
|
| 998 | + // title |
|
| 999 | + if(!empty($args['title'])){ |
|
| 1000 | + $output .= AUI_Component_Helper::title($args['title']); |
|
| 1001 | + } |
|
| 1002 | + |
|
| 1003 | + // value |
|
| 1004 | + if(isset($args['value'])){ |
|
| 1005 | + $output .= AUI_Component_Helper::value($args['value']); |
|
| 1006 | + } |
|
| 1007 | + |
|
| 1008 | + // checked, for radio and checkboxes |
|
| 1009 | + if( $args['checked'] ){ |
|
| 1010 | + $output .= ' checked '; |
|
| 1011 | + } |
|
| 1012 | + |
|
| 1013 | + // data-attributes |
|
| 1014 | + $output .= AUI_Component_Helper::data_attributes($args); |
|
| 1015 | + |
|
| 1016 | + // aria-attributes |
|
| 1017 | + $output .= AUI_Component_Helper::aria_attributes($args); |
|
| 1018 | + |
|
| 1019 | + // extra attributes |
|
| 1020 | + if(!empty($args['extra_attributes'])){ |
|
| 1021 | + $output .= AUI_Component_Helper::extra_attributes($args['extra_attributes']); |
|
| 1022 | + } |
|
| 1023 | + |
|
| 1024 | + // required |
|
| 1025 | + if(!empty($args['required'])){ |
|
| 1026 | + $output .= ' required '; |
|
| 1027 | + } |
|
| 1028 | + |
|
| 1029 | + // close opening tag |
|
| 1030 | + $output .= ' >'; |
|
| 1031 | + |
|
| 1032 | + // label |
|
| 1033 | + if(!empty($args['label']) && is_array($args['label'])){ |
|
| 1034 | + }elseif(!empty($args['label'])){ |
|
| 1035 | + $output .= self::label(array('title'=>$args['label'],'for'=>$args['id'].$count,'class'=>'form-check-label'),'radio'); |
|
| 1036 | + } |
|
| 1037 | + |
|
| 1038 | + // wrap |
|
| 1039 | + if ( ! $args['no_wrap'] ) { |
|
| 1040 | + $wrap_class = $args['inline'] ? 'form-check form-check-inline' : 'form-check'; |
|
| 1041 | + |
|
| 1042 | + // Unique wrap class |
|
| 1043 | + $uniq_class = 'fwrap'; |
|
| 1044 | + if ( ! empty( $args['name'] ) ) { |
|
| 1045 | + $uniq_class .= '-' . $args['name']; |
|
| 1046 | + } else if ( ! empty( $args['id'] ) ) { |
|
| 1047 | + $uniq_class .= '-' . $args['id']; |
|
| 1048 | + } |
|
| 1049 | + |
|
| 1050 | + if ( isset( $args['value'] ) || $args['value'] !== "" ) { |
|
| 1051 | + $uniq_class .= '-' . $args['value']; |
|
| 1052 | + } else { |
|
| 1053 | + $uniq_class .= '-' . $count; |
|
| 1054 | + } |
|
| 1055 | + $wrap_class .= ' ' . sanitize_html_class( $uniq_class ); |
|
| 1056 | + |
|
| 1057 | + $output = self::wrap(array( |
|
| 1058 | + 'content' => $output, |
|
| 1059 | + 'class' => $wrap_class |
|
| 1060 | + )); |
|
| 1061 | + } |
|
| 1062 | + |
|
| 1063 | + return $output; |
|
| 1064 | + } |
|
| 1065 | 1065 | |
| 1066 | 1066 | } |
| 1067 | 1067 | \ No newline at end of file |
@@ -14,30 +14,30 @@ discard block |
||
| 14 | 14 | class WPInv_Invoice extends GetPaid_Data { |
| 15 | 15 | |
| 16 | 16 | /** |
| 17 | - * Which data store to load. |
|
| 18 | - * |
|
| 19 | - * @var string |
|
| 20 | - */ |
|
| 17 | + * Which data store to load. |
|
| 18 | + * |
|
| 19 | + * @var string |
|
| 20 | + */ |
|
| 21 | 21 | protected $data_store_name = 'invoice'; |
| 22 | 22 | |
| 23 | 23 | /** |
| 24 | - * This is the name of this object type. |
|
| 25 | - * |
|
| 26 | - * @var string |
|
| 27 | - */ |
|
| 24 | + * This is the name of this object type. |
|
| 25 | + * |
|
| 26 | + * @var string |
|
| 27 | + */ |
|
| 28 | 28 | protected $object_type = 'invoice'; |
| 29 | 29 | |
| 30 | 30 | /** |
| 31 | - * Item Data array. This is the core item data exposed in APIs. |
|
| 32 | - * |
|
| 33 | - * @since 1.0.19 |
|
| 34 | - * @var array |
|
| 35 | - */ |
|
| 36 | - protected $data = array( |
|
| 37 | - 'parent_id' => 0, |
|
| 38 | - 'status' => 'wpi-pending', |
|
| 39 | - 'version' => '', |
|
| 40 | - 'date_created' => null, |
|
| 31 | + * Item Data array. This is the core item data exposed in APIs. |
|
| 32 | + * |
|
| 33 | + * @since 1.0.19 |
|
| 34 | + * @var array |
|
| 35 | + */ |
|
| 36 | + protected $data = array( |
|
| 37 | + 'parent_id' => 0, |
|
| 38 | + 'status' => 'wpi-pending', |
|
| 39 | + 'version' => '', |
|
| 40 | + 'date_created' => null, |
|
| 41 | 41 | 'date_modified' => null, |
| 42 | 42 | 'due_date' => null, |
| 43 | 43 | 'completed_date' => null, |
@@ -60,7 +60,7 @@ discard block |
||
| 60 | 60 | 'state' => null, |
| 61 | 61 | 'zip' => null, |
| 62 | 62 | 'company' => null, |
| 63 | - 'company_id' => null, |
|
| 63 | + 'company_id' => null, |
|
| 64 | 64 | 'vat_number' => null, |
| 65 | 65 | 'vat_rate' => null, |
| 66 | 66 | 'address' => null, |
@@ -68,8 +68,8 @@ discard block |
||
| 68 | 68 | 'subtotal' => 0, |
| 69 | 69 | 'total_discount' => 0, |
| 70 | 70 | 'total_tax' => 0, |
| 71 | - 'total_fees' => 0, |
|
| 72 | - 'total' => 0, |
|
| 71 | + 'total_fees' => 0, |
|
| 72 | + 'total' => 0, |
|
| 73 | 73 | 'fees' => array(), |
| 74 | 74 | 'discounts' => array(), |
| 75 | 75 | 'taxes' => array(), |
@@ -81,22 +81,22 @@ discard block |
||
| 81 | 81 | 'transaction_id' => '', |
| 82 | 82 | 'currency' => '', |
| 83 | 83 | 'disable_taxes' => false, |
| 84 | - 'subscription_id' => null, |
|
| 85 | - 'remote_subscription_id' => null, |
|
| 86 | - 'is_viewed' => false, |
|
| 87 | - 'email_cc' => '', |
|
| 88 | - 'template' => 'quantity', // hours, amount only |
|
| 89 | - 'created_via' => null, |
|
| 84 | + 'subscription_id' => null, |
|
| 85 | + 'remote_subscription_id' => null, |
|
| 86 | + 'is_viewed' => false, |
|
| 87 | + 'email_cc' => '', |
|
| 88 | + 'template' => 'quantity', // hours, amount only |
|
| 89 | + 'created_via' => null, |
|
| 90 | 90 | ); |
| 91 | 91 | |
| 92 | 92 | /** |
| 93 | - * Stores meta in cache for future reads. |
|
| 94 | - * |
|
| 95 | - * A group must be set to to enable caching. |
|
| 96 | - * |
|
| 97 | - * @var string |
|
| 98 | - */ |
|
| 99 | - protected $cache_group = 'getpaid_invoices'; |
|
| 93 | + * Stores meta in cache for future reads. |
|
| 94 | + * |
|
| 95 | + * A group must be set to to enable caching. |
|
| 96 | + * |
|
| 97 | + * @var string |
|
| 98 | + */ |
|
| 99 | + protected $cache_group = 'getpaid_invoices'; |
|
| 100 | 100 | |
| 101 | 101 | /** |
| 102 | 102 | * Stores a reference to the original WP_Post object |
@@ -110,111 +110,111 @@ discard block |
||
| 110 | 110 | * |
| 111 | 111 | * @var int |
| 112 | 112 | */ |
| 113 | - protected $recurring_item = null; |
|
| 113 | + protected $recurring_item = null; |
|
| 114 | 114 | |
| 115 | - /** |
|
| 115 | + /** |
|
| 116 | 116 | * Stores an array of item totals. |
| 117 | - * |
|
| 118 | - * e.g $totals['discount'] = array( |
|
| 119 | - * 'initial' => 10, |
|
| 120 | - * 'recurring' => 10, |
|
| 121 | - * ) |
|
| 117 | + * |
|
| 118 | + * e.g $totals['discount'] = array( |
|
| 119 | + * 'initial' => 10, |
|
| 120 | + * 'recurring' => 10, |
|
| 121 | + * ) |
|
| 122 | 122 | * |
| 123 | 123 | * @var array |
| 124 | 124 | */ |
| 125 | - protected $totals = array(); |
|
| 125 | + protected $totals = array(); |
|
| 126 | 126 | |
| 127 | - /** |
|
| 127 | + /** |
|
| 128 | 128 | * Tax rate. |
| 129 | - * |
|
| 129 | + * |
|
| 130 | 130 | * @var float |
| 131 | 131 | */ |
| 132 | - protected $tax_rate = 0; |
|
| 132 | + protected $tax_rate = 0; |
|
| 133 | 133 | |
| 134 | - /** |
|
| 135 | - * Stores the status transition information. |
|
| 136 | - * |
|
| 137 | - * @since 1.0.19 |
|
| 138 | - * @var bool|array |
|
| 139 | - */ |
|
| 140 | - protected $status_transition = false; |
|
| 134 | + /** |
|
| 135 | + * Stores the status transition information. |
|
| 136 | + * |
|
| 137 | + * @since 1.0.19 |
|
| 138 | + * @var bool|array |
|
| 139 | + */ |
|
| 140 | + protected $status_transition = false; |
|
| 141 | 141 | |
| 142 | 142 | /** |
| 143 | - * Get the invoice if ID is passed, otherwise the invoice is new and empty. |
|
| 144 | - * |
|
| 145 | - * @param int|string|object|WPInv_Invoice|WPInv_Legacy_Invoice|WP_Post $invoice Invoice id, key, transaction id, number or object to read. |
|
| 146 | - */ |
|
| 143 | + * Get the invoice if ID is passed, otherwise the invoice is new and empty. |
|
| 144 | + * |
|
| 145 | + * @param int|string|object|WPInv_Invoice|WPInv_Legacy_Invoice|WP_Post $invoice Invoice id, key, transaction id, number or object to read. |
|
| 146 | + */ |
|
| 147 | 147 | public function __construct( $invoice = 0 ) { |
| 148 | 148 | |
| 149 | 149 | parent::__construct( $invoice ); |
| 150 | 150 | |
| 151 | - if ( ! empty( $invoice ) && is_numeric( $invoice ) && getpaid_is_invoice_post_type( get_post_type( (int) $invoice ) ) ) { |
|
| 152 | - $this->set_id( (int) $invoice ); |
|
| 153 | - } elseif ( $invoice instanceof self ) { |
|
| 154 | - $this->set_id( $invoice->get_id() ); |
|
| 155 | - } elseif ( ! empty( $invoice->ID ) ) { |
|
| 156 | - $this->set_id( $invoice->ID ); |
|
| 157 | - } elseif ( is_array( $invoice ) ) { |
|
| 158 | - $this->set_props( $invoice ); |
|
| 159 | - |
|
| 160 | - if ( isset( $invoice['ID'] ) ) { |
|
| 161 | - $this->set_id( $invoice['ID'] ); |
|
| 162 | - } |
|
| 163 | - |
|
| 164 | - } elseif ( is_string( $invoice ) && $invoice_id = self::get_invoice_id_by_field( $invoice, 'key' ) ) { |
|
| 165 | - $this->set_id( $invoice_id ); |
|
| 166 | - } elseif ( is_string( $invoice ) && $invoice_id = self::get_invoice_id_by_field( $invoice, 'number' ) ) { |
|
| 167 | - $this->set_id( $invoice_id ); |
|
| 168 | - } elseif ( is_string( $invoice ) && $invoice_id = self::get_invoice_id_by_field( $invoice, 'transaction_id' ) ) { |
|
| 169 | - $this->set_id( $invoice_id ); |
|
| 170 | - } else { |
|
| 171 | - $this->set_object_read( true ); |
|
| 172 | - } |
|
| 151 | + if ( ! empty( $invoice ) && is_numeric( $invoice ) && getpaid_is_invoice_post_type( get_post_type( (int) $invoice ) ) ) { |
|
| 152 | + $this->set_id( (int) $invoice ); |
|
| 153 | + } elseif ( $invoice instanceof self ) { |
|
| 154 | + $this->set_id( $invoice->get_id() ); |
|
| 155 | + } elseif ( ! empty( $invoice->ID ) ) { |
|
| 156 | + $this->set_id( $invoice->ID ); |
|
| 157 | + } elseif ( is_array( $invoice ) ) { |
|
| 158 | + $this->set_props( $invoice ); |
|
| 159 | + |
|
| 160 | + if ( isset( $invoice['ID'] ) ) { |
|
| 161 | + $this->set_id( $invoice['ID'] ); |
|
| 162 | + } |
|
| 163 | + |
|
| 164 | + } elseif ( is_string( $invoice ) && $invoice_id = self::get_invoice_id_by_field( $invoice, 'key' ) ) { |
|
| 165 | + $this->set_id( $invoice_id ); |
|
| 166 | + } elseif ( is_string( $invoice ) && $invoice_id = self::get_invoice_id_by_field( $invoice, 'number' ) ) { |
|
| 167 | + $this->set_id( $invoice_id ); |
|
| 168 | + } elseif ( is_string( $invoice ) && $invoice_id = self::get_invoice_id_by_field( $invoice, 'transaction_id' ) ) { |
|
| 169 | + $this->set_id( $invoice_id ); |
|
| 170 | + } else { |
|
| 171 | + $this->set_object_read( true ); |
|
| 172 | + } |
|
| 173 | 173 | |
| 174 | 174 | // Load the datastore. |
| 175 | - $this->data_store = GetPaid_Data_Store::load( $this->data_store_name ); |
|
| 175 | + $this->data_store = GetPaid_Data_Store::load( $this->data_store_name ); |
|
| 176 | 176 | |
| 177 | - if ( $this->get_id() > 0 ) { |
|
| 177 | + if ( $this->get_id() > 0 ) { |
|
| 178 | 178 | $this->post = get_post( $this->get_id() ); |
| 179 | 179 | $this->ID = $this->get_id(); |
| 180 | - $this->data_store->read( $this ); |
|
| 180 | + $this->data_store->read( $this ); |
|
| 181 | 181 | } |
| 182 | 182 | |
| 183 | 183 | } |
| 184 | 184 | |
| 185 | 185 | /** |
| 186 | - * Given an invoice key/number, it returns its id. |
|
| 187 | - * |
|
| 188 | - * |
|
| 189 | - * @static |
|
| 190 | - * @param string $value The invoice key or number |
|
| 191 | - * @param string $field Either key, transaction_id or number. |
|
| 192 | - * @since 1.0.15 |
|
| 193 | - * @return int |
|
| 194 | - */ |
|
| 195 | - public static function get_invoice_id_by_field( $value, $field = 'key' ) { |
|
| 186 | + * Given an invoice key/number, it returns its id. |
|
| 187 | + * |
|
| 188 | + * |
|
| 189 | + * @static |
|
| 190 | + * @param string $value The invoice key or number |
|
| 191 | + * @param string $field Either key, transaction_id or number. |
|
| 192 | + * @since 1.0.15 |
|
| 193 | + * @return int |
|
| 194 | + */ |
|
| 195 | + public static function get_invoice_id_by_field( $value, $field = 'key' ) { |
|
| 196 | 196 | global $wpdb; |
| 197 | 197 | |
| 198 | - // Trim the value. |
|
| 199 | - $value = trim( $value ); |
|
| 198 | + // Trim the value. |
|
| 199 | + $value = trim( $value ); |
|
| 200 | 200 | |
| 201 | - if ( empty( $value ) ) { |
|
| 202 | - return 0; |
|
| 203 | - } |
|
| 201 | + if ( empty( $value ) ) { |
|
| 202 | + return 0; |
|
| 203 | + } |
|
| 204 | 204 | |
| 205 | 205 | // Valid fields. |
| 206 | 206 | $fields = array( 'key', 'number', 'transaction_id' ); |
| 207 | 207 | |
| 208 | - // Ensure a field has been passed. |
|
| 209 | - if ( empty( $field ) || ! in_array( $field, $fields ) ) { |
|
| 210 | - return 0; |
|
| 211 | - } |
|
| 208 | + // Ensure a field has been passed. |
|
| 209 | + if ( empty( $field ) || ! in_array( $field, $fields ) ) { |
|
| 210 | + return 0; |
|
| 211 | + } |
|
| 212 | 212 | |
| 213 | - // Maybe retrieve from the cache. |
|
| 214 | - $invoice_id = wp_cache_get( $value, "getpaid_invoice_{$field}s_to_invoice_ids" ); |
|
| 215 | - if ( false !== $invoice_id ) { |
|
| 216 | - return $invoice_id; |
|
| 217 | - } |
|
| 213 | + // Maybe retrieve from the cache. |
|
| 214 | + $invoice_id = wp_cache_get( $value, "getpaid_invoice_{$field}s_to_invoice_ids" ); |
|
| 215 | + if ( false !== $invoice_id ) { |
|
| 216 | + return $invoice_id; |
|
| 217 | + } |
|
| 218 | 218 | |
| 219 | 219 | // Fetch from the db. |
| 220 | 220 | $table = $wpdb->prefix . 'getpaid_invoices'; |
@@ -222,10 +222,10 @@ discard block |
||
| 222 | 222 | $wpdb->prepare( "SELECT `post_id` FROM $table WHERE `$field`=%s LIMIT 1", $value ) |
| 223 | 223 | ); |
| 224 | 224 | |
| 225 | - // Update the cache with our data |
|
| 226 | - wp_cache_set( $value, $invoice_id, "getpaid_invoice_{$field}s_to_invoice_ids" ); |
|
| 225 | + // Update the cache with our data |
|
| 226 | + wp_cache_set( $value, $invoice_id, "getpaid_invoice_{$field}s_to_invoice_ids" ); |
|
| 227 | 227 | |
| 228 | - return $invoice_id; |
|
| 228 | + return $invoice_id; |
|
| 229 | 229 | } |
| 230 | 230 | |
| 231 | 231 | /** |
@@ -251,83 +251,83 @@ discard block |
||
| 251 | 251 | */ |
| 252 | 252 | |
| 253 | 253 | /** |
| 254 | - * Get parent invoice ID. |
|
| 255 | - * |
|
| 256 | - * @since 1.0.19 |
|
| 257 | - * @param string $context View or edit context. |
|
| 258 | - * @return int |
|
| 259 | - */ |
|
| 260 | - public function get_parent_id( $context = 'view' ) { |
|
| 261 | - return (int) $this->get_prop( 'parent_id', $context ); |
|
| 254 | + * Get parent invoice ID. |
|
| 255 | + * |
|
| 256 | + * @since 1.0.19 |
|
| 257 | + * @param string $context View or edit context. |
|
| 258 | + * @return int |
|
| 259 | + */ |
|
| 260 | + public function get_parent_id( $context = 'view' ) { |
|
| 261 | + return (int) $this->get_prop( 'parent_id', $context ); |
|
| 262 | 262 | } |
| 263 | 263 | |
| 264 | 264 | /** |
| 265 | - * Get parent invoice. |
|
| 266 | - * |
|
| 267 | - * @since 1.0.19 |
|
| 268 | - * @return WPInv_Invoice |
|
| 269 | - */ |
|
| 265 | + * Get parent invoice. |
|
| 266 | + * |
|
| 267 | + * @since 1.0.19 |
|
| 268 | + * @return WPInv_Invoice |
|
| 269 | + */ |
|
| 270 | 270 | public function get_parent_payment() { |
| 271 | 271 | return new WPInv_Invoice( $this->get_parent_id() ); |
| 272 | 272 | } |
| 273 | 273 | |
| 274 | 274 | /** |
| 275 | - * Alias for self::get_parent_payment(). |
|
| 276 | - * |
|
| 277 | - * @since 1.0.19 |
|
| 278 | - * @return WPInv_Invoice |
|
| 279 | - */ |
|
| 275 | + * Alias for self::get_parent_payment(). |
|
| 276 | + * |
|
| 277 | + * @since 1.0.19 |
|
| 278 | + * @return WPInv_Invoice |
|
| 279 | + */ |
|
| 280 | 280 | public function get_parent() { |
| 281 | 281 | return $this->get_parent_payment(); |
| 282 | 282 | } |
| 283 | 283 | |
| 284 | 284 | /** |
| 285 | - * Get invoice status. |
|
| 286 | - * |
|
| 287 | - * @since 1.0.19 |
|
| 288 | - * @param string $context View or edit context. |
|
| 289 | - * @return string |
|
| 290 | - */ |
|
| 291 | - public function get_status( $context = 'view' ) { |
|
| 292 | - return $this->get_prop( 'status', $context ); |
|
| 293 | - } |
|
| 285 | + * Get invoice status. |
|
| 286 | + * |
|
| 287 | + * @since 1.0.19 |
|
| 288 | + * @param string $context View or edit context. |
|
| 289 | + * @return string |
|
| 290 | + */ |
|
| 291 | + public function get_status( $context = 'view' ) { |
|
| 292 | + return $this->get_prop( 'status', $context ); |
|
| 293 | + } |
|
| 294 | 294 | |
| 295 | - /** |
|
| 296 | - * Retrieves an array of possible invoice statuses. |
|
| 297 | - * |
|
| 298 | - * @since 1.0.19 |
|
| 299 | - * @return array |
|
| 300 | - */ |
|
| 301 | - public function get_all_statuses() { |
|
| 302 | - return wpinv_get_invoice_statuses( true, true, $this ); |
|
| 303 | - } |
|
| 304 | - |
|
| 305 | - /** |
|
| 306 | - * Get invoice status nice name. |
|
| 307 | - * |
|
| 308 | - * @since 1.0.19 |
|
| 309 | - * @return string |
|
| 310 | - */ |
|
| 295 | + /** |
|
| 296 | + * Retrieves an array of possible invoice statuses. |
|
| 297 | + * |
|
| 298 | + * @since 1.0.19 |
|
| 299 | + * @return array |
|
| 300 | + */ |
|
| 301 | + public function get_all_statuses() { |
|
| 302 | + return wpinv_get_invoice_statuses( true, true, $this ); |
|
| 303 | + } |
|
| 304 | + |
|
| 305 | + /** |
|
| 306 | + * Get invoice status nice name. |
|
| 307 | + * |
|
| 308 | + * @since 1.0.19 |
|
| 309 | + * @return string |
|
| 310 | + */ |
|
| 311 | 311 | public function get_status_nicename() { |
| 312 | - $statuses = $this->get_all_statuses(); |
|
| 312 | + $statuses = $this->get_all_statuses(); |
|
| 313 | 313 | |
| 314 | 314 | $status = isset( $statuses[ $this->get_status() ] ) ? $statuses[ $this->get_status() ] : $this->get_status(); |
| 315 | 315 | |
| 316 | 316 | return apply_filters( 'wpinv_get_invoice_status_nicename', $status, $this ); |
| 317 | 317 | } |
| 318 | 318 | |
| 319 | - /** |
|
| 320 | - * Retrieves the invoice status class |
|
| 321 | - * |
|
| 322 | - * @since 1.0.19 |
|
| 323 | - * @return string |
|
| 324 | - */ |
|
| 325 | - public function get_status_class() { |
|
| 326 | - $statuses = getpaid_get_invoice_status_classes(); |
|
| 327 | - return isset( $statuses[ $this->get_status() ] ) ? $statuses[ $this->get_status() ] : 'badge-dark'; |
|
| 328 | - } |
|
| 319 | + /** |
|
| 320 | + * Retrieves the invoice status class |
|
| 321 | + * |
|
| 322 | + * @since 1.0.19 |
|
| 323 | + * @return string |
|
| 324 | + */ |
|
| 325 | + public function get_status_class() { |
|
| 326 | + $statuses = getpaid_get_invoice_status_classes(); |
|
| 327 | + return isset( $statuses[ $this->get_status() ] ) ? $statuses[ $this->get_status() ] : 'badge-dark'; |
|
| 328 | + } |
|
| 329 | 329 | |
| 330 | - /** |
|
| 330 | + /** |
|
| 331 | 331 | * Retrieves the invoice status label html |
| 332 | 332 | * |
| 333 | 333 | * @since 1.0.0 |
@@ -335,263 +335,263 @@ discard block |
||
| 335 | 335 | */ |
| 336 | 336 | public function get_status_label_html() { |
| 337 | 337 | |
| 338 | - $status_label = sanitize_text_field( $this->get_status_nicename() ); |
|
| 339 | - $status = sanitize_html_class( $this->get_status() ); |
|
| 340 | - $class = esc_attr( $this->get_status_class() ); |
|
| 338 | + $status_label = sanitize_text_field( $this->get_status_nicename() ); |
|
| 339 | + $status = sanitize_html_class( $this->get_status() ); |
|
| 340 | + $class = esc_attr( $this->get_status_class() ); |
|
| 341 | 341 | |
| 342 | - return "<span class='bsui'><span class='badge $class $status'>$status_label</span></span>"; |
|
| 343 | - } |
|
| 342 | + return "<span class='bsui'><span class='badge $class $status'>$status_label</span></span>"; |
|
| 343 | + } |
|
| 344 | 344 | |
| 345 | 345 | /** |
| 346 | - * Get plugin version when the invoice was created. |
|
| 347 | - * |
|
| 348 | - * @since 1.0.19 |
|
| 349 | - * @param string $context View or edit context. |
|
| 350 | - * @return string |
|
| 351 | - */ |
|
| 352 | - public function get_version( $context = 'view' ) { |
|
| 353 | - return $this->get_prop( 'version', $context ); |
|
| 354 | - } |
|
| 346 | + * Get plugin version when the invoice was created. |
|
| 347 | + * |
|
| 348 | + * @since 1.0.19 |
|
| 349 | + * @param string $context View or edit context. |
|
| 350 | + * @return string |
|
| 351 | + */ |
|
| 352 | + public function get_version( $context = 'view' ) { |
|
| 353 | + return $this->get_prop( 'version', $context ); |
|
| 354 | + } |
|
| 355 | 355 | |
| 356 | - /** |
|
| 357 | - * @deprecated |
|
| 358 | - */ |
|
| 359 | - public function get_invoice_date( $format = true ) { |
|
| 360 | - $date = getpaid_format_date( $this->get_date_completed() ); |
|
| 361 | - $date = empty( $date ) ? $this->get_date_created() : $this->get_date_completed(); |
|
| 362 | - $formatted = getpaid_format_date( $date ); |
|
| 356 | + /** |
|
| 357 | + * @deprecated |
|
| 358 | + */ |
|
| 359 | + public function get_invoice_date( $format = true ) { |
|
| 360 | + $date = getpaid_format_date( $this->get_date_completed() ); |
|
| 361 | + $date = empty( $date ) ? $this->get_date_created() : $this->get_date_completed(); |
|
| 362 | + $formatted = getpaid_format_date( $date ); |
|
| 363 | 363 | |
| 364 | - if ( $format ) { |
|
| 365 | - return $formatted; |
|
| 366 | - } |
|
| 364 | + if ( $format ) { |
|
| 365 | + return $formatted; |
|
| 366 | + } |
|
| 367 | 367 | |
| 368 | - return empty( $formatted ) ? '' : $date; |
|
| 368 | + return empty( $formatted ) ? '' : $date; |
|
| 369 | 369 | |
| 370 | 370 | } |
| 371 | 371 | |
| 372 | 372 | /** |
| 373 | - * Get date when the invoice was created. |
|
| 374 | - * |
|
| 375 | - * @since 1.0.19 |
|
| 376 | - * @param string $context View or edit context. |
|
| 377 | - * @return string |
|
| 378 | - */ |
|
| 379 | - public function get_date_created( $context = 'view' ) { |
|
| 380 | - return $this->get_prop( 'date_created', $context ); |
|
| 381 | - } |
|
| 373 | + * Get date when the invoice was created. |
|
| 374 | + * |
|
| 375 | + * @since 1.0.19 |
|
| 376 | + * @param string $context View or edit context. |
|
| 377 | + * @return string |
|
| 378 | + */ |
|
| 379 | + public function get_date_created( $context = 'view' ) { |
|
| 380 | + return $this->get_prop( 'date_created', $context ); |
|
| 381 | + } |
|
| 382 | 382 | |
| 383 | - /** |
|
| 384 | - * Alias for self::get_date_created(). |
|
| 385 | - * |
|
| 386 | - * @since 1.0.19 |
|
| 387 | - * @param string $context View or edit context. |
|
| 388 | - * @return string |
|
| 389 | - */ |
|
| 390 | - public function get_created_date( $context = 'view' ) { |
|
| 391 | - return $this->get_date_created( $context ); |
|
| 392 | - } |
|
| 393 | - |
|
| 394 | - /** |
|
| 395 | - * Get GMT date when the invoice was created. |
|
| 396 | - * |
|
| 397 | - * @since 1.0.19 |
|
| 398 | - * @param string $context View or edit context. |
|
| 399 | - * @return string |
|
| 400 | - */ |
|
| 401 | - public function get_date_created_gmt( $context = 'view' ) { |
|
| 383 | + /** |
|
| 384 | + * Alias for self::get_date_created(). |
|
| 385 | + * |
|
| 386 | + * @since 1.0.19 |
|
| 387 | + * @param string $context View or edit context. |
|
| 388 | + * @return string |
|
| 389 | + */ |
|
| 390 | + public function get_created_date( $context = 'view' ) { |
|
| 391 | + return $this->get_date_created( $context ); |
|
| 392 | + } |
|
| 393 | + |
|
| 394 | + /** |
|
| 395 | + * Get GMT date when the invoice was created. |
|
| 396 | + * |
|
| 397 | + * @since 1.0.19 |
|
| 398 | + * @param string $context View or edit context. |
|
| 399 | + * @return string |
|
| 400 | + */ |
|
| 401 | + public function get_date_created_gmt( $context = 'view' ) { |
|
| 402 | 402 | $date = $this->get_date_created( $context ); |
| 403 | 403 | |
| 404 | 404 | if ( $date ) { |
| 405 | 405 | $date = get_gmt_from_date( $date ); |
| 406 | 406 | } |
| 407 | - return $date; |
|
| 407 | + return $date; |
|
| 408 | 408 | } |
| 409 | 409 | |
| 410 | 410 | /** |
| 411 | - * Get date when the invoice was last modified. |
|
| 412 | - * |
|
| 413 | - * @since 1.0.19 |
|
| 414 | - * @param string $context View or edit context. |
|
| 415 | - * @return string |
|
| 416 | - */ |
|
| 417 | - public function get_date_modified( $context = 'view' ) { |
|
| 418 | - return $this->get_prop( 'date_modified', $context ); |
|
| 419 | - } |
|
| 411 | + * Get date when the invoice was last modified. |
|
| 412 | + * |
|
| 413 | + * @since 1.0.19 |
|
| 414 | + * @param string $context View or edit context. |
|
| 415 | + * @return string |
|
| 416 | + */ |
|
| 417 | + public function get_date_modified( $context = 'view' ) { |
|
| 418 | + return $this->get_prop( 'date_modified', $context ); |
|
| 419 | + } |
|
| 420 | 420 | |
| 421 | - /** |
|
| 422 | - * Alias for self::get_date_modified(). |
|
| 423 | - * |
|
| 424 | - * @since 1.0.19 |
|
| 425 | - * @param string $context View or edit context. |
|
| 426 | - * @return string |
|
| 427 | - */ |
|
| 428 | - public function get_modified_date( $context = 'view' ) { |
|
| 429 | - return $this->get_date_modified( $context ); |
|
| 421 | + /** |
|
| 422 | + * Alias for self::get_date_modified(). |
|
| 423 | + * |
|
| 424 | + * @since 1.0.19 |
|
| 425 | + * @param string $context View or edit context. |
|
| 426 | + * @return string |
|
| 427 | + */ |
|
| 428 | + public function get_modified_date( $context = 'view' ) { |
|
| 429 | + return $this->get_date_modified( $context ); |
|
| 430 | 430 | } |
| 431 | 431 | |
| 432 | 432 | /** |
| 433 | - * Get GMT date when the invoice was last modified. |
|
| 434 | - * |
|
| 435 | - * @since 1.0.19 |
|
| 436 | - * @param string $context View or edit context. |
|
| 437 | - * @return string |
|
| 438 | - */ |
|
| 439 | - public function get_date_modified_gmt( $context = 'view' ) { |
|
| 433 | + * Get GMT date when the invoice was last modified. |
|
| 434 | + * |
|
| 435 | + * @since 1.0.19 |
|
| 436 | + * @param string $context View or edit context. |
|
| 437 | + * @return string |
|
| 438 | + */ |
|
| 439 | + public function get_date_modified_gmt( $context = 'view' ) { |
|
| 440 | 440 | $date = $this->get_date_modified( $context ); |
| 441 | 441 | |
| 442 | 442 | if ( $date ) { |
| 443 | 443 | $date = get_gmt_from_date( $date ); |
| 444 | 444 | } |
| 445 | - return $date; |
|
| 445 | + return $date; |
|
| 446 | 446 | } |
| 447 | 447 | |
| 448 | 448 | /** |
| 449 | - * Get the invoice due date. |
|
| 450 | - * |
|
| 451 | - * @since 1.0.19 |
|
| 452 | - * @param string $context View or edit context. |
|
| 453 | - * @return string |
|
| 454 | - */ |
|
| 455 | - public function get_due_date( $context = 'view' ) { |
|
| 456 | - return $this->get_prop( 'due_date', $context ); |
|
| 449 | + * Get the invoice due date. |
|
| 450 | + * |
|
| 451 | + * @since 1.0.19 |
|
| 452 | + * @param string $context View or edit context. |
|
| 453 | + * @return string |
|
| 454 | + */ |
|
| 455 | + public function get_due_date( $context = 'view' ) { |
|
| 456 | + return $this->get_prop( 'due_date', $context ); |
|
| 457 | 457 | } |
| 458 | 458 | |
| 459 | 459 | /** |
| 460 | - * Alias for self::get_due_date(). |
|
| 461 | - * |
|
| 462 | - * @since 1.0.19 |
|
| 463 | - * @param string $context View or edit context. |
|
| 464 | - * @return string |
|
| 465 | - */ |
|
| 466 | - public function get_date_due( $context = 'view' ) { |
|
| 467 | - return $this->get_due_date( $context ); |
|
| 460 | + * Alias for self::get_due_date(). |
|
| 461 | + * |
|
| 462 | + * @since 1.0.19 |
|
| 463 | + * @param string $context View or edit context. |
|
| 464 | + * @return string |
|
| 465 | + */ |
|
| 466 | + public function get_date_due( $context = 'view' ) { |
|
| 467 | + return $this->get_due_date( $context ); |
|
| 468 | 468 | } |
| 469 | 469 | |
| 470 | 470 | /** |
| 471 | - * Get the invoice GMT due date. |
|
| 472 | - * |
|
| 473 | - * @since 1.0.19 |
|
| 474 | - * @param string $context View or edit context. |
|
| 475 | - * @return string |
|
| 476 | - */ |
|
| 477 | - public function get_due_date_gmt( $context = 'view' ) { |
|
| 471 | + * Get the invoice GMT due date. |
|
| 472 | + * |
|
| 473 | + * @since 1.0.19 |
|
| 474 | + * @param string $context View or edit context. |
|
| 475 | + * @return string |
|
| 476 | + */ |
|
| 477 | + public function get_due_date_gmt( $context = 'view' ) { |
|
| 478 | 478 | $date = $this->get_due_date( $context ); |
| 479 | 479 | |
| 480 | 480 | if ( $date ) { |
| 481 | 481 | $date = get_gmt_from_date( $date ); |
| 482 | 482 | } |
| 483 | - return $date; |
|
| 483 | + return $date; |
|
| 484 | 484 | } |
| 485 | 485 | |
| 486 | 486 | /** |
| 487 | - * Alias for self::get_due_date_gmt(). |
|
| 488 | - * |
|
| 489 | - * @since 1.0.19 |
|
| 490 | - * @param string $context View or edit context. |
|
| 491 | - * @return string |
|
| 492 | - */ |
|
| 493 | - public function get_gmt_date_due( $context = 'view' ) { |
|
| 494 | - return $this->get_due_date_gmt( $context ); |
|
| 487 | + * Alias for self::get_due_date_gmt(). |
|
| 488 | + * |
|
| 489 | + * @since 1.0.19 |
|
| 490 | + * @param string $context View or edit context. |
|
| 491 | + * @return string |
|
| 492 | + */ |
|
| 493 | + public function get_gmt_date_due( $context = 'view' ) { |
|
| 494 | + return $this->get_due_date_gmt( $context ); |
|
| 495 | 495 | } |
| 496 | 496 | |
| 497 | 497 | /** |
| 498 | - * Get date when the invoice was completed. |
|
| 499 | - * |
|
| 500 | - * @since 1.0.19 |
|
| 501 | - * @param string $context View or edit context. |
|
| 502 | - * @return string |
|
| 503 | - */ |
|
| 504 | - public function get_completed_date( $context = 'view' ) { |
|
| 505 | - return $this->get_prop( 'completed_date', $context ); |
|
| 498 | + * Get date when the invoice was completed. |
|
| 499 | + * |
|
| 500 | + * @since 1.0.19 |
|
| 501 | + * @param string $context View or edit context. |
|
| 502 | + * @return string |
|
| 503 | + */ |
|
| 504 | + public function get_completed_date( $context = 'view' ) { |
|
| 505 | + return $this->get_prop( 'completed_date', $context ); |
|
| 506 | 506 | } |
| 507 | 507 | |
| 508 | 508 | /** |
| 509 | - * Alias for self::get_completed_date(). |
|
| 510 | - * |
|
| 511 | - * @since 1.0.19 |
|
| 512 | - * @param string $context View or edit context. |
|
| 513 | - * @return string |
|
| 514 | - */ |
|
| 515 | - public function get_date_completed( $context = 'view' ) { |
|
| 516 | - return $this->get_completed_date( $context ); |
|
| 509 | + * Alias for self::get_completed_date(). |
|
| 510 | + * |
|
| 511 | + * @since 1.0.19 |
|
| 512 | + * @param string $context View or edit context. |
|
| 513 | + * @return string |
|
| 514 | + */ |
|
| 515 | + public function get_date_completed( $context = 'view' ) { |
|
| 516 | + return $this->get_completed_date( $context ); |
|
| 517 | 517 | } |
| 518 | 518 | |
| 519 | 519 | /** |
| 520 | - * Get GMT date when the invoice was was completed. |
|
| 521 | - * |
|
| 522 | - * @since 1.0.19 |
|
| 523 | - * @param string $context View or edit context. |
|
| 524 | - * @return string |
|
| 525 | - */ |
|
| 526 | - public function get_completed_date_gmt( $context = 'view' ) { |
|
| 520 | + * Get GMT date when the invoice was was completed. |
|
| 521 | + * |
|
| 522 | + * @since 1.0.19 |
|
| 523 | + * @param string $context View or edit context. |
|
| 524 | + * @return string |
|
| 525 | + */ |
|
| 526 | + public function get_completed_date_gmt( $context = 'view' ) { |
|
| 527 | 527 | $date = $this->get_completed_date( $context ); |
| 528 | 528 | |
| 529 | 529 | if ( $date ) { |
| 530 | 530 | $date = get_gmt_from_date( $date ); |
| 531 | 531 | } |
| 532 | - return $date; |
|
| 532 | + return $date; |
|
| 533 | 533 | } |
| 534 | 534 | |
| 535 | 535 | /** |
| 536 | - * Alias for self::get_completed_date_gmt(). |
|
| 537 | - * |
|
| 538 | - * @since 1.0.19 |
|
| 539 | - * @param string $context View or edit context. |
|
| 540 | - * @return string |
|
| 541 | - */ |
|
| 542 | - public function get_gmt_completed_date( $context = 'view' ) { |
|
| 543 | - return $this->get_completed_date_gmt( $context ); |
|
| 536 | + * Alias for self::get_completed_date_gmt(). |
|
| 537 | + * |
|
| 538 | + * @since 1.0.19 |
|
| 539 | + * @param string $context View or edit context. |
|
| 540 | + * @return string |
|
| 541 | + */ |
|
| 542 | + public function get_gmt_completed_date( $context = 'view' ) { |
|
| 543 | + return $this->get_completed_date_gmt( $context ); |
|
| 544 | 544 | } |
| 545 | 545 | |
| 546 | 546 | /** |
| 547 | - * Get the invoice number. |
|
| 548 | - * |
|
| 549 | - * @since 1.0.19 |
|
| 550 | - * @param string $context View or edit context. |
|
| 551 | - * @return string |
|
| 552 | - */ |
|
| 553 | - public function get_number( $context = 'view' ) { |
|
| 554 | - $number = $this->get_prop( 'number', $context ); |
|
| 547 | + * Get the invoice number. |
|
| 548 | + * |
|
| 549 | + * @since 1.0.19 |
|
| 550 | + * @param string $context View or edit context. |
|
| 551 | + * @return string |
|
| 552 | + */ |
|
| 553 | + public function get_number( $context = 'view' ) { |
|
| 554 | + $number = $this->get_prop( 'number', $context ); |
|
| 555 | 555 | |
| 556 | - if ( empty( $number ) ) { |
|
| 557 | - $number = $this->generate_number(); |
|
| 558 | - $this->set_number( $this->generate_number() ); |
|
| 559 | - } |
|
| 556 | + if ( empty( $number ) ) { |
|
| 557 | + $number = $this->generate_number(); |
|
| 558 | + $this->set_number( $this->generate_number() ); |
|
| 559 | + } |
|
| 560 | 560 | |
| 561 | - return $number; |
|
| 561 | + return $number; |
|
| 562 | 562 | } |
| 563 | 563 | |
| 564 | - /** |
|
| 565 | - * Set the invoice number. |
|
| 566 | - * |
|
| 567 | - * @since 1.0.19 |
|
| 568 | - */ |
|
| 569 | - public function maybe_set_number() { |
|
| 564 | + /** |
|
| 565 | + * Set the invoice number. |
|
| 566 | + * |
|
| 567 | + * @since 1.0.19 |
|
| 568 | + */ |
|
| 569 | + public function maybe_set_number() { |
|
| 570 | 570 | $number = $this->get_number(); |
| 571 | 571 | |
| 572 | 572 | if ( empty( $number ) || $this->get_id() == $number ) { |
| 573 | - $this->set_number( $this->generate_number() ); |
|
| 573 | + $this->set_number( $this->generate_number() ); |
|
| 574 | 574 | } |
| 575 | 575 | |
| 576 | - } |
|
| 576 | + } |
|
| 577 | 577 | |
| 578 | 578 | /** |
| 579 | - * Get the invoice key. |
|
| 580 | - * |
|
| 581 | - * @since 1.0.19 |
|
| 582 | - * @param string $context View or edit context. |
|
| 583 | - * @return string |
|
| 584 | - */ |
|
| 585 | - public function get_key( $context = 'view' ) { |
|
| 579 | + * Get the invoice key. |
|
| 580 | + * |
|
| 581 | + * @since 1.0.19 |
|
| 582 | + * @param string $context View or edit context. |
|
| 583 | + * @return string |
|
| 584 | + */ |
|
| 585 | + public function get_key( $context = 'view' ) { |
|
| 586 | 586 | return $this->get_prop( 'key', $context ); |
| 587 | - } |
|
| 588 | - |
|
| 589 | - /** |
|
| 590 | - * Set the invoice key. |
|
| 591 | - * |
|
| 592 | - * @since 1.0.19 |
|
| 593 | - */ |
|
| 594 | - public function maybe_set_key() { |
|
| 587 | + } |
|
| 588 | + |
|
| 589 | + /** |
|
| 590 | + * Set the invoice key. |
|
| 591 | + * |
|
| 592 | + * @since 1.0.19 |
|
| 593 | + */ |
|
| 594 | + public function maybe_set_key() { |
|
| 595 | 595 | $key = $this->get_key(); |
| 596 | 596 | |
| 597 | 597 | if ( empty( $key ) ) { |
@@ -602,140 +602,140 @@ discard block |
||
| 602 | 602 | } |
| 603 | 603 | |
| 604 | 604 | /** |
| 605 | - * Get the invoice type. |
|
| 606 | - * |
|
| 607 | - * @since 1.0.19 |
|
| 608 | - * @param string $context View or edit context. |
|
| 609 | - * @return string |
|
| 610 | - */ |
|
| 611 | - public function get_type( $context = 'view' ) { |
|
| 605 | + * Get the invoice type. |
|
| 606 | + * |
|
| 607 | + * @since 1.0.19 |
|
| 608 | + * @param string $context View or edit context. |
|
| 609 | + * @return string |
|
| 610 | + */ |
|
| 611 | + public function get_type( $context = 'view' ) { |
|
| 612 | 612 | return $this->get_prop( 'type', $context ); |
| 613 | - } |
|
| 614 | - |
|
| 615 | - /** |
|
| 616 | - * Returns the post type name. |
|
| 617 | - * |
|
| 618 | - * @since 1.0.19 |
|
| 619 | - * @return string |
|
| 620 | - */ |
|
| 621 | - public function get_invoice_quote_type() { |
|
| 613 | + } |
|
| 614 | + |
|
| 615 | + /** |
|
| 616 | + * Returns the post type name. |
|
| 617 | + * |
|
| 618 | + * @since 1.0.19 |
|
| 619 | + * @return string |
|
| 620 | + */ |
|
| 621 | + public function get_invoice_quote_type() { |
|
| 622 | 622 | return getpaid_get_post_type_label( $this->get_post_type(), false ); |
| 623 | 623 | } |
| 624 | 624 | |
| 625 | 625 | /** |
| 626 | - * Get the invoice post type label. |
|
| 627 | - * |
|
| 628 | - * @since 1.0.19 |
|
| 629 | - * @param string $context View or edit context. |
|
| 630 | - * @return string |
|
| 631 | - */ |
|
| 632 | - public function get_label( $context = 'view' ) { |
|
| 626 | + * Get the invoice post type label. |
|
| 627 | + * |
|
| 628 | + * @since 1.0.19 |
|
| 629 | + * @param string $context View or edit context. |
|
| 630 | + * @return string |
|
| 631 | + */ |
|
| 632 | + public function get_label( $context = 'view' ) { |
|
| 633 | 633 | return getpaid_get_post_type_label( $this->get_post_type( $context ), false ); |
| 634 | - } |
|
| 635 | - |
|
| 636 | - /** |
|
| 637 | - * Get the invoice post type. |
|
| 638 | - * |
|
| 639 | - * @since 1.0.19 |
|
| 640 | - * @param string $context View or edit context. |
|
| 641 | - * @return string |
|
| 642 | - */ |
|
| 643 | - public function get_post_type( $context = 'view' ) { |
|
| 634 | + } |
|
| 635 | + |
|
| 636 | + /** |
|
| 637 | + * Get the invoice post type. |
|
| 638 | + * |
|
| 639 | + * @since 1.0.19 |
|
| 640 | + * @param string $context View or edit context. |
|
| 641 | + * @return string |
|
| 642 | + */ |
|
| 643 | + public function get_post_type( $context = 'view' ) { |
|
| 644 | 644 | return $this->get_prop( 'post_type', $context ); |
| 645 | 645 | } |
| 646 | 646 | |
| 647 | 647 | /** |
| 648 | - * Get the invoice mode. |
|
| 649 | - * |
|
| 650 | - * @since 1.0.19 |
|
| 651 | - * @param string $context View or edit context. |
|
| 652 | - * @return string |
|
| 653 | - */ |
|
| 654 | - public function get_mode( $context = 'view' ) { |
|
| 648 | + * Get the invoice mode. |
|
| 649 | + * |
|
| 650 | + * @since 1.0.19 |
|
| 651 | + * @param string $context View or edit context. |
|
| 652 | + * @return string |
|
| 653 | + */ |
|
| 654 | + public function get_mode( $context = 'view' ) { |
|
| 655 | 655 | return $this->get_prop( 'mode', $context ); |
| 656 | 656 | } |
| 657 | 657 | |
| 658 | 658 | /** |
| 659 | - * Get the invoice path. |
|
| 660 | - * |
|
| 661 | - * @since 1.0.19 |
|
| 662 | - * @param string $context View or edit context. |
|
| 663 | - * @return string |
|
| 664 | - */ |
|
| 665 | - public function get_path( $context = 'view' ) { |
|
| 659 | + * Get the invoice path. |
|
| 660 | + * |
|
| 661 | + * @since 1.0.19 |
|
| 662 | + * @param string $context View or edit context. |
|
| 663 | + * @return string |
|
| 664 | + */ |
|
| 665 | + public function get_path( $context = 'view' ) { |
|
| 666 | 666 | $path = $this->get_prop( 'path', $context ); |
| 667 | - $prefix = $this->get_type(); |
|
| 667 | + $prefix = $this->get_type(); |
|
| 668 | 668 | |
| 669 | - if ( 0 !== strpos( $path, $prefix ) ) { |
|
| 670 | - $path = sanitize_title( $prefix . '-' . $this->get_id() ); |
|
| 671 | - $this->set_path( $path ); |
|
| 672 | - } |
|
| 669 | + if ( 0 !== strpos( $path, $prefix ) ) { |
|
| 670 | + $path = sanitize_title( $prefix . '-' . $this->get_id() ); |
|
| 671 | + $this->set_path( $path ); |
|
| 672 | + } |
|
| 673 | 673 | |
| 674 | - return $path; |
|
| 674 | + return $path; |
|
| 675 | 675 | } |
| 676 | 676 | |
| 677 | 677 | /** |
| 678 | - * Get the invoice name/title. |
|
| 679 | - * |
|
| 680 | - * @since 1.0.19 |
|
| 681 | - * @param string $context View or edit context. |
|
| 682 | - * @return string |
|
| 683 | - */ |
|
| 684 | - public function get_name( $context = 'view' ) { |
|
| 678 | + * Get the invoice name/title. |
|
| 679 | + * |
|
| 680 | + * @since 1.0.19 |
|
| 681 | + * @param string $context View or edit context. |
|
| 682 | + * @return string |
|
| 683 | + */ |
|
| 684 | + public function get_name( $context = 'view' ) { |
|
| 685 | 685 | return $this->get_prop( 'title', $context ); |
| 686 | 686 | } |
| 687 | 687 | |
| 688 | 688 | /** |
| 689 | - * Alias of self::get_name(). |
|
| 690 | - * |
|
| 691 | - * @since 1.0.19 |
|
| 692 | - * @param string $context View or edit context. |
|
| 693 | - * @return string |
|
| 694 | - */ |
|
| 695 | - public function get_title( $context = 'view' ) { |
|
| 696 | - return $this->get_name( $context ); |
|
| 689 | + * Alias of self::get_name(). |
|
| 690 | + * |
|
| 691 | + * @since 1.0.19 |
|
| 692 | + * @param string $context View or edit context. |
|
| 693 | + * @return string |
|
| 694 | + */ |
|
| 695 | + public function get_title( $context = 'view' ) { |
|
| 696 | + return $this->get_name( $context ); |
|
| 697 | 697 | } |
| 698 | 698 | |
| 699 | 699 | /** |
| 700 | - * Get the invoice description. |
|
| 701 | - * |
|
| 702 | - * @since 1.0.19 |
|
| 703 | - * @param string $context View or edit context. |
|
| 704 | - * @return string |
|
| 705 | - */ |
|
| 706 | - public function get_description( $context = 'view' ) { |
|
| 707 | - return $this->get_prop( 'description', $context ); |
|
| 700 | + * Get the invoice description. |
|
| 701 | + * |
|
| 702 | + * @since 1.0.19 |
|
| 703 | + * @param string $context View or edit context. |
|
| 704 | + * @return string |
|
| 705 | + */ |
|
| 706 | + public function get_description( $context = 'view' ) { |
|
| 707 | + return $this->get_prop( 'description', $context ); |
|
| 708 | 708 | } |
| 709 | 709 | |
| 710 | 710 | /** |
| 711 | - * Alias of self::get_description(). |
|
| 712 | - * |
|
| 713 | - * @since 1.0.19 |
|
| 714 | - * @param string $context View or edit context. |
|
| 715 | - * @return string |
|
| 716 | - */ |
|
| 717 | - public function get_excerpt( $context = 'view' ) { |
|
| 718 | - return $this->get_description( $context ); |
|
| 711 | + * Alias of self::get_description(). |
|
| 712 | + * |
|
| 713 | + * @since 1.0.19 |
|
| 714 | + * @param string $context View or edit context. |
|
| 715 | + * @return string |
|
| 716 | + */ |
|
| 717 | + public function get_excerpt( $context = 'view' ) { |
|
| 718 | + return $this->get_description( $context ); |
|
| 719 | 719 | } |
| 720 | 720 | |
| 721 | 721 | /** |
| 722 | - * Alias of self::get_description(). |
|
| 723 | - * |
|
| 724 | - * @since 1.0.19 |
|
| 725 | - * @param string $context View or edit context. |
|
| 726 | - * @return string |
|
| 727 | - */ |
|
| 728 | - public function get_summary( $context = 'view' ) { |
|
| 729 | - return $this->get_description( $context ); |
|
| 722 | + * Alias of self::get_description(). |
|
| 723 | + * |
|
| 724 | + * @since 1.0.19 |
|
| 725 | + * @param string $context View or edit context. |
|
| 726 | + * @return string |
|
| 727 | + */ |
|
| 728 | + public function get_summary( $context = 'view' ) { |
|
| 729 | + return $this->get_description( $context ); |
|
| 730 | 730 | } |
| 731 | 731 | |
| 732 | 732 | /** |
| 733 | - * Returns the user info. |
|
| 734 | - * |
|
| 735 | - * @since 1.0.19 |
|
| 733 | + * Returns the user info. |
|
| 734 | + * |
|
| 735 | + * @since 1.0.19 |
|
| 736 | 736 | * @param string $context View or edit context. |
| 737 | - * @return array |
|
| 738 | - */ |
|
| 737 | + * @return array |
|
| 738 | + */ |
|
| 739 | 739 | public function get_user_info( $context = 'view' ) { |
| 740 | 740 | |
| 741 | 741 | $user_info = array( |
@@ -750,630 +750,630 @@ discard block |
||
| 750 | 750 | 'state' => $this->get_state( $context ), |
| 751 | 751 | 'zip' => $this->get_zip( $context ), |
| 752 | 752 | 'company' => $this->get_company( $context ), |
| 753 | - 'company_id' => $this->get_company_id( $context ), |
|
| 753 | + 'company_id' => $this->get_company_id( $context ), |
|
| 754 | 754 | 'vat_number' => $this->get_vat_number( $context ), |
| 755 | 755 | 'discount' => $this->get_discount_code( $context ), |
| 756 | - ); |
|
| 756 | + ); |
|
| 757 | 757 | |
| 758 | - return apply_filters( 'wpinv_user_info', $user_info, $this->get_id(), $this ); |
|
| 758 | + return apply_filters( 'wpinv_user_info', $user_info, $this->get_id(), $this ); |
|
| 759 | 759 | |
| 760 | 760 | } |
| 761 | 761 | |
| 762 | 762 | /** |
| 763 | - * Get the customer id. |
|
| 764 | - * |
|
| 765 | - * @since 1.0.19 |
|
| 766 | - * @param string $context View or edit context. |
|
| 767 | - * @return int |
|
| 768 | - */ |
|
| 769 | - public function get_author( $context = 'view' ) { |
|
| 770 | - return (int) $this->get_prop( 'author', $context ); |
|
| 763 | + * Get the customer id. |
|
| 764 | + * |
|
| 765 | + * @since 1.0.19 |
|
| 766 | + * @param string $context View or edit context. |
|
| 767 | + * @return int |
|
| 768 | + */ |
|
| 769 | + public function get_author( $context = 'view' ) { |
|
| 770 | + return (int) $this->get_prop( 'author', $context ); |
|
| 771 | 771 | } |
| 772 | 772 | |
| 773 | 773 | /** |
| 774 | - * Alias of self::get_author(). |
|
| 775 | - * |
|
| 776 | - * @since 1.0.19 |
|
| 777 | - * @param string $context View or edit context. |
|
| 778 | - * @return int |
|
| 779 | - */ |
|
| 780 | - public function get_user_id( $context = 'view' ) { |
|
| 781 | - return $this->get_author( $context ); |
|
| 774 | + * Alias of self::get_author(). |
|
| 775 | + * |
|
| 776 | + * @since 1.0.19 |
|
| 777 | + * @param string $context View or edit context. |
|
| 778 | + * @return int |
|
| 779 | + */ |
|
| 780 | + public function get_user_id( $context = 'view' ) { |
|
| 781 | + return $this->get_author( $context ); |
|
| 782 | 782 | } |
| 783 | 783 | |
| 784 | - /** |
|
| 785 | - * Alias of self::get_author(). |
|
| 786 | - * |
|
| 787 | - * @since 1.0.19 |
|
| 788 | - * @param string $context View or edit context. |
|
| 789 | - * @return int |
|
| 790 | - */ |
|
| 791 | - public function get_customer_id( $context = 'view' ) { |
|
| 792 | - return $this->get_author( $context ); |
|
| 784 | + /** |
|
| 785 | + * Alias of self::get_author(). |
|
| 786 | + * |
|
| 787 | + * @since 1.0.19 |
|
| 788 | + * @param string $context View or edit context. |
|
| 789 | + * @return int |
|
| 790 | + */ |
|
| 791 | + public function get_customer_id( $context = 'view' ) { |
|
| 792 | + return $this->get_author( $context ); |
|
| 793 | 793 | } |
| 794 | 794 | |
| 795 | 795 | /** |
| 796 | - * Get the customer's ip. |
|
| 797 | - * |
|
| 798 | - * @since 1.0.19 |
|
| 799 | - * @param string $context View or edit context. |
|
| 800 | - * @return string |
|
| 801 | - */ |
|
| 802 | - public function get_ip( $context = 'view' ) { |
|
| 803 | - return $this->get_prop( 'user_ip', $context ); |
|
| 796 | + * Get the customer's ip. |
|
| 797 | + * |
|
| 798 | + * @since 1.0.19 |
|
| 799 | + * @param string $context View or edit context. |
|
| 800 | + * @return string |
|
| 801 | + */ |
|
| 802 | + public function get_ip( $context = 'view' ) { |
|
| 803 | + return $this->get_prop( 'user_ip', $context ); |
|
| 804 | 804 | } |
| 805 | 805 | |
| 806 | 806 | /** |
| 807 | - * Alias of self::get_ip(). |
|
| 808 | - * |
|
| 809 | - * @since 1.0.19 |
|
| 810 | - * @param string $context View or edit context. |
|
| 811 | - * @return string |
|
| 812 | - */ |
|
| 813 | - public function get_user_ip( $context = 'view' ) { |
|
| 814 | - return $this->get_ip( $context ); |
|
| 807 | + * Alias of self::get_ip(). |
|
| 808 | + * |
|
| 809 | + * @since 1.0.19 |
|
| 810 | + * @param string $context View or edit context. |
|
| 811 | + * @return string |
|
| 812 | + */ |
|
| 813 | + public function get_user_ip( $context = 'view' ) { |
|
| 814 | + return $this->get_ip( $context ); |
|
| 815 | 815 | } |
| 816 | 816 | |
| 817 | - /** |
|
| 818 | - * Alias of self::get_ip(). |
|
| 819 | - * |
|
| 820 | - * @since 1.0.19 |
|
| 821 | - * @param string $context View or edit context. |
|
| 822 | - * @return string |
|
| 823 | - */ |
|
| 824 | - public function get_customer_ip( $context = 'view' ) { |
|
| 825 | - return $this->get_ip( $context ); |
|
| 817 | + /** |
|
| 818 | + * Alias of self::get_ip(). |
|
| 819 | + * |
|
| 820 | + * @since 1.0.19 |
|
| 821 | + * @param string $context View or edit context. |
|
| 822 | + * @return string |
|
| 823 | + */ |
|
| 824 | + public function get_customer_ip( $context = 'view' ) { |
|
| 825 | + return $this->get_ip( $context ); |
|
| 826 | 826 | } |
| 827 | 827 | |
| 828 | 828 | /** |
| 829 | - * Get the customer's first name. |
|
| 830 | - * |
|
| 831 | - * @since 1.0.19 |
|
| 832 | - * @param string $context View or edit context. |
|
| 833 | - * @return string |
|
| 834 | - */ |
|
| 835 | - public function get_first_name( $context = 'view' ) { |
|
| 836 | - return $this->get_prop( 'first_name', $context ); |
|
| 829 | + * Get the customer's first name. |
|
| 830 | + * |
|
| 831 | + * @since 1.0.19 |
|
| 832 | + * @param string $context View or edit context. |
|
| 833 | + * @return string |
|
| 834 | + */ |
|
| 835 | + public function get_first_name( $context = 'view' ) { |
|
| 836 | + return $this->get_prop( 'first_name', $context ); |
|
| 837 | 837 | } |
| 838 | 838 | |
| 839 | 839 | /** |
| 840 | - * Alias of self::get_first_name(). |
|
| 841 | - * |
|
| 842 | - * @since 1.0.19 |
|
| 843 | - * @param string $context View or edit context. |
|
| 844 | - * @return string |
|
| 845 | - */ |
|
| 846 | - public function get_user_first_name( $context = 'view' ) { |
|
| 847 | - return $this->get_first_name( $context ); |
|
| 840 | + * Alias of self::get_first_name(). |
|
| 841 | + * |
|
| 842 | + * @since 1.0.19 |
|
| 843 | + * @param string $context View or edit context. |
|
| 844 | + * @return string |
|
| 845 | + */ |
|
| 846 | + public function get_user_first_name( $context = 'view' ) { |
|
| 847 | + return $this->get_first_name( $context ); |
|
| 848 | 848 | } |
| 849 | 849 | |
| 850 | - /** |
|
| 851 | - * Alias of self::get_first_name(). |
|
| 852 | - * |
|
| 853 | - * @since 1.0.19 |
|
| 854 | - * @param string $context View or edit context. |
|
| 855 | - * @return string |
|
| 856 | - */ |
|
| 857 | - public function get_customer_first_name( $context = 'view' ) { |
|
| 858 | - return $this->get_first_name( $context ); |
|
| 850 | + /** |
|
| 851 | + * Alias of self::get_first_name(). |
|
| 852 | + * |
|
| 853 | + * @since 1.0.19 |
|
| 854 | + * @param string $context View or edit context. |
|
| 855 | + * @return string |
|
| 856 | + */ |
|
| 857 | + public function get_customer_first_name( $context = 'view' ) { |
|
| 858 | + return $this->get_first_name( $context ); |
|
| 859 | 859 | } |
| 860 | 860 | |
| 861 | 861 | /** |
| 862 | - * Get the customer's last name. |
|
| 863 | - * |
|
| 864 | - * @since 1.0.19 |
|
| 865 | - * @param string $context View or edit context. |
|
| 866 | - * @return string |
|
| 867 | - */ |
|
| 868 | - public function get_last_name( $context = 'view' ) { |
|
| 869 | - return $this->get_prop( 'last_name', $context ); |
|
| 862 | + * Get the customer's last name. |
|
| 863 | + * |
|
| 864 | + * @since 1.0.19 |
|
| 865 | + * @param string $context View or edit context. |
|
| 866 | + * @return string |
|
| 867 | + */ |
|
| 868 | + public function get_last_name( $context = 'view' ) { |
|
| 869 | + return $this->get_prop( 'last_name', $context ); |
|
| 870 | 870 | } |
| 871 | 871 | |
| 872 | 872 | /** |
| 873 | - * Alias of self::get_last_name(). |
|
| 874 | - * |
|
| 875 | - * @since 1.0.19 |
|
| 876 | - * @param string $context View or edit context. |
|
| 877 | - * @return string |
|
| 878 | - */ |
|
| 879 | - public function get_user_last_name( $context = 'view' ) { |
|
| 880 | - return $this->get_last_name( $context ); |
|
| 873 | + * Alias of self::get_last_name(). |
|
| 874 | + * |
|
| 875 | + * @since 1.0.19 |
|
| 876 | + * @param string $context View or edit context. |
|
| 877 | + * @return string |
|
| 878 | + */ |
|
| 879 | + public function get_user_last_name( $context = 'view' ) { |
|
| 880 | + return $this->get_last_name( $context ); |
|
| 881 | 881 | } |
| 882 | 882 | |
| 883 | 883 | /** |
| 884 | - * Alias of self::get_last_name(). |
|
| 885 | - * |
|
| 886 | - * @since 1.0.19 |
|
| 887 | - * @param string $context View or edit context. |
|
| 888 | - * @return string |
|
| 889 | - */ |
|
| 890 | - public function get_customer_last_name( $context = 'view' ) { |
|
| 891 | - return $this->get_last_name( $context ); |
|
| 884 | + * Alias of self::get_last_name(). |
|
| 885 | + * |
|
| 886 | + * @since 1.0.19 |
|
| 887 | + * @param string $context View or edit context. |
|
| 888 | + * @return string |
|
| 889 | + */ |
|
| 890 | + public function get_customer_last_name( $context = 'view' ) { |
|
| 891 | + return $this->get_last_name( $context ); |
|
| 892 | 892 | } |
| 893 | 893 | |
| 894 | 894 | /** |
| 895 | - * Get the customer's full name. |
|
| 896 | - * |
|
| 897 | - * @since 1.0.19 |
|
| 898 | - * @param string $context View or edit context. |
|
| 899 | - * @return string |
|
| 900 | - */ |
|
| 901 | - public function get_full_name( $context = 'view' ) { |
|
| 902 | - return trim( $this->get_first_name( $context ) . ' ' . $this->get_last_name( $context ) ); |
|
| 895 | + * Get the customer's full name. |
|
| 896 | + * |
|
| 897 | + * @since 1.0.19 |
|
| 898 | + * @param string $context View or edit context. |
|
| 899 | + * @return string |
|
| 900 | + */ |
|
| 901 | + public function get_full_name( $context = 'view' ) { |
|
| 902 | + return trim( $this->get_first_name( $context ) . ' ' . $this->get_last_name( $context ) ); |
|
| 903 | 903 | } |
| 904 | 904 | |
| 905 | 905 | /** |
| 906 | - * Alias of self::get_full_name(). |
|
| 907 | - * |
|
| 908 | - * @since 1.0.19 |
|
| 909 | - * @param string $context View or edit context. |
|
| 910 | - * @return string |
|
| 911 | - */ |
|
| 912 | - public function get_user_full_name( $context = 'view' ) { |
|
| 913 | - return $this->get_full_name( $context ); |
|
| 906 | + * Alias of self::get_full_name(). |
|
| 907 | + * |
|
| 908 | + * @since 1.0.19 |
|
| 909 | + * @param string $context View or edit context. |
|
| 910 | + * @return string |
|
| 911 | + */ |
|
| 912 | + public function get_user_full_name( $context = 'view' ) { |
|
| 913 | + return $this->get_full_name( $context ); |
|
| 914 | 914 | } |
| 915 | 915 | |
| 916 | 916 | /** |
| 917 | - * Alias of self::get_full_name(). |
|
| 918 | - * |
|
| 919 | - * @since 1.0.19 |
|
| 920 | - * @param string $context View or edit context. |
|
| 921 | - * @return string |
|
| 922 | - */ |
|
| 923 | - public function get_customer_full_name( $context = 'view' ) { |
|
| 924 | - return $this->get_full_name( $context ); |
|
| 917 | + * Alias of self::get_full_name(). |
|
| 918 | + * |
|
| 919 | + * @since 1.0.19 |
|
| 920 | + * @param string $context View or edit context. |
|
| 921 | + * @return string |
|
| 922 | + */ |
|
| 923 | + public function get_customer_full_name( $context = 'view' ) { |
|
| 924 | + return $this->get_full_name( $context ); |
|
| 925 | 925 | } |
| 926 | 926 | |
| 927 | 927 | /** |
| 928 | - * Get the customer's phone number. |
|
| 929 | - * |
|
| 930 | - * @since 1.0.19 |
|
| 931 | - * @param string $context View or edit context. |
|
| 932 | - * @return string |
|
| 933 | - */ |
|
| 934 | - public function get_phone( $context = 'view' ) { |
|
| 935 | - return $this->get_prop( 'phone', $context ); |
|
| 928 | + * Get the customer's phone number. |
|
| 929 | + * |
|
| 930 | + * @since 1.0.19 |
|
| 931 | + * @param string $context View or edit context. |
|
| 932 | + * @return string |
|
| 933 | + */ |
|
| 934 | + public function get_phone( $context = 'view' ) { |
|
| 935 | + return $this->get_prop( 'phone', $context ); |
|
| 936 | 936 | } |
| 937 | 937 | |
| 938 | 938 | /** |
| 939 | - * Alias of self::get_phone(). |
|
| 940 | - * |
|
| 941 | - * @since 1.0.19 |
|
| 942 | - * @param string $context View or edit context. |
|
| 943 | - * @return string |
|
| 944 | - */ |
|
| 945 | - public function get_phone_number( $context = 'view' ) { |
|
| 946 | - return $this->get_phone( $context ); |
|
| 939 | + * Alias of self::get_phone(). |
|
| 940 | + * |
|
| 941 | + * @since 1.0.19 |
|
| 942 | + * @param string $context View or edit context. |
|
| 943 | + * @return string |
|
| 944 | + */ |
|
| 945 | + public function get_phone_number( $context = 'view' ) { |
|
| 946 | + return $this->get_phone( $context ); |
|
| 947 | 947 | } |
| 948 | 948 | |
| 949 | 949 | /** |
| 950 | - * Alias of self::get_phone(). |
|
| 951 | - * |
|
| 952 | - * @since 1.0.19 |
|
| 953 | - * @param string $context View or edit context. |
|
| 954 | - * @return string |
|
| 955 | - */ |
|
| 956 | - public function get_user_phone( $context = 'view' ) { |
|
| 957 | - return $this->get_phone( $context ); |
|
| 958 | - } |
|
| 959 | - |
|
| 950 | + * Alias of self::get_phone(). |
|
| 951 | + * |
|
| 952 | + * @since 1.0.19 |
|
| 953 | + * @param string $context View or edit context. |
|
| 954 | + * @return string |
|
| 955 | + */ |
|
| 956 | + public function get_user_phone( $context = 'view' ) { |
|
| 957 | + return $this->get_phone( $context ); |
|
| 958 | + } |
|
| 959 | + |
|
| 960 | + /** |
|
| 961 | + * Alias of self::get_phone(). |
|
| 962 | + * |
|
| 963 | + * @since 1.0.19 |
|
| 964 | + * @param string $context View or edit context. |
|
| 965 | + * @return string |
|
| 966 | + */ |
|
| 967 | + public function get_customer_phone( $context = 'view' ) { |
|
| 968 | + return $this->get_phone( $context ); |
|
| 969 | + } |
|
| 970 | + |
|
| 971 | + /** |
|
| 972 | + * Get the customer's email address. |
|
| 973 | + * |
|
| 974 | + * @since 1.0.19 |
|
| 975 | + * @param string $context View or edit context. |
|
| 976 | + * @return string |
|
| 977 | + */ |
|
| 978 | + public function get_email( $context = 'view' ) { |
|
| 979 | + return $this->get_prop( 'email', $context ); |
|
| 980 | + } |
|
| 981 | + |
|
| 982 | + /** |
|
| 983 | + * Alias of self::get_email(). |
|
| 984 | + * |
|
| 985 | + * @since 1.0.19 |
|
| 986 | + * @param string $context View or edit context. |
|
| 987 | + * @return string |
|
| 988 | + */ |
|
| 989 | + public function get_email_address( $context = 'view' ) { |
|
| 990 | + return $this->get_email( $context ); |
|
| 991 | + } |
|
| 992 | + |
|
| 993 | + /** |
|
| 994 | + * Alias of self::get_email(). |
|
| 995 | + * |
|
| 996 | + * @since 1.0.19 |
|
| 997 | + * @param string $context View or edit context. |
|
| 998 | + * @return string |
|
| 999 | + */ |
|
| 1000 | + public function get_user_email( $context = 'view' ) { |
|
| 1001 | + return $this->get_email( $context ); |
|
| 1002 | + } |
|
| 1003 | + |
|
| 960 | 1004 | /** |
| 961 | - * Alias of self::get_phone(). |
|
| 962 | - * |
|
| 963 | - * @since 1.0.19 |
|
| 964 | - * @param string $context View or edit context. |
|
| 965 | - * @return string |
|
| 966 | - */ |
|
| 967 | - public function get_customer_phone( $context = 'view' ) { |
|
| 968 | - return $this->get_phone( $context ); |
|
| 1005 | + * Alias of self::get_email(). |
|
| 1006 | + * |
|
| 1007 | + * @since 1.0.19 |
|
| 1008 | + * @param string $context View or edit context. |
|
| 1009 | + * @return string |
|
| 1010 | + */ |
|
| 1011 | + public function get_customer_email( $context = 'view' ) { |
|
| 1012 | + return $this->get_email( $context ); |
|
| 969 | 1013 | } |
| 970 | 1014 | |
| 971 | 1015 | /** |
| 972 | - * Get the customer's email address. |
|
| 973 | - * |
|
| 974 | - * @since 1.0.19 |
|
| 975 | - * @param string $context View or edit context. |
|
| 976 | - * @return string |
|
| 977 | - */ |
|
| 978 | - public function get_email( $context = 'view' ) { |
|
| 979 | - return $this->get_prop( 'email', $context ); |
|
| 1016 | + * Get the customer's country. |
|
| 1017 | + * |
|
| 1018 | + * @since 1.0.19 |
|
| 1019 | + * @param string $context View or edit context. |
|
| 1020 | + * @return string |
|
| 1021 | + */ |
|
| 1022 | + public function get_country( $context = 'view' ) { |
|
| 1023 | + $country = $this->get_prop( 'country', $context ); |
|
| 1024 | + return empty( $country ) ? wpinv_get_default_country() : $country; |
|
| 980 | 1025 | } |
| 981 | 1026 | |
| 982 | 1027 | /** |
| 983 | - * Alias of self::get_email(). |
|
| 984 | - * |
|
| 985 | - * @since 1.0.19 |
|
| 986 | - * @param string $context View or edit context. |
|
| 987 | - * @return string |
|
| 988 | - */ |
|
| 989 | - public function get_email_address( $context = 'view' ) { |
|
| 990 | - return $this->get_email( $context ); |
|
| 1028 | + * Alias of self::get_country(). |
|
| 1029 | + * |
|
| 1030 | + * @since 1.0.19 |
|
| 1031 | + * @param string $context View or edit context. |
|
| 1032 | + * @return string |
|
| 1033 | + */ |
|
| 1034 | + public function get_user_country( $context = 'view' ) { |
|
| 1035 | + return $this->get_country( $context ); |
|
| 991 | 1036 | } |
| 992 | 1037 | |
| 993 | 1038 | /** |
| 994 | - * Alias of self::get_email(). |
|
| 995 | - * |
|
| 996 | - * @since 1.0.19 |
|
| 997 | - * @param string $context View or edit context. |
|
| 998 | - * @return string |
|
| 999 | - */ |
|
| 1000 | - public function get_user_email( $context = 'view' ) { |
|
| 1001 | - return $this->get_email( $context ); |
|
| 1039 | + * Alias of self::get_country(). |
|
| 1040 | + * |
|
| 1041 | + * @since 1.0.19 |
|
| 1042 | + * @param string $context View or edit context. |
|
| 1043 | + * @return string |
|
| 1044 | + */ |
|
| 1045 | + public function get_customer_country( $context = 'view' ) { |
|
| 1046 | + return $this->get_country( $context ); |
|
| 1002 | 1047 | } |
| 1003 | 1048 | |
| 1004 | 1049 | /** |
| 1005 | - * Alias of self::get_email(). |
|
| 1006 | - * |
|
| 1007 | - * @since 1.0.19 |
|
| 1008 | - * @param string $context View or edit context. |
|
| 1009 | - * @return string |
|
| 1010 | - */ |
|
| 1011 | - public function get_customer_email( $context = 'view' ) { |
|
| 1012 | - return $this->get_email( $context ); |
|
| 1050 | + * Get the customer's state. |
|
| 1051 | + * |
|
| 1052 | + * @since 1.0.19 |
|
| 1053 | + * @param string $context View or edit context. |
|
| 1054 | + * @return string |
|
| 1055 | + */ |
|
| 1056 | + public function get_state( $context = 'view' ) { |
|
| 1057 | + $state = $this->get_prop( 'state', $context ); |
|
| 1058 | + return empty( $state ) ? wpinv_get_default_state() : $state; |
|
| 1013 | 1059 | } |
| 1014 | 1060 | |
| 1015 | 1061 | /** |
| 1016 | - * Get the customer's country. |
|
| 1017 | - * |
|
| 1018 | - * @since 1.0.19 |
|
| 1019 | - * @param string $context View or edit context. |
|
| 1020 | - * @return string |
|
| 1021 | - */ |
|
| 1022 | - public function get_country( $context = 'view' ) { |
|
| 1023 | - $country = $this->get_prop( 'country', $context ); |
|
| 1024 | - return empty( $country ) ? wpinv_get_default_country() : $country; |
|
| 1062 | + * Alias of self::get_state(). |
|
| 1063 | + * |
|
| 1064 | + * @since 1.0.19 |
|
| 1065 | + * @param string $context View or edit context. |
|
| 1066 | + * @return string |
|
| 1067 | + */ |
|
| 1068 | + public function get_user_state( $context = 'view' ) { |
|
| 1069 | + return $this->get_state( $context ); |
|
| 1025 | 1070 | } |
| 1026 | 1071 | |
| 1027 | 1072 | /** |
| 1028 | - * Alias of self::get_country(). |
|
| 1029 | - * |
|
| 1030 | - * @since 1.0.19 |
|
| 1031 | - * @param string $context View or edit context. |
|
| 1032 | - * @return string |
|
| 1033 | - */ |
|
| 1034 | - public function get_user_country( $context = 'view' ) { |
|
| 1035 | - return $this->get_country( $context ); |
|
| 1073 | + * Alias of self::get_state(). |
|
| 1074 | + * |
|
| 1075 | + * @since 1.0.19 |
|
| 1076 | + * @param string $context View or edit context. |
|
| 1077 | + * @return string |
|
| 1078 | + */ |
|
| 1079 | + public function get_customer_state( $context = 'view' ) { |
|
| 1080 | + return $this->get_state( $context ); |
|
| 1036 | 1081 | } |
| 1037 | 1082 | |
| 1038 | 1083 | /** |
| 1039 | - * Alias of self::get_country(). |
|
| 1040 | - * |
|
| 1041 | - * @since 1.0.19 |
|
| 1042 | - * @param string $context View or edit context. |
|
| 1043 | - * @return string |
|
| 1044 | - */ |
|
| 1045 | - public function get_customer_country( $context = 'view' ) { |
|
| 1046 | - return $this->get_country( $context ); |
|
| 1084 | + * Get the customer's city. |
|
| 1085 | + * |
|
| 1086 | + * @since 1.0.19 |
|
| 1087 | + * @param string $context View or edit context. |
|
| 1088 | + * @return string |
|
| 1089 | + */ |
|
| 1090 | + public function get_city( $context = 'view' ) { |
|
| 1091 | + return $this->get_prop( 'city', $context ); |
|
| 1047 | 1092 | } |
| 1048 | 1093 | |
| 1049 | 1094 | /** |
| 1050 | - * Get the customer's state. |
|
| 1051 | - * |
|
| 1052 | - * @since 1.0.19 |
|
| 1053 | - * @param string $context View or edit context. |
|
| 1054 | - * @return string |
|
| 1055 | - */ |
|
| 1056 | - public function get_state( $context = 'view' ) { |
|
| 1057 | - $state = $this->get_prop( 'state', $context ); |
|
| 1058 | - return empty( $state ) ? wpinv_get_default_state() : $state; |
|
| 1095 | + * Alias of self::get_city(). |
|
| 1096 | + * |
|
| 1097 | + * @since 1.0.19 |
|
| 1098 | + * @param string $context View or edit context. |
|
| 1099 | + * @return string |
|
| 1100 | + */ |
|
| 1101 | + public function get_user_city( $context = 'view' ) { |
|
| 1102 | + return $this->get_city( $context ); |
|
| 1103 | + } |
|
| 1104 | + |
|
| 1105 | + /** |
|
| 1106 | + * Alias of self::get_city(). |
|
| 1107 | + * |
|
| 1108 | + * @since 1.0.19 |
|
| 1109 | + * @param string $context View or edit context. |
|
| 1110 | + * @return string |
|
| 1111 | + */ |
|
| 1112 | + public function get_customer_city( $context = 'view' ) { |
|
| 1113 | + return $this->get_city( $context ); |
|
| 1114 | + } |
|
| 1115 | + |
|
| 1116 | + /** |
|
| 1117 | + * Get the customer's zip. |
|
| 1118 | + * |
|
| 1119 | + * @since 1.0.19 |
|
| 1120 | + * @param string $context View or edit context. |
|
| 1121 | + * @return string |
|
| 1122 | + */ |
|
| 1123 | + public function get_zip( $context = 'view' ) { |
|
| 1124 | + return $this->get_prop( 'zip', $context ); |
|
| 1125 | + } |
|
| 1126 | + |
|
| 1127 | + /** |
|
| 1128 | + * Alias of self::get_zip(). |
|
| 1129 | + * |
|
| 1130 | + * @since 1.0.19 |
|
| 1131 | + * @param string $context View or edit context. |
|
| 1132 | + * @return string |
|
| 1133 | + */ |
|
| 1134 | + public function get_user_zip( $context = 'view' ) { |
|
| 1135 | + return $this->get_zip( $context ); |
|
| 1136 | + } |
|
| 1137 | + |
|
| 1138 | + /** |
|
| 1139 | + * Alias of self::get_zip(). |
|
| 1140 | + * |
|
| 1141 | + * @since 1.0.19 |
|
| 1142 | + * @param string $context View or edit context. |
|
| 1143 | + * @return string |
|
| 1144 | + */ |
|
| 1145 | + public function get_customer_zip( $context = 'view' ) { |
|
| 1146 | + return $this->get_zip( $context ); |
|
| 1147 | + } |
|
| 1148 | + |
|
| 1149 | + /** |
|
| 1150 | + * Get the customer's company. |
|
| 1151 | + * |
|
| 1152 | + * @since 1.0.19 |
|
| 1153 | + * @param string $context View or edit context. |
|
| 1154 | + * @return string |
|
| 1155 | + */ |
|
| 1156 | + public function get_company( $context = 'view' ) { |
|
| 1157 | + return $this->get_prop( 'company', $context ); |
|
| 1158 | + } |
|
| 1159 | + |
|
| 1160 | + /** |
|
| 1161 | + * Alias of self::get_company(). |
|
| 1162 | + * |
|
| 1163 | + * @since 1.0.19 |
|
| 1164 | + * @param string $context View or edit context. |
|
| 1165 | + * @return string |
|
| 1166 | + */ |
|
| 1167 | + public function get_user_company( $context = 'view' ) { |
|
| 1168 | + return $this->get_company( $context ); |
|
| 1169 | + } |
|
| 1170 | + |
|
| 1171 | + /** |
|
| 1172 | + * Alias of self::get_company(). |
|
| 1173 | + * |
|
| 1174 | + * @since 1.0.19 |
|
| 1175 | + * @param string $context View or edit context. |
|
| 1176 | + * @return string |
|
| 1177 | + */ |
|
| 1178 | + public function get_customer_company( $context = 'view' ) { |
|
| 1179 | + return $this->get_company( $context ); |
|
| 1180 | + } |
|
| 1181 | + |
|
| 1182 | + /** |
|
| 1183 | + * Get the customer's company id. |
|
| 1184 | + * |
|
| 1185 | + * @since 1.0.19 |
|
| 1186 | + * @param string $context View or edit context. |
|
| 1187 | + * @return string |
|
| 1188 | + */ |
|
| 1189 | + public function get_company_id( $context = 'view' ) { |
|
| 1190 | + return $this->get_prop( 'company_id', $context ); |
|
| 1191 | + } |
|
| 1192 | + |
|
| 1193 | + /** |
|
| 1194 | + * Get the customer's vat number. |
|
| 1195 | + * |
|
| 1196 | + * @since 1.0.19 |
|
| 1197 | + * @param string $context View or edit context. |
|
| 1198 | + * @return string |
|
| 1199 | + */ |
|
| 1200 | + public function get_vat_number( $context = 'view' ) { |
|
| 1201 | + return $this->get_prop( 'vat_number', $context ); |
|
| 1059 | 1202 | } |
| 1060 | 1203 | |
| 1061 | 1204 | /** |
| 1062 | - * Alias of self::get_state(). |
|
| 1063 | - * |
|
| 1064 | - * @since 1.0.19 |
|
| 1065 | - * @param string $context View or edit context. |
|
| 1066 | - * @return string |
|
| 1067 | - */ |
|
| 1068 | - public function get_user_state( $context = 'view' ) { |
|
| 1069 | - return $this->get_state( $context ); |
|
| 1205 | + * Alias of self::get_vat_number(). |
|
| 1206 | + * |
|
| 1207 | + * @since 1.0.19 |
|
| 1208 | + * @param string $context View or edit context. |
|
| 1209 | + * @return string |
|
| 1210 | + */ |
|
| 1211 | + public function get_user_vat_number( $context = 'view' ) { |
|
| 1212 | + return $this->get_vat_number( $context ); |
|
| 1070 | 1213 | } |
| 1071 | 1214 | |
| 1072 | 1215 | /** |
| 1073 | - * Alias of self::get_state(). |
|
| 1074 | - * |
|
| 1075 | - * @since 1.0.19 |
|
| 1076 | - * @param string $context View or edit context. |
|
| 1077 | - * @return string |
|
| 1078 | - */ |
|
| 1079 | - public function get_customer_state( $context = 'view' ) { |
|
| 1080 | - return $this->get_state( $context ); |
|
| 1216 | + * Alias of self::get_vat_number(). |
|
| 1217 | + * |
|
| 1218 | + * @since 1.0.19 |
|
| 1219 | + * @param string $context View or edit context. |
|
| 1220 | + * @return string |
|
| 1221 | + */ |
|
| 1222 | + public function get_customer_vat_number( $context = 'view' ) { |
|
| 1223 | + return $this->get_vat_number( $context ); |
|
| 1081 | 1224 | } |
| 1082 | 1225 | |
| 1083 | 1226 | /** |
| 1084 | - * Get the customer's city. |
|
| 1085 | - * |
|
| 1086 | - * @since 1.0.19 |
|
| 1087 | - * @param string $context View or edit context. |
|
| 1088 | - * @return string |
|
| 1089 | - */ |
|
| 1090 | - public function get_city( $context = 'view' ) { |
|
| 1091 | - return $this->get_prop( 'city', $context ); |
|
| 1227 | + * Get the customer's vat rate. |
|
| 1228 | + * |
|
| 1229 | + * @since 1.0.19 |
|
| 1230 | + * @param string $context View or edit context. |
|
| 1231 | + * @return string |
|
| 1232 | + */ |
|
| 1233 | + public function get_vat_rate( $context = 'view' ) { |
|
| 1234 | + return $this->get_prop( 'vat_rate', $context ); |
|
| 1092 | 1235 | } |
| 1093 | 1236 | |
| 1094 | 1237 | /** |
| 1095 | - * Alias of self::get_city(). |
|
| 1096 | - * |
|
| 1097 | - * @since 1.0.19 |
|
| 1098 | - * @param string $context View or edit context. |
|
| 1099 | - * @return string |
|
| 1100 | - */ |
|
| 1101 | - public function get_user_city( $context = 'view' ) { |
|
| 1102 | - return $this->get_city( $context ); |
|
| 1238 | + * Alias of self::get_vat_rate(). |
|
| 1239 | + * |
|
| 1240 | + * @since 1.0.19 |
|
| 1241 | + * @param string $context View or edit context. |
|
| 1242 | + * @return string |
|
| 1243 | + */ |
|
| 1244 | + public function get_user_vat_rate( $context = 'view' ) { |
|
| 1245 | + return $this->get_vat_rate( $context ); |
|
| 1103 | 1246 | } |
| 1104 | 1247 | |
| 1105 | 1248 | /** |
| 1106 | - * Alias of self::get_city(). |
|
| 1107 | - * |
|
| 1108 | - * @since 1.0.19 |
|
| 1109 | - * @param string $context View or edit context. |
|
| 1110 | - * @return string |
|
| 1111 | - */ |
|
| 1112 | - public function get_customer_city( $context = 'view' ) { |
|
| 1113 | - return $this->get_city( $context ); |
|
| 1249 | + * Alias of self::get_vat_rate(). |
|
| 1250 | + * |
|
| 1251 | + * @since 1.0.19 |
|
| 1252 | + * @param string $context View or edit context. |
|
| 1253 | + * @return string |
|
| 1254 | + */ |
|
| 1255 | + public function get_customer_vat_rate( $context = 'view' ) { |
|
| 1256 | + return $this->get_vat_rate( $context ); |
|
| 1114 | 1257 | } |
| 1115 | 1258 | |
| 1116 | 1259 | /** |
| 1117 | - * Get the customer's zip. |
|
| 1118 | - * |
|
| 1119 | - * @since 1.0.19 |
|
| 1120 | - * @param string $context View or edit context. |
|
| 1121 | - * @return string |
|
| 1122 | - */ |
|
| 1123 | - public function get_zip( $context = 'view' ) { |
|
| 1124 | - return $this->get_prop( 'zip', $context ); |
|
| 1260 | + * Get the customer's address. |
|
| 1261 | + * |
|
| 1262 | + * @since 1.0.19 |
|
| 1263 | + * @param string $context View or edit context. |
|
| 1264 | + * @return string |
|
| 1265 | + */ |
|
| 1266 | + public function get_address( $context = 'view' ) { |
|
| 1267 | + return $this->get_prop( 'address', $context ); |
|
| 1125 | 1268 | } |
| 1126 | 1269 | |
| 1127 | 1270 | /** |
| 1128 | - * Alias of self::get_zip(). |
|
| 1129 | - * |
|
| 1130 | - * @since 1.0.19 |
|
| 1131 | - * @param string $context View or edit context. |
|
| 1132 | - * @return string |
|
| 1133 | - */ |
|
| 1134 | - public function get_user_zip( $context = 'view' ) { |
|
| 1135 | - return $this->get_zip( $context ); |
|
| 1271 | + * Alias of self::get_address(). |
|
| 1272 | + * |
|
| 1273 | + * @since 1.0.19 |
|
| 1274 | + * @param string $context View or edit context. |
|
| 1275 | + * @return string |
|
| 1276 | + */ |
|
| 1277 | + public function get_user_address( $context = 'view' ) { |
|
| 1278 | + return $this->get_address( $context ); |
|
| 1136 | 1279 | } |
| 1137 | 1280 | |
| 1138 | 1281 | /** |
| 1139 | - * Alias of self::get_zip(). |
|
| 1140 | - * |
|
| 1141 | - * @since 1.0.19 |
|
| 1142 | - * @param string $context View or edit context. |
|
| 1143 | - * @return string |
|
| 1144 | - */ |
|
| 1145 | - public function get_customer_zip( $context = 'view' ) { |
|
| 1146 | - return $this->get_zip( $context ); |
|
| 1282 | + * Alias of self::get_address(). |
|
| 1283 | + * |
|
| 1284 | + * @since 1.0.19 |
|
| 1285 | + * @param string $context View or edit context. |
|
| 1286 | + * @return string |
|
| 1287 | + */ |
|
| 1288 | + public function get_customer_address( $context = 'view' ) { |
|
| 1289 | + return $this->get_address( $context ); |
|
| 1147 | 1290 | } |
| 1148 | 1291 | |
| 1149 | 1292 | /** |
| 1150 | - * Get the customer's company. |
|
| 1151 | - * |
|
| 1152 | - * @since 1.0.19 |
|
| 1153 | - * @param string $context View or edit context. |
|
| 1154 | - * @return string |
|
| 1155 | - */ |
|
| 1156 | - public function get_company( $context = 'view' ) { |
|
| 1157 | - return $this->get_prop( 'company', $context ); |
|
| 1293 | + * Get whether the customer has viewed the invoice or not. |
|
| 1294 | + * |
|
| 1295 | + * @since 1.0.19 |
|
| 1296 | + * @param string $context View or edit context. |
|
| 1297 | + * @return bool |
|
| 1298 | + */ |
|
| 1299 | + public function get_is_viewed( $context = 'view' ) { |
|
| 1300 | + return (bool) $this->get_prop( 'is_viewed', $context ); |
|
| 1158 | 1301 | } |
| 1159 | 1302 | |
| 1160 | 1303 | /** |
| 1161 | - * Alias of self::get_company(). |
|
| 1162 | - * |
|
| 1163 | - * @since 1.0.19 |
|
| 1164 | - * @param string $context View or edit context. |
|
| 1165 | - * @return string |
|
| 1166 | - */ |
|
| 1167 | - public function get_user_company( $context = 'view' ) { |
|
| 1168 | - return $this->get_company( $context ); |
|
| 1304 | + * Get other recipients for invoice communications. |
|
| 1305 | + * |
|
| 1306 | + * @since 1.0.19 |
|
| 1307 | + * @param string $context View or edit context. |
|
| 1308 | + * @return bool |
|
| 1309 | + */ |
|
| 1310 | + public function get_email_cc( $context = 'view' ) { |
|
| 1311 | + return $this->get_prop( 'email_cc', $context ); |
|
| 1169 | 1312 | } |
| 1170 | 1313 | |
| 1171 | 1314 | /** |
| 1172 | - * Alias of self::get_company(). |
|
| 1173 | - * |
|
| 1174 | - * @since 1.0.19 |
|
| 1175 | - * @param string $context View or edit context. |
|
| 1176 | - * @return string |
|
| 1177 | - */ |
|
| 1178 | - public function get_customer_company( $context = 'view' ) { |
|
| 1179 | - return $this->get_company( $context ); |
|
| 1315 | + * Get invoice template. |
|
| 1316 | + * |
|
| 1317 | + * @since 1.0.19 |
|
| 1318 | + * @param string $context View or edit context. |
|
| 1319 | + * @return bool |
|
| 1320 | + */ |
|
| 1321 | + public function get_template( $context = 'view' ) { |
|
| 1322 | + return $this->get_prop( 'template', $context ); |
|
| 1180 | 1323 | } |
| 1181 | 1324 | |
| 1182 | - /** |
|
| 1183 | - * Get the customer's company id. |
|
| 1184 | - * |
|
| 1185 | - * @since 1.0.19 |
|
| 1186 | - * @param string $context View or edit context. |
|
| 1187 | - * @return string |
|
| 1188 | - */ |
|
| 1189 | - public function get_company_id( $context = 'view' ) { |
|
| 1190 | - return $this->get_prop( 'company_id', $context ); |
|
| 1325 | + /** |
|
| 1326 | + * Get invoice source. |
|
| 1327 | + * |
|
| 1328 | + * @since 1.0.19 |
|
| 1329 | + * @param string $context View or edit context. |
|
| 1330 | + * @return bool |
|
| 1331 | + */ |
|
| 1332 | + public function get_created_via( $context = 'view' ) { |
|
| 1333 | + return $this->get_prop( 'created_via', $context ); |
|
| 1191 | 1334 | } |
| 1192 | 1335 | |
| 1193 | 1336 | /** |
| 1194 | - * Get the customer's vat number. |
|
| 1195 | - * |
|
| 1196 | - * @since 1.0.19 |
|
| 1197 | - * @param string $context View or edit context. |
|
| 1198 | - * @return string |
|
| 1199 | - */ |
|
| 1200 | - public function get_vat_number( $context = 'view' ) { |
|
| 1201 | - return $this->get_prop( 'vat_number', $context ); |
|
| 1337 | + * Get whether the customer has confirmed their address. |
|
| 1338 | + * |
|
| 1339 | + * @since 1.0.19 |
|
| 1340 | + * @param string $context View or edit context. |
|
| 1341 | + * @return bool |
|
| 1342 | + */ |
|
| 1343 | + public function get_address_confirmed( $context = 'view' ) { |
|
| 1344 | + return (bool) $this->get_prop( 'address_confirmed', $context ); |
|
| 1202 | 1345 | } |
| 1203 | 1346 | |
| 1204 | 1347 | /** |
| 1205 | - * Alias of self::get_vat_number(). |
|
| 1206 | - * |
|
| 1207 | - * @since 1.0.19 |
|
| 1208 | - * @param string $context View or edit context. |
|
| 1209 | - * @return string |
|
| 1210 | - */ |
|
| 1211 | - public function get_user_vat_number( $context = 'view' ) { |
|
| 1212 | - return $this->get_vat_number( $context ); |
|
| 1348 | + * Alias of self::get_address_confirmed(). |
|
| 1349 | + * |
|
| 1350 | + * @since 1.0.19 |
|
| 1351 | + * @param string $context View or edit context. |
|
| 1352 | + * @return bool |
|
| 1353 | + */ |
|
| 1354 | + public function get_user_address_confirmed( $context = 'view' ) { |
|
| 1355 | + return $this->get_address_confirmed( $context ); |
|
| 1213 | 1356 | } |
| 1214 | 1357 | |
| 1215 | 1358 | /** |
| 1216 | - * Alias of self::get_vat_number(). |
|
| 1217 | - * |
|
| 1218 | - * @since 1.0.19 |
|
| 1219 | - * @param string $context View or edit context. |
|
| 1220 | - * @return string |
|
| 1221 | - */ |
|
| 1222 | - public function get_customer_vat_number( $context = 'view' ) { |
|
| 1223 | - return $this->get_vat_number( $context ); |
|
| 1359 | + * Alias of self::get_address(). |
|
| 1360 | + * |
|
| 1361 | + * @since 1.0.19 |
|
| 1362 | + * @param string $context View or edit context. |
|
| 1363 | + * @return bool |
|
| 1364 | + */ |
|
| 1365 | + public function get_customer_address_confirmed( $context = 'view' ) { |
|
| 1366 | + return $this->get_address_confirmed( $context ); |
|
| 1224 | 1367 | } |
| 1225 | 1368 | |
| 1226 | - /** |
|
| 1227 | - * Get the customer's vat rate. |
|
| 1228 | - * |
|
| 1229 | - * @since 1.0.19 |
|
| 1230 | - * @param string $context View or edit context. |
|
| 1231 | - * @return string |
|
| 1232 | - */ |
|
| 1233 | - public function get_vat_rate( $context = 'view' ) { |
|
| 1234 | - return $this->get_prop( 'vat_rate', $context ); |
|
| 1235 | - } |
|
| 1236 | - |
|
| 1237 | - /** |
|
| 1238 | - * Alias of self::get_vat_rate(). |
|
| 1239 | - * |
|
| 1240 | - * @since 1.0.19 |
|
| 1241 | - * @param string $context View or edit context. |
|
| 1242 | - * @return string |
|
| 1243 | - */ |
|
| 1244 | - public function get_user_vat_rate( $context = 'view' ) { |
|
| 1245 | - return $this->get_vat_rate( $context ); |
|
| 1246 | - } |
|
| 1247 | - |
|
| 1248 | - /** |
|
| 1249 | - * Alias of self::get_vat_rate(). |
|
| 1250 | - * |
|
| 1251 | - * @since 1.0.19 |
|
| 1252 | - * @param string $context View or edit context. |
|
| 1253 | - * @return string |
|
| 1254 | - */ |
|
| 1255 | - public function get_customer_vat_rate( $context = 'view' ) { |
|
| 1256 | - return $this->get_vat_rate( $context ); |
|
| 1257 | - } |
|
| 1258 | - |
|
| 1259 | - /** |
|
| 1260 | - * Get the customer's address. |
|
| 1261 | - * |
|
| 1262 | - * @since 1.0.19 |
|
| 1263 | - * @param string $context View or edit context. |
|
| 1264 | - * @return string |
|
| 1265 | - */ |
|
| 1266 | - public function get_address( $context = 'view' ) { |
|
| 1267 | - return $this->get_prop( 'address', $context ); |
|
| 1268 | - } |
|
| 1269 | - |
|
| 1270 | - /** |
|
| 1271 | - * Alias of self::get_address(). |
|
| 1272 | - * |
|
| 1273 | - * @since 1.0.19 |
|
| 1274 | - * @param string $context View or edit context. |
|
| 1275 | - * @return string |
|
| 1276 | - */ |
|
| 1277 | - public function get_user_address( $context = 'view' ) { |
|
| 1278 | - return $this->get_address( $context ); |
|
| 1279 | - } |
|
| 1280 | - |
|
| 1281 | - /** |
|
| 1282 | - * Alias of self::get_address(). |
|
| 1283 | - * |
|
| 1284 | - * @since 1.0.19 |
|
| 1285 | - * @param string $context View or edit context. |
|
| 1286 | - * @return string |
|
| 1287 | - */ |
|
| 1288 | - public function get_customer_address( $context = 'view' ) { |
|
| 1289 | - return $this->get_address( $context ); |
|
| 1290 | - } |
|
| 1291 | - |
|
| 1292 | - /** |
|
| 1293 | - * Get whether the customer has viewed the invoice or not. |
|
| 1294 | - * |
|
| 1295 | - * @since 1.0.19 |
|
| 1296 | - * @param string $context View or edit context. |
|
| 1297 | - * @return bool |
|
| 1298 | - */ |
|
| 1299 | - public function get_is_viewed( $context = 'view' ) { |
|
| 1300 | - return (bool) $this->get_prop( 'is_viewed', $context ); |
|
| 1301 | - } |
|
| 1302 | - |
|
| 1303 | - /** |
|
| 1304 | - * Get other recipients for invoice communications. |
|
| 1305 | - * |
|
| 1306 | - * @since 1.0.19 |
|
| 1307 | - * @param string $context View or edit context. |
|
| 1308 | - * @return bool |
|
| 1309 | - */ |
|
| 1310 | - public function get_email_cc( $context = 'view' ) { |
|
| 1311 | - return $this->get_prop( 'email_cc', $context ); |
|
| 1312 | - } |
|
| 1313 | - |
|
| 1314 | - /** |
|
| 1315 | - * Get invoice template. |
|
| 1316 | - * |
|
| 1317 | - * @since 1.0.19 |
|
| 1318 | - * @param string $context View or edit context. |
|
| 1319 | - * @return bool |
|
| 1320 | - */ |
|
| 1321 | - public function get_template( $context = 'view' ) { |
|
| 1322 | - return $this->get_prop( 'template', $context ); |
|
| 1323 | - } |
|
| 1324 | - |
|
| 1325 | - /** |
|
| 1326 | - * Get invoice source. |
|
| 1327 | - * |
|
| 1328 | - * @since 1.0.19 |
|
| 1329 | - * @param string $context View or edit context. |
|
| 1330 | - * @return bool |
|
| 1331 | - */ |
|
| 1332 | - public function get_created_via( $context = 'view' ) { |
|
| 1333 | - return $this->get_prop( 'created_via', $context ); |
|
| 1334 | - } |
|
| 1335 | - |
|
| 1336 | - /** |
|
| 1337 | - * Get whether the customer has confirmed their address. |
|
| 1338 | - * |
|
| 1339 | - * @since 1.0.19 |
|
| 1340 | - * @param string $context View or edit context. |
|
| 1341 | - * @return bool |
|
| 1342 | - */ |
|
| 1343 | - public function get_address_confirmed( $context = 'view' ) { |
|
| 1344 | - return (bool) $this->get_prop( 'address_confirmed', $context ); |
|
| 1345 | - } |
|
| 1346 | - |
|
| 1347 | - /** |
|
| 1348 | - * Alias of self::get_address_confirmed(). |
|
| 1349 | - * |
|
| 1350 | - * @since 1.0.19 |
|
| 1351 | - * @param string $context View or edit context. |
|
| 1352 | - * @return bool |
|
| 1353 | - */ |
|
| 1354 | - public function get_user_address_confirmed( $context = 'view' ) { |
|
| 1355 | - return $this->get_address_confirmed( $context ); |
|
| 1356 | - } |
|
| 1357 | - |
|
| 1358 | - /** |
|
| 1359 | - * Alias of self::get_address(). |
|
| 1360 | - * |
|
| 1361 | - * @since 1.0.19 |
|
| 1362 | - * @param string $context View or edit context. |
|
| 1363 | - * @return bool |
|
| 1364 | - */ |
|
| 1365 | - public function get_customer_address_confirmed( $context = 'view' ) { |
|
| 1366 | - return $this->get_address_confirmed( $context ); |
|
| 1367 | - } |
|
| 1368 | - |
|
| 1369 | - /** |
|
| 1370 | - * Get the invoice subtotal. |
|
| 1371 | - * |
|
| 1372 | - * @since 1.0.19 |
|
| 1373 | - * @param string $context View or edit context. |
|
| 1374 | - * @return float |
|
| 1375 | - */ |
|
| 1376 | - public function get_subtotal( $context = 'view' ) { |
|
| 1369 | + /** |
|
| 1370 | + * Get the invoice subtotal. |
|
| 1371 | + * |
|
| 1372 | + * @since 1.0.19 |
|
| 1373 | + * @param string $context View or edit context. |
|
| 1374 | + * @return float |
|
| 1375 | + */ |
|
| 1376 | + public function get_subtotal( $context = 'view' ) { |
|
| 1377 | 1377 | $subtotal = (float) $this->get_prop( 'subtotal', $context ); |
| 1378 | 1378 | |
| 1379 | 1379 | // Backwards compatibility. |
@@ -1385,192 +1385,192 @@ discard block |
||
| 1385 | 1385 | } |
| 1386 | 1386 | |
| 1387 | 1387 | /** |
| 1388 | - * Get the invoice discount total. |
|
| 1389 | - * |
|
| 1390 | - * @since 1.0.19 |
|
| 1391 | - * @param string $context View or edit context. |
|
| 1392 | - * @return float |
|
| 1393 | - */ |
|
| 1394 | - public function get_total_discount( $context = 'view' ) { |
|
| 1395 | - return wpinv_round_amount( wpinv_sanitize_amount( $this->get_prop( 'total_discount', $context ) ) ); |
|
| 1388 | + * Get the invoice discount total. |
|
| 1389 | + * |
|
| 1390 | + * @since 1.0.19 |
|
| 1391 | + * @param string $context View or edit context. |
|
| 1392 | + * @return float |
|
| 1393 | + */ |
|
| 1394 | + public function get_total_discount( $context = 'view' ) { |
|
| 1395 | + return wpinv_round_amount( wpinv_sanitize_amount( $this->get_prop( 'total_discount', $context ) ) ); |
|
| 1396 | 1396 | } |
| 1397 | 1397 | |
| 1398 | 1398 | /** |
| 1399 | - * Get the invoice tax total. |
|
| 1400 | - * |
|
| 1401 | - * @since 1.0.19 |
|
| 1402 | - * @param string $context View or edit context. |
|
| 1403 | - * @return float |
|
| 1404 | - */ |
|
| 1405 | - public function get_total_tax( $context = 'view' ) { |
|
| 1406 | - return wpinv_round_amount( wpinv_sanitize_amount( $this->get_prop( 'total_tax', $context ) ) ); |
|
| 1407 | - } |
|
| 1399 | + * Get the invoice tax total. |
|
| 1400 | + * |
|
| 1401 | + * @since 1.0.19 |
|
| 1402 | + * @param string $context View or edit context. |
|
| 1403 | + * @return float |
|
| 1404 | + */ |
|
| 1405 | + public function get_total_tax( $context = 'view' ) { |
|
| 1406 | + return wpinv_round_amount( wpinv_sanitize_amount( $this->get_prop( 'total_tax', $context ) ) ); |
|
| 1407 | + } |
|
| 1408 | 1408 | |
| 1409 | - /** |
|
| 1410 | - * @deprecated |
|
| 1411 | - */ |
|
| 1412 | - public function get_final_tax( $currency = false ) { |
|
| 1413 | - $tax = $this->get_total_tax(); |
|
| 1409 | + /** |
|
| 1410 | + * @deprecated |
|
| 1411 | + */ |
|
| 1412 | + public function get_final_tax( $currency = false ) { |
|
| 1413 | + $tax = $this->get_total_tax(); |
|
| 1414 | 1414 | |
| 1415 | 1415 | if ( $currency ) { |
| 1416 | - return wpinv_price( $tax, $this->get_currency() ); |
|
| 1416 | + return wpinv_price( $tax, $this->get_currency() ); |
|
| 1417 | 1417 | } |
| 1418 | 1418 | |
| 1419 | 1419 | return $tax; |
| 1420 | 1420 | } |
| 1421 | 1421 | |
| 1422 | 1422 | /** |
| 1423 | - * Get the invoice fees total. |
|
| 1424 | - * |
|
| 1425 | - * @since 1.0.19 |
|
| 1426 | - * @param string $context View or edit context. |
|
| 1427 | - * @return float |
|
| 1428 | - */ |
|
| 1429 | - public function get_total_fees( $context = 'view' ) { |
|
| 1430 | - return wpinv_round_amount( wpinv_sanitize_amount( $this->get_prop( 'total_fees', $context ) ) ); |
|
| 1423 | + * Get the invoice fees total. |
|
| 1424 | + * |
|
| 1425 | + * @since 1.0.19 |
|
| 1426 | + * @param string $context View or edit context. |
|
| 1427 | + * @return float |
|
| 1428 | + */ |
|
| 1429 | + public function get_total_fees( $context = 'view' ) { |
|
| 1430 | + return wpinv_round_amount( wpinv_sanitize_amount( $this->get_prop( 'total_fees', $context ) ) ); |
|
| 1431 | 1431 | } |
| 1432 | 1432 | |
| 1433 | 1433 | /** |
| 1434 | - * Alias for self::get_total_fees(). |
|
| 1435 | - * |
|
| 1436 | - * @since 1.0.19 |
|
| 1437 | - * @param string $context View or edit context. |
|
| 1438 | - * @return float |
|
| 1439 | - */ |
|
| 1440 | - public function get_fees_total( $context = 'view' ) { |
|
| 1441 | - return $this->get_total_fees( $context ); |
|
| 1434 | + * Alias for self::get_total_fees(). |
|
| 1435 | + * |
|
| 1436 | + * @since 1.0.19 |
|
| 1437 | + * @param string $context View or edit context. |
|
| 1438 | + * @return float |
|
| 1439 | + */ |
|
| 1440 | + public function get_fees_total( $context = 'view' ) { |
|
| 1441 | + return $this->get_total_fees( $context ); |
|
| 1442 | 1442 | } |
| 1443 | 1443 | |
| 1444 | 1444 | /** |
| 1445 | - * Get the invoice total. |
|
| 1446 | - * |
|
| 1447 | - * @since 1.0.19 |
|
| 1445 | + * Get the invoice total. |
|
| 1446 | + * |
|
| 1447 | + * @since 1.0.19 |
|
| 1448 | 1448 | * @return float |
| 1449 | - */ |
|
| 1450 | - public function get_total( $context = 'view' ) { |
|
| 1451 | - return wpinv_round_amount( wpinv_sanitize_amount( $this->get_prop( 'total', $context ) ) ); |
|
| 1452 | - } |
|
| 1453 | - |
|
| 1454 | - /** |
|
| 1455 | - * Retrieves the non-recurring total of items. |
|
| 1456 | - * |
|
| 1457 | - * @since 2.3.0 |
|
| 1458 | - * @return float |
|
| 1459 | - */ |
|
| 1460 | - public function get_non_recurring_total() { |
|
| 1461 | - |
|
| 1462 | - $subtotal = 0; |
|
| 1463 | - foreach ( $this->get_items() as $item ) { |
|
| 1464 | - if ( ! $item->is_recurring() ) { |
|
| 1465 | - $subtotal += $item->get_sub_total(); |
|
| 1466 | - } |
|
| 1467 | - } |
|
| 1468 | - |
|
| 1469 | - foreach ( $this->get_fees() as $fee ) { |
|
| 1470 | - if ( empty( $fee['recurring_fee'] ) ) { |
|
| 1471 | - $subtotal += wpinv_sanitize_amount( $fee['initial_fee'] ); |
|
| 1472 | - } |
|
| 1473 | - } |
|
| 1474 | - |
|
| 1475 | - $subtotal = wpinv_round_amount( wpinv_sanitize_amount( $subtotal ) ); |
|
| 1449 | + */ |
|
| 1450 | + public function get_total( $context = 'view' ) { |
|
| 1451 | + return wpinv_round_amount( wpinv_sanitize_amount( $this->get_prop( 'total', $context ) ) ); |
|
| 1452 | + } |
|
| 1453 | + |
|
| 1454 | + /** |
|
| 1455 | + * Retrieves the non-recurring total of items. |
|
| 1456 | + * |
|
| 1457 | + * @since 2.3.0 |
|
| 1458 | + * @return float |
|
| 1459 | + */ |
|
| 1460 | + public function get_non_recurring_total() { |
|
| 1461 | + |
|
| 1462 | + $subtotal = 0; |
|
| 1463 | + foreach ( $this->get_items() as $item ) { |
|
| 1464 | + if ( ! $item->is_recurring() ) { |
|
| 1465 | + $subtotal += $item->get_sub_total(); |
|
| 1466 | + } |
|
| 1467 | + } |
|
| 1468 | + |
|
| 1469 | + foreach ( $this->get_fees() as $fee ) { |
|
| 1470 | + if ( empty( $fee['recurring_fee'] ) ) { |
|
| 1471 | + $subtotal += wpinv_sanitize_amount( $fee['initial_fee'] ); |
|
| 1472 | + } |
|
| 1473 | + } |
|
| 1474 | + |
|
| 1475 | + $subtotal = wpinv_round_amount( wpinv_sanitize_amount( $subtotal ) ); |
|
| 1476 | 1476 | return apply_filters( 'wpinv_get_non_recurring_invoice_total', $subtotal, $this ); |
| 1477 | 1477 | |
| 1478 | 1478 | } |
| 1479 | 1479 | |
| 1480 | - /** |
|
| 1481 | - * Get the invoice totals. |
|
| 1482 | - * |
|
| 1483 | - * @since 1.0.19 |
|
| 1480 | + /** |
|
| 1481 | + * Get the invoice totals. |
|
| 1482 | + * |
|
| 1483 | + * @since 1.0.19 |
|
| 1484 | 1484 | * @return array |
| 1485 | - */ |
|
| 1486 | - public function get_totals() { |
|
| 1487 | - return $this->totals; |
|
| 1485 | + */ |
|
| 1486 | + public function get_totals() { |
|
| 1487 | + return $this->totals; |
|
| 1488 | 1488 | } |
| 1489 | 1489 | |
| 1490 | 1490 | /** |
| 1491 | - * Get the initial invoice total. |
|
| 1492 | - * |
|
| 1493 | - * @since 1.0.19 |
|
| 1491 | + * Get the initial invoice total. |
|
| 1492 | + * |
|
| 1493 | + * @since 1.0.19 |
|
| 1494 | 1494 | * @param string $context View or edit context. |
| 1495 | 1495 | * @return float |
| 1496 | - */ |
|
| 1496 | + */ |
|
| 1497 | 1497 | public function get_initial_total() { |
| 1498 | 1498 | |
| 1499 | - if ( empty( $this->totals ) ) { |
|
| 1500 | - $this->recalculate_total(); |
|
| 1501 | - } |
|
| 1499 | + if ( empty( $this->totals ) ) { |
|
| 1500 | + $this->recalculate_total(); |
|
| 1501 | + } |
|
| 1502 | 1502 | |
| 1503 | - $tax = $this->totals['tax']['initial']; |
|
| 1504 | - $fee = $this->totals['fee']['initial']; |
|
| 1505 | - $discount = $this->totals['discount']['initial']; |
|
| 1506 | - $subtotal = $this->totals['subtotal']['initial']; |
|
| 1507 | - $total = $tax + $fee - $discount + $subtotal; |
|
| 1503 | + $tax = $this->totals['tax']['initial']; |
|
| 1504 | + $fee = $this->totals['fee']['initial']; |
|
| 1505 | + $discount = $this->totals['discount']['initial']; |
|
| 1506 | + $subtotal = $this->totals['subtotal']['initial']; |
|
| 1507 | + $total = $tax + $fee - $discount + $subtotal; |
|
| 1508 | 1508 | |
| 1509 | - if ( 0 > $total ) { |
|
| 1510 | - $total = 0; |
|
| 1511 | - } |
|
| 1509 | + if ( 0 > $total ) { |
|
| 1510 | + $total = 0; |
|
| 1511 | + } |
|
| 1512 | 1512 | |
| 1513 | - $total = wpinv_round_amount( wpinv_sanitize_amount( $total ) ); |
|
| 1513 | + $total = wpinv_round_amount( wpinv_sanitize_amount( $total ) ); |
|
| 1514 | 1514 | return apply_filters( 'wpinv_get_initial_invoice_total', $total, $this ); |
| 1515 | - } |
|
| 1515 | + } |
|
| 1516 | 1516 | |
| 1517 | - /** |
|
| 1518 | - * Get the recurring invoice total. |
|
| 1519 | - * |
|
| 1520 | - * @since 1.0.19 |
|
| 1517 | + /** |
|
| 1518 | + * Get the recurring invoice total. |
|
| 1519 | + * |
|
| 1520 | + * @since 1.0.19 |
|
| 1521 | 1521 | * @param string $context View or edit context. |
| 1522 | 1522 | * @return float |
| 1523 | - */ |
|
| 1523 | + */ |
|
| 1524 | 1524 | public function get_recurring_total() { |
| 1525 | 1525 | |
| 1526 | - if ( empty( $this->totals ) ) { |
|
| 1527 | - $this->recalculate_total(); |
|
| 1528 | - } |
|
| 1526 | + if ( empty( $this->totals ) ) { |
|
| 1527 | + $this->recalculate_total(); |
|
| 1528 | + } |
|
| 1529 | 1529 | |
| 1530 | - $tax = $this->totals['tax']['recurring']; |
|
| 1531 | - $fee = $this->totals['fee']['recurring']; |
|
| 1532 | - $discount = $this->totals['discount']['recurring']; |
|
| 1533 | - $subtotal = $this->totals['subtotal']['recurring']; |
|
| 1534 | - $total = $tax + $fee - $discount + $subtotal; |
|
| 1530 | + $tax = $this->totals['tax']['recurring']; |
|
| 1531 | + $fee = $this->totals['fee']['recurring']; |
|
| 1532 | + $discount = $this->totals['discount']['recurring']; |
|
| 1533 | + $subtotal = $this->totals['subtotal']['recurring']; |
|
| 1534 | + $total = $tax + $fee - $discount + $subtotal; |
|
| 1535 | 1535 | |
| 1536 | - if ( 0 > $total ) { |
|
| 1537 | - $total = 0; |
|
| 1538 | - } |
|
| 1536 | + if ( 0 > $total ) { |
|
| 1537 | + $total = 0; |
|
| 1538 | + } |
|
| 1539 | 1539 | |
| 1540 | - $total = wpinv_round_amount( wpinv_sanitize_amount( $total ) ); |
|
| 1540 | + $total = wpinv_round_amount( wpinv_sanitize_amount( $total ) ); |
|
| 1541 | 1541 | return apply_filters( 'wpinv_get_recurring_invoice_total', $total, $this ); |
| 1542 | - } |
|
| 1542 | + } |
|
| 1543 | 1543 | |
| 1544 | - /** |
|
| 1545 | - * Returns recurring payment details. |
|
| 1546 | - * |
|
| 1547 | - * @since 1.0.19 |
|
| 1544 | + /** |
|
| 1545 | + * Returns recurring payment details. |
|
| 1546 | + * |
|
| 1547 | + * @since 1.0.19 |
|
| 1548 | 1548 | * @param string $field Optionally provide a field to return. |
| 1549 | - * @param string $currency Whether to include the currency. |
|
| 1549 | + * @param string $currency Whether to include the currency. |
|
| 1550 | 1550 | * @return float|string |
| 1551 | - */ |
|
| 1551 | + */ |
|
| 1552 | 1552 | public function get_recurring_details( $field = '', $currency = false ) { |
| 1553 | 1553 | |
| 1554 | - // Maybe recalculate totals. |
|
| 1555 | - if ( empty( $this->totals ) ) { |
|
| 1556 | - $this->recalculate_total(); |
|
| 1557 | - } |
|
| 1554 | + // Maybe recalculate totals. |
|
| 1555 | + if ( empty( $this->totals ) ) { |
|
| 1556 | + $this->recalculate_total(); |
|
| 1557 | + } |
|
| 1558 | 1558 | |
| 1559 | - // Prepare recurring totals. |
|
| 1559 | + // Prepare recurring totals. |
|
| 1560 | 1560 | $data = apply_filters( |
| 1561 | - 'wpinv_get_invoice_recurring_details', |
|
| 1562 | - array( |
|
| 1563 | - 'cart_details' => $this->get_cart_details(), |
|
| 1564 | - 'subtotal' => $this->totals['subtotal']['recurring'], |
|
| 1565 | - 'discount' => $this->totals['discount']['recurring'], |
|
| 1566 | - 'tax' => $this->totals['tax']['recurring'], |
|
| 1567 | - 'fee' => $this->totals['fee']['recurring'], |
|
| 1568 | - 'total' => $this->get_recurring_total(), |
|
| 1569 | - ), |
|
| 1570 | - $this, |
|
| 1571 | - $field, |
|
| 1572 | - $currency |
|
| 1573 | - ); |
|
| 1561 | + 'wpinv_get_invoice_recurring_details', |
|
| 1562 | + array( |
|
| 1563 | + 'cart_details' => $this->get_cart_details(), |
|
| 1564 | + 'subtotal' => $this->totals['subtotal']['recurring'], |
|
| 1565 | + 'discount' => $this->totals['discount']['recurring'], |
|
| 1566 | + 'tax' => $this->totals['tax']['recurring'], |
|
| 1567 | + 'fee' => $this->totals['fee']['recurring'], |
|
| 1568 | + 'total' => $this->get_recurring_total(), |
|
| 1569 | + ), |
|
| 1570 | + $this, |
|
| 1571 | + $field, |
|
| 1572 | + $currency |
|
| 1573 | + ); |
|
| 1574 | 1574 | |
| 1575 | 1575 | if ( isset( $data[$field] ) ) { |
| 1576 | 1576 | return ( $currency ? wpinv_price( $data[$field], $this->get_currency() ) : $data[$field] ); |
@@ -1580,166 +1580,166 @@ discard block |
||
| 1580 | 1580 | } |
| 1581 | 1581 | |
| 1582 | 1582 | /** |
| 1583 | - * Get the invoice fees. |
|
| 1584 | - * |
|
| 1585 | - * @since 1.0.19 |
|
| 1586 | - * @param string $context View or edit context. |
|
| 1587 | - * @return array |
|
| 1588 | - */ |
|
| 1589 | - public function get_fees( $context = 'view' ) { |
|
| 1590 | - return wpinv_parse_list( $this->get_prop( 'fees', $context ) ); |
|
| 1583 | + * Get the invoice fees. |
|
| 1584 | + * |
|
| 1585 | + * @since 1.0.19 |
|
| 1586 | + * @param string $context View or edit context. |
|
| 1587 | + * @return array |
|
| 1588 | + */ |
|
| 1589 | + public function get_fees( $context = 'view' ) { |
|
| 1590 | + return wpinv_parse_list( $this->get_prop( 'fees', $context ) ); |
|
| 1591 | + } |
|
| 1592 | + |
|
| 1593 | + /** |
|
| 1594 | + * Get the invoice discounts. |
|
| 1595 | + * |
|
| 1596 | + * @since 1.0.19 |
|
| 1597 | + * @param string $context View or edit context. |
|
| 1598 | + * @return array |
|
| 1599 | + */ |
|
| 1600 | + public function get_discounts( $context = 'view' ) { |
|
| 1601 | + return wpinv_parse_list( $this->get_prop( 'discounts', $context ) ); |
|
| 1591 | 1602 | } |
| 1592 | 1603 | |
| 1593 | 1604 | /** |
| 1594 | - * Get the invoice discounts. |
|
| 1595 | - * |
|
| 1596 | - * @since 1.0.19 |
|
| 1597 | - * @param string $context View or edit context. |
|
| 1598 | - * @return array |
|
| 1599 | - */ |
|
| 1600 | - public function get_discounts( $context = 'view' ) { |
|
| 1601 | - return wpinv_parse_list( $this->get_prop( 'discounts', $context ) ); |
|
| 1605 | + * Get the invoice taxes. |
|
| 1606 | + * |
|
| 1607 | + * @since 1.0.19 |
|
| 1608 | + * @param string $context View or edit context. |
|
| 1609 | + * @return array |
|
| 1610 | + */ |
|
| 1611 | + public function get_taxes( $context = 'view' ) { |
|
| 1612 | + return wpinv_parse_list( $this->get_prop( 'taxes', $context ) ); |
|
| 1602 | 1613 | } |
| 1603 | 1614 | |
| 1604 | 1615 | /** |
| 1605 | - * Get the invoice taxes. |
|
| 1606 | - * |
|
| 1607 | - * @since 1.0.19 |
|
| 1608 | - * @param string $context View or edit context. |
|
| 1609 | - * @return array |
|
| 1610 | - */ |
|
| 1611 | - public function get_taxes( $context = 'view' ) { |
|
| 1612 | - return wpinv_parse_list( $this->get_prop( 'taxes', $context ) ); |
|
| 1616 | + * Get the invoice items. |
|
| 1617 | + * |
|
| 1618 | + * @since 1.0.19 |
|
| 1619 | + * @param string $context View or edit context. |
|
| 1620 | + * @return GetPaid_Form_Item[] |
|
| 1621 | + */ |
|
| 1622 | + public function get_items( $context = 'view' ) { |
|
| 1623 | + return $this->get_prop( 'items', $context ); |
|
| 1613 | 1624 | } |
| 1614 | 1625 | |
| 1615 | 1626 | /** |
| 1616 | - * Get the invoice items. |
|
| 1617 | - * |
|
| 1618 | - * @since 1.0.19 |
|
| 1619 | - * @param string $context View or edit context. |
|
| 1620 | - * @return GetPaid_Form_Item[] |
|
| 1621 | - */ |
|
| 1622 | - public function get_items( $context = 'view' ) { |
|
| 1623 | - return $this->get_prop( 'items', $context ); |
|
| 1624 | - } |
|
| 1625 | - |
|
| 1626 | - /** |
|
| 1627 | - * Get the invoice item ids. |
|
| 1628 | - * |
|
| 1629 | - * @since 1.0.19 |
|
| 1630 | - * @return string |
|
| 1631 | - */ |
|
| 1632 | - public function get_item_ids() { |
|
| 1633 | - return implode( ', ', wp_list_pluck( $this->get_cart_details(), 'item_id' ) ); |
|
| 1627 | + * Get the invoice item ids. |
|
| 1628 | + * |
|
| 1629 | + * @since 1.0.19 |
|
| 1630 | + * @return string |
|
| 1631 | + */ |
|
| 1632 | + public function get_item_ids() { |
|
| 1633 | + return implode( ', ', wp_list_pluck( $this->get_cart_details(), 'item_id' ) ); |
|
| 1634 | 1634 | } |
| 1635 | 1635 | |
| 1636 | 1636 | /** |
| 1637 | - * Get the invoice's payment form. |
|
| 1638 | - * |
|
| 1639 | - * @since 1.0.19 |
|
| 1640 | - * @param string $context View or edit context. |
|
| 1641 | - * @return int |
|
| 1642 | - */ |
|
| 1643 | - public function get_payment_form( $context = 'view' ) { |
|
| 1644 | - return intval( $this->get_prop( 'payment_form', $context ) ); |
|
| 1637 | + * Get the invoice's payment form. |
|
| 1638 | + * |
|
| 1639 | + * @since 1.0.19 |
|
| 1640 | + * @param string $context View or edit context. |
|
| 1641 | + * @return int |
|
| 1642 | + */ |
|
| 1643 | + public function get_payment_form( $context = 'view' ) { |
|
| 1644 | + return intval( $this->get_prop( 'payment_form', $context ) ); |
|
| 1645 | 1645 | } |
| 1646 | 1646 | |
| 1647 | 1647 | /** |
| 1648 | - * Get the invoice's submission id. |
|
| 1649 | - * |
|
| 1650 | - * @since 1.0.19 |
|
| 1651 | - * @param string $context View or edit context. |
|
| 1652 | - * @return string |
|
| 1653 | - */ |
|
| 1654 | - public function get_submission_id( $context = 'view' ) { |
|
| 1655 | - return $this->get_prop( 'submission_id', $context ); |
|
| 1648 | + * Get the invoice's submission id. |
|
| 1649 | + * |
|
| 1650 | + * @since 1.0.19 |
|
| 1651 | + * @param string $context View or edit context. |
|
| 1652 | + * @return string |
|
| 1653 | + */ |
|
| 1654 | + public function get_submission_id( $context = 'view' ) { |
|
| 1655 | + return $this->get_prop( 'submission_id', $context ); |
|
| 1656 | 1656 | } |
| 1657 | 1657 | |
| 1658 | 1658 | /** |
| 1659 | - * Get the invoice's discount code. |
|
| 1660 | - * |
|
| 1661 | - * @since 1.0.19 |
|
| 1662 | - * @param string $context View or edit context. |
|
| 1663 | - * @return string |
|
| 1664 | - */ |
|
| 1665 | - public function get_discount_code( $context = 'view' ) { |
|
| 1666 | - return $this->get_prop( 'discount_code', $context ); |
|
| 1659 | + * Get the invoice's discount code. |
|
| 1660 | + * |
|
| 1661 | + * @since 1.0.19 |
|
| 1662 | + * @param string $context View or edit context. |
|
| 1663 | + * @return string |
|
| 1664 | + */ |
|
| 1665 | + public function get_discount_code( $context = 'view' ) { |
|
| 1666 | + return $this->get_prop( 'discount_code', $context ); |
|
| 1667 | 1667 | } |
| 1668 | 1668 | |
| 1669 | 1669 | /** |
| 1670 | - * Get the invoice's gateway. |
|
| 1671 | - * |
|
| 1672 | - * @since 1.0.19 |
|
| 1673 | - * @param string $context View or edit context. |
|
| 1674 | - * @return string |
|
| 1675 | - */ |
|
| 1676 | - public function get_gateway( $context = 'view' ) { |
|
| 1677 | - return $this->get_prop( 'gateway', $context ); |
|
| 1670 | + * Get the invoice's gateway. |
|
| 1671 | + * |
|
| 1672 | + * @since 1.0.19 |
|
| 1673 | + * @param string $context View or edit context. |
|
| 1674 | + * @return string |
|
| 1675 | + */ |
|
| 1676 | + public function get_gateway( $context = 'view' ) { |
|
| 1677 | + return $this->get_prop( 'gateway', $context ); |
|
| 1678 | 1678 | } |
| 1679 | 1679 | |
| 1680 | 1680 | /** |
| 1681 | - * Get the invoice's gateway display title. |
|
| 1682 | - * |
|
| 1683 | - * @since 1.0.19 |
|
| 1684 | - * @return string |
|
| 1685 | - */ |
|
| 1681 | + * Get the invoice's gateway display title. |
|
| 1682 | + * |
|
| 1683 | + * @since 1.0.19 |
|
| 1684 | + * @return string |
|
| 1685 | + */ |
|
| 1686 | 1686 | public function get_gateway_title() { |
| 1687 | 1687 | $title = wpinv_get_gateway_checkout_label( $this->get_gateway() ); |
| 1688 | 1688 | return apply_filters( 'wpinv_gateway_title', $title, $this->get_id(), $this ); |
| 1689 | 1689 | } |
| 1690 | 1690 | |
| 1691 | 1691 | /** |
| 1692 | - * Get the invoice's transaction id. |
|
| 1693 | - * |
|
| 1694 | - * @since 1.0.19 |
|
| 1695 | - * @param string $context View or edit context. |
|
| 1696 | - * @return string |
|
| 1697 | - */ |
|
| 1698 | - public function get_transaction_id( $context = 'view' ) { |
|
| 1699 | - return $this->get_prop( 'transaction_id', $context ); |
|
| 1692 | + * Get the invoice's transaction id. |
|
| 1693 | + * |
|
| 1694 | + * @since 1.0.19 |
|
| 1695 | + * @param string $context View or edit context. |
|
| 1696 | + * @return string |
|
| 1697 | + */ |
|
| 1698 | + public function get_transaction_id( $context = 'view' ) { |
|
| 1699 | + return $this->get_prop( 'transaction_id', $context ); |
|
| 1700 | 1700 | } |
| 1701 | 1701 | |
| 1702 | 1702 | /** |
| 1703 | - * Get the invoice's currency. |
|
| 1704 | - * |
|
| 1705 | - * @since 1.0.19 |
|
| 1706 | - * @param string $context View or edit context. |
|
| 1707 | - * @return string |
|
| 1708 | - */ |
|
| 1709 | - public function get_currency( $context = 'view' ) { |
|
| 1703 | + * Get the invoice's currency. |
|
| 1704 | + * |
|
| 1705 | + * @since 1.0.19 |
|
| 1706 | + * @param string $context View or edit context. |
|
| 1707 | + * @return string |
|
| 1708 | + */ |
|
| 1709 | + public function get_currency( $context = 'view' ) { |
|
| 1710 | 1710 | $currency = $this->get_prop( 'currency', $context ); |
| 1711 | 1711 | return empty( $currency ) ? wpinv_get_currency() : $currency; |
| 1712 | 1712 | } |
| 1713 | 1713 | |
| 1714 | 1714 | /** |
| 1715 | - * Checks if we are charging taxes for this invoice. |
|
| 1716 | - * |
|
| 1717 | - * @since 1.0.19 |
|
| 1718 | - * @param string $context View or edit context. |
|
| 1719 | - * @return bool |
|
| 1720 | - */ |
|
| 1721 | - public function get_disable_taxes( $context = 'view' ) { |
|
| 1715 | + * Checks if we are charging taxes for this invoice. |
|
| 1716 | + * |
|
| 1717 | + * @since 1.0.19 |
|
| 1718 | + * @param string $context View or edit context. |
|
| 1719 | + * @return bool |
|
| 1720 | + */ |
|
| 1721 | + public function get_disable_taxes( $context = 'view' ) { |
|
| 1722 | 1722 | return (bool) $this->get_prop( 'disable_taxes', $context ); |
| 1723 | 1723 | } |
| 1724 | 1724 | |
| 1725 | 1725 | /** |
| 1726 | - * Retrieves the subscription id for an invoice. |
|
| 1727 | - * |
|
| 1728 | - * @since 1.0.19 |
|
| 1729 | - * @param string $context View or edit context. |
|
| 1730 | - * @return int |
|
| 1731 | - */ |
|
| 1726 | + * Retrieves the subscription id for an invoice. |
|
| 1727 | + * |
|
| 1728 | + * @since 1.0.19 |
|
| 1729 | + * @param string $context View or edit context. |
|
| 1730 | + * @return int |
|
| 1731 | + */ |
|
| 1732 | 1732 | public function get_subscription_id( $context = 'view' ) { |
| 1733 | - return $this->is_renewal() ? $this->get_parent()->get_subscription_id( $context ) : $this->get_prop( 'subscription_id', $context ); |
|
| 1734 | - } |
|
| 1735 | - |
|
| 1736 | - /** |
|
| 1737 | - * Retrieves the remote subscription id for an invoice. |
|
| 1738 | - * |
|
| 1739 | - * @since 1.0.19 |
|
| 1740 | - * @param string $context View or edit context. |
|
| 1741 | - * @return int |
|
| 1742 | - */ |
|
| 1733 | + return $this->is_renewal() ? $this->get_parent()->get_subscription_id( $context ) : $this->get_prop( 'subscription_id', $context ); |
|
| 1734 | + } |
|
| 1735 | + |
|
| 1736 | + /** |
|
| 1737 | + * Retrieves the remote subscription id for an invoice. |
|
| 1738 | + * |
|
| 1739 | + * @since 1.0.19 |
|
| 1740 | + * @param string $context View or edit context. |
|
| 1741 | + * @return int |
|
| 1742 | + */ |
|
| 1743 | 1743 | public function get_remote_subscription_id( $context = 'view' ) { |
| 1744 | 1744 | $subscription_id = $this->get_prop( 'remote_subscription_id', $context ); |
| 1745 | 1745 | |
@@ -1752,12 +1752,12 @@ discard block |
||
| 1752 | 1752 | } |
| 1753 | 1753 | |
| 1754 | 1754 | /** |
| 1755 | - * Retrieves the payment meta for an invoice. |
|
| 1756 | - * |
|
| 1757 | - * @since 1.0.19 |
|
| 1758 | - * @param string $context View or edit context. |
|
| 1759 | - * @return array |
|
| 1760 | - */ |
|
| 1755 | + * Retrieves the payment meta for an invoice. |
|
| 1756 | + * |
|
| 1757 | + * @since 1.0.19 |
|
| 1758 | + * @param string $context View or edit context. |
|
| 1759 | + * @return array |
|
| 1760 | + */ |
|
| 1761 | 1761 | public function get_payment_meta( $context = 'view' ) { |
| 1762 | 1762 | |
| 1763 | 1763 | return array( |
@@ -1777,31 +1777,31 @@ discard block |
||
| 1777 | 1777 | } |
| 1778 | 1778 | |
| 1779 | 1779 | /** |
| 1780 | - * Retrieves the cart details for an invoice. |
|
| 1781 | - * |
|
| 1782 | - * @since 1.0.19 |
|
| 1783 | - * @return array |
|
| 1784 | - */ |
|
| 1780 | + * Retrieves the cart details for an invoice. |
|
| 1781 | + * |
|
| 1782 | + * @since 1.0.19 |
|
| 1783 | + * @return array |
|
| 1784 | + */ |
|
| 1785 | 1785 | public function get_cart_details() { |
| 1786 | 1786 | $items = $this->get_items(); |
| 1787 | 1787 | $cart_details = array(); |
| 1788 | 1788 | |
| 1789 | 1789 | foreach ( $items as $item ) { |
| 1790 | - $item->invoice_id = $this->get_id(); |
|
| 1790 | + $item->invoice_id = $this->get_id(); |
|
| 1791 | 1791 | $cart_details[] = $item->prepare_data_for_saving(); |
| 1792 | 1792 | } |
| 1793 | 1793 | |
| 1794 | 1794 | return $cart_details; |
| 1795 | - } |
|
| 1795 | + } |
|
| 1796 | 1796 | |
| 1797 | - /** |
|
| 1798 | - * Retrieves the recurring item. |
|
| 1799 | - * |
|
| 1800 | - * @return null|GetPaid_Form_Item|int |
|
| 1801 | - */ |
|
| 1802 | - public function get_recurring( $object = false ) { |
|
| 1797 | + /** |
|
| 1798 | + * Retrieves the recurring item. |
|
| 1799 | + * |
|
| 1800 | + * @return null|GetPaid_Form_Item|int |
|
| 1801 | + */ |
|
| 1802 | + public function get_recurring( $object = false ) { |
|
| 1803 | 1803 | |
| 1804 | - // Are we returning an object? |
|
| 1804 | + // Are we returning an object? |
|
| 1805 | 1805 | if ( $object ) { |
| 1806 | 1806 | return $this->get_item( $this->recurring_item ); |
| 1807 | 1807 | } |
@@ -1809,114 +1809,114 @@ discard block |
||
| 1809 | 1809 | return $this->recurring_item; |
| 1810 | 1810 | } |
| 1811 | 1811 | |
| 1812 | - /** |
|
| 1813 | - * Retrieves the subscription name. |
|
| 1814 | - * |
|
| 1815 | - * @since 1.0.19 |
|
| 1816 | - * @return string |
|
| 1817 | - */ |
|
| 1818 | - public function get_subscription_name() { |
|
| 1812 | + /** |
|
| 1813 | + * Retrieves the subscription name. |
|
| 1814 | + * |
|
| 1815 | + * @since 1.0.19 |
|
| 1816 | + * @return string |
|
| 1817 | + */ |
|
| 1818 | + public function get_subscription_name() { |
|
| 1819 | 1819 | |
| 1820 | - // Retrieve the recurring name |
|
| 1820 | + // Retrieve the recurring name |
|
| 1821 | 1821 | $item = $this->get_recurring( true ); |
| 1822 | 1822 | |
| 1823 | - // Abort if it does not exist. |
|
| 1823 | + // Abort if it does not exist. |
|
| 1824 | 1824 | if ( empty( $item ) ) { |
| 1825 | 1825 | return ''; |
| 1826 | 1826 | } |
| 1827 | 1827 | |
| 1828 | - // Return the item name. |
|
| 1828 | + // Return the item name. |
|
| 1829 | 1829 | return apply_filters( 'wpinv_invoice_get_subscription_name', $item->get_name(), $this ); |
| 1830 | - } |
|
| 1831 | - |
|
| 1832 | - /** |
|
| 1833 | - * Retrieves the view url. |
|
| 1834 | - * |
|
| 1835 | - * @since 1.0.19 |
|
| 1836 | - * @return string |
|
| 1837 | - */ |
|
| 1838 | - public function get_view_url() { |
|
| 1830 | + } |
|
| 1831 | + |
|
| 1832 | + /** |
|
| 1833 | + * Retrieves the view url. |
|
| 1834 | + * |
|
| 1835 | + * @since 1.0.19 |
|
| 1836 | + * @return string |
|
| 1837 | + */ |
|
| 1838 | + public function get_view_url() { |
|
| 1839 | 1839 | $invoice_url = get_permalink( $this->get_id() ); |
| 1840 | - $invoice_url = add_query_arg( 'invoice_key', $this->get_key(), $invoice_url ); |
|
| 1840 | + $invoice_url = add_query_arg( 'invoice_key', $this->get_key(), $invoice_url ); |
|
| 1841 | 1841 | return apply_filters( 'wpinv_get_view_url', $invoice_url, $this ); |
| 1842 | - } |
|
| 1842 | + } |
|
| 1843 | 1843 | |
| 1844 | - /** |
|
| 1845 | - * Retrieves the payment url. |
|
| 1846 | - * |
|
| 1847 | - * @since 1.0.19 |
|
| 1848 | - * @return string |
|
| 1849 | - */ |
|
| 1850 | - public function get_checkout_payment_url( $deprecated = false, $secret = false ) { |
|
| 1844 | + /** |
|
| 1845 | + * Retrieves the payment url. |
|
| 1846 | + * |
|
| 1847 | + * @since 1.0.19 |
|
| 1848 | + * @return string |
|
| 1849 | + */ |
|
| 1850 | + public function get_checkout_payment_url( $deprecated = false, $secret = false ) { |
|
| 1851 | 1851 | |
| 1852 | - // Retrieve the checkout url. |
|
| 1852 | + // Retrieve the checkout url. |
|
| 1853 | 1853 | $pay_url = wpinv_get_checkout_uri(); |
| 1854 | 1854 | |
| 1855 | - // Maybe force ssl. |
|
| 1855 | + // Maybe force ssl. |
|
| 1856 | 1856 | if ( is_ssl() ) { |
| 1857 | 1857 | $pay_url = str_replace( 'http:', 'https:', $pay_url ); |
| 1858 | 1858 | } |
| 1859 | 1859 | |
| 1860 | - // Add the invoice key. |
|
| 1861 | - $pay_url = add_query_arg( 'invoice_key', $this->get_key(), $pay_url ); |
|
| 1860 | + // Add the invoice key. |
|
| 1861 | + $pay_url = add_query_arg( 'invoice_key', $this->get_key(), $pay_url ); |
|
| 1862 | 1862 | |
| 1863 | - // (Maybe?) add a secret |
|
| 1863 | + // (Maybe?) add a secret |
|
| 1864 | 1864 | if ( $secret ) { |
| 1865 | 1865 | $pay_url = add_query_arg( array( '_wpipay' => md5( $this->get_user_id() . '::' . $this->get_email() . '::' . $this->get_key() ) ), $pay_url ); |
| 1866 | 1866 | } |
| 1867 | 1867 | |
| 1868 | 1868 | return apply_filters( 'wpinv_get_checkout_payment_url', $pay_url, $this, $deprecated, $secret ); |
| 1869 | - } |
|
| 1869 | + } |
|
| 1870 | 1870 | |
| 1871 | - /** |
|
| 1872 | - * Retrieves the receipt url. |
|
| 1873 | - * |
|
| 1874 | - * @since 1.0.19 |
|
| 1875 | - * @return string |
|
| 1876 | - */ |
|
| 1877 | - public function get_receipt_url() { |
|
| 1878 | - |
|
| 1879 | - // Retrieve the checkout url. |
|
| 1871 | + /** |
|
| 1872 | + * Retrieves the receipt url. |
|
| 1873 | + * |
|
| 1874 | + * @since 1.0.19 |
|
| 1875 | + * @return string |
|
| 1876 | + */ |
|
| 1877 | + public function get_receipt_url() { |
|
| 1878 | + |
|
| 1879 | + // Retrieve the checkout url. |
|
| 1880 | 1880 | $receipt_url = wpinv_get_success_page_uri(); |
| 1881 | 1881 | |
| 1882 | - // Maybe force ssl. |
|
| 1882 | + // Maybe force ssl. |
|
| 1883 | 1883 | if ( is_ssl() ) { |
| 1884 | 1884 | $receipt_url = str_replace( 'http:', 'https:', $receipt_url ); |
| 1885 | 1885 | } |
| 1886 | 1886 | |
| 1887 | - // Add the invoice key. |
|
| 1888 | - $receipt_url = add_query_arg( 'invoice_key', $this->get_key(), $receipt_url ); |
|
| 1887 | + // Add the invoice key. |
|
| 1888 | + $receipt_url = add_query_arg( 'invoice_key', $this->get_key(), $receipt_url ); |
|
| 1889 | 1889 | |
| 1890 | 1890 | return apply_filters( 'getpaid_get_invoice_receipt_url', $receipt_url, $this ); |
| 1891 | - } |
|
| 1891 | + } |
|
| 1892 | 1892 | |
| 1893 | - /** |
|
| 1894 | - * Retrieves the default status. |
|
| 1895 | - * |
|
| 1896 | - * @since 1.0.19 |
|
| 1897 | - * @return string |
|
| 1898 | - */ |
|
| 1899 | - public function get_default_status() { |
|
| 1900 | - |
|
| 1901 | - $type = $this->get_type(); |
|
| 1902 | - $status = "wpi-$type-pending"; |
|
| 1903 | - return str_replace( '-invoice', '', $status ); |
|
| 1904 | - |
|
| 1905 | - } |
|
| 1906 | - |
|
| 1907 | - /** |
|
| 1908 | - * Magic method for accessing invoice properties. |
|
| 1909 | - * |
|
| 1910 | - * @since 1.0.15 |
|
| 1911 | - * @access public |
|
| 1912 | - * |
|
| 1913 | - * @param string $key Discount data to retrieve |
|
| 1914 | - * @param string $context View or edit context. |
|
| 1915 | - * @return mixed Value of the given invoice property (if set). |
|
| 1916 | - */ |
|
| 1917 | - public function get( $key, $context = 'view' ) { |
|
| 1893 | + /** |
|
| 1894 | + * Retrieves the default status. |
|
| 1895 | + * |
|
| 1896 | + * @since 1.0.19 |
|
| 1897 | + * @return string |
|
| 1898 | + */ |
|
| 1899 | + public function get_default_status() { |
|
| 1900 | + |
|
| 1901 | + $type = $this->get_type(); |
|
| 1902 | + $status = "wpi-$type-pending"; |
|
| 1903 | + return str_replace( '-invoice', '', $status ); |
|
| 1904 | + |
|
| 1905 | + } |
|
| 1906 | + |
|
| 1907 | + /** |
|
| 1908 | + * Magic method for accessing invoice properties. |
|
| 1909 | + * |
|
| 1910 | + * @since 1.0.15 |
|
| 1911 | + * @access public |
|
| 1912 | + * |
|
| 1913 | + * @param string $key Discount data to retrieve |
|
| 1914 | + * @param string $context View or edit context. |
|
| 1915 | + * @return mixed Value of the given invoice property (if set). |
|
| 1916 | + */ |
|
| 1917 | + public function get( $key, $context = 'view' ) { |
|
| 1918 | 1918 | return $this->get_prop( $key, $context ); |
| 1919 | - } |
|
| 1919 | + } |
|
| 1920 | 1920 | |
| 1921 | 1921 | /* |
| 1922 | 1922 | |-------------------------------------------------------------------------- |
@@ -1929,130 +1929,130 @@ discard block |
||
| 1929 | 1929 | */ |
| 1930 | 1930 | |
| 1931 | 1931 | /** |
| 1932 | - * Magic method for setting invoice properties. |
|
| 1933 | - * |
|
| 1934 | - * @since 1.0.19 |
|
| 1935 | - * @access public |
|
| 1936 | - * |
|
| 1937 | - * @param string $key Discount data to retrieve |
|
| 1938 | - * @param mixed $value new value. |
|
| 1939 | - * @return mixed Value of the given invoice property (if set). |
|
| 1940 | - */ |
|
| 1941 | - public function set( $key, $value ) { |
|
| 1932 | + * Magic method for setting invoice properties. |
|
| 1933 | + * |
|
| 1934 | + * @since 1.0.19 |
|
| 1935 | + * @access public |
|
| 1936 | + * |
|
| 1937 | + * @param string $key Discount data to retrieve |
|
| 1938 | + * @param mixed $value new value. |
|
| 1939 | + * @return mixed Value of the given invoice property (if set). |
|
| 1940 | + */ |
|
| 1941 | + public function set( $key, $value ) { |
|
| 1942 | 1942 | |
| 1943 | 1943 | $setter = "set_$key"; |
| 1944 | 1944 | if ( is_callable( array( $this, $setter ) ) ) { |
| 1945 | 1945 | $this->{$setter}( $value ); |
| 1946 | 1946 | } |
| 1947 | 1947 | |
| 1948 | - } |
|
| 1948 | + } |
|
| 1949 | 1949 | |
| 1950 | - /** |
|
| 1951 | - * Sets item status. |
|
| 1952 | - * |
|
| 1953 | - * @since 1.0.19 |
|
| 1954 | - * @param string $new_status New status. |
|
| 1955 | - * @param string $note Optional note to add. |
|
| 1956 | - * @param bool $manual_update Is this a manual status change?. |
|
| 1957 | - * @return array details of change. |
|
| 1958 | - */ |
|
| 1959 | - public function set_status( $new_status, $note = '', $manual_update = false ) { |
|
| 1960 | - $old_status = $this->get_status(); |
|
| 1950 | + /** |
|
| 1951 | + * Sets item status. |
|
| 1952 | + * |
|
| 1953 | + * @since 1.0.19 |
|
| 1954 | + * @param string $new_status New status. |
|
| 1955 | + * @param string $note Optional note to add. |
|
| 1956 | + * @param bool $manual_update Is this a manual status change?. |
|
| 1957 | + * @return array details of change. |
|
| 1958 | + */ |
|
| 1959 | + public function set_status( $new_status, $note = '', $manual_update = false ) { |
|
| 1960 | + $old_status = $this->get_status(); |
|
| 1961 | 1961 | |
| 1962 | - $statuses = $this->get_all_statuses(); |
|
| 1962 | + $statuses = $this->get_all_statuses(); |
|
| 1963 | 1963 | |
| 1964 | - if ( isset( $statuses[ 'draft' ] ) ) { |
|
| 1965 | - unset( $statuses[ 'draft' ] ); |
|
| 1966 | - } |
|
| 1964 | + if ( isset( $statuses[ 'draft' ] ) ) { |
|
| 1965 | + unset( $statuses[ 'draft' ] ); |
|
| 1966 | + } |
|
| 1967 | 1967 | |
| 1968 | - $this->set_prop( 'status', $new_status ); |
|
| 1968 | + $this->set_prop( 'status', $new_status ); |
|
| 1969 | 1969 | |
| 1970 | - // If setting the status, ensure it's set to a valid status. |
|
| 1971 | - if ( true === $this->object_read ) { |
|
| 1970 | + // If setting the status, ensure it's set to a valid status. |
|
| 1971 | + if ( true === $this->object_read ) { |
|
| 1972 | 1972 | |
| 1973 | - // Only allow valid new status. |
|
| 1974 | - if ( ! array_key_exists( $new_status, $statuses ) ) { |
|
| 1975 | - $new_status = $this->get_default_status(); |
|
| 1976 | - } |
|
| 1973 | + // Only allow valid new status. |
|
| 1974 | + if ( ! array_key_exists( $new_status, $statuses ) ) { |
|
| 1975 | + $new_status = $this->get_default_status(); |
|
| 1976 | + } |
|
| 1977 | 1977 | |
| 1978 | - // If the old status is set but unknown (e.g. draft) assume its pending for action usage. |
|
| 1979 | - if ( $old_status && ! array_key_exists( $new_status, $statuses ) ) { |
|
| 1980 | - $old_status = $this->get_default_status(); |
|
| 1981 | - } |
|
| 1978 | + // If the old status is set but unknown (e.g. draft) assume its pending for action usage. |
|
| 1979 | + if ( $old_status && ! array_key_exists( $new_status, $statuses ) ) { |
|
| 1980 | + $old_status = $this->get_default_status(); |
|
| 1981 | + } |
|
| 1982 | 1982 | |
| 1983 | - // Paid - Renewal (i.e when duplicating a parent invoice ) |
|
| 1984 | - if ( $new_status == 'wpi-pending' && $old_status == 'publish' && ! $this->get_id() ) { |
|
| 1985 | - $old_status = 'wpi-pending'; |
|
| 1986 | - } |
|
| 1983 | + // Paid - Renewal (i.e when duplicating a parent invoice ) |
|
| 1984 | + if ( $new_status == 'wpi-pending' && $old_status == 'publish' && ! $this->get_id() ) { |
|
| 1985 | + $old_status = 'wpi-pending'; |
|
| 1986 | + } |
|
| 1987 | 1987 | |
| 1988 | - if ( $old_status !== $new_status ) { |
|
| 1989 | - $this->status_transition = array( |
|
| 1990 | - 'from' => ! empty( $this->status_transition['from'] ) ? $this->status_transition['from'] : $old_status, |
|
| 1991 | - 'to' => $new_status, |
|
| 1992 | - 'note' => $note, |
|
| 1993 | - 'manual' => (bool) $manual_update, |
|
| 1994 | - ); |
|
| 1988 | + if ( $old_status !== $new_status ) { |
|
| 1989 | + $this->status_transition = array( |
|
| 1990 | + 'from' => ! empty( $this->status_transition['from'] ) ? $this->status_transition['from'] : $old_status, |
|
| 1991 | + 'to' => $new_status, |
|
| 1992 | + 'note' => $note, |
|
| 1993 | + 'manual' => (bool) $manual_update, |
|
| 1994 | + ); |
|
| 1995 | 1995 | |
| 1996 | - if ( $manual_update ) { |
|
| 1997 | - do_action( 'getpaid_' . $this->object_type .'_edit_status', $this->get_id(), $new_status ); |
|
| 1998 | - } |
|
| 1996 | + if ( $manual_update ) { |
|
| 1997 | + do_action( 'getpaid_' . $this->object_type .'_edit_status', $this->get_id(), $new_status ); |
|
| 1998 | + } |
|
| 1999 | 1999 | |
| 2000 | - $this->maybe_set_date_paid(); |
|
| 2000 | + $this->maybe_set_date_paid(); |
|
| 2001 | 2001 | |
| 2002 | - } |
|
| 2002 | + } |
|
| 2003 | 2003 | |
| 2004 | - } |
|
| 2004 | + } |
|
| 2005 | 2005 | |
| 2006 | - return array( |
|
| 2007 | - 'from' => $old_status, |
|
| 2008 | - 'to' => $new_status, |
|
| 2009 | - ); |
|
| 2010 | - } |
|
| 2006 | + return array( |
|
| 2007 | + 'from' => $old_status, |
|
| 2008 | + 'to' => $new_status, |
|
| 2009 | + ); |
|
| 2010 | + } |
|
| 2011 | 2011 | |
| 2012 | - /** |
|
| 2013 | - * Maybe set date paid. |
|
| 2014 | - * |
|
| 2015 | - * Sets the date paid variable when transitioning to the payment complete |
|
| 2016 | - * order status. |
|
| 2017 | - * |
|
| 2018 | - * @since 1.0.19 |
|
| 2019 | - */ |
|
| 2020 | - public function maybe_set_date_paid() { |
|
| 2012 | + /** |
|
| 2013 | + * Maybe set date paid. |
|
| 2014 | + * |
|
| 2015 | + * Sets the date paid variable when transitioning to the payment complete |
|
| 2016 | + * order status. |
|
| 2017 | + * |
|
| 2018 | + * @since 1.0.19 |
|
| 2019 | + */ |
|
| 2020 | + public function maybe_set_date_paid() { |
|
| 2021 | 2021 | |
| 2022 | - if ( ! $this->get_date_completed( 'edit' ) && $this->is_paid() ) { |
|
| 2023 | - $this->set_date_completed( current_time( 'mysql' ) ); |
|
| 2024 | - } |
|
| 2025 | - } |
|
| 2022 | + if ( ! $this->get_date_completed( 'edit' ) && $this->is_paid() ) { |
|
| 2023 | + $this->set_date_completed( current_time( 'mysql' ) ); |
|
| 2024 | + } |
|
| 2025 | + } |
|
| 2026 | 2026 | |
| 2027 | 2027 | /** |
| 2028 | - * Set parent invoice ID. |
|
| 2029 | - * |
|
| 2030 | - * @since 1.0.19 |
|
| 2031 | - */ |
|
| 2032 | - public function set_parent_id( $value ) { |
|
| 2033 | - if ( $value && ( $value === $this->get_id() ) ) { |
|
| 2034 | - return; |
|
| 2035 | - } |
|
| 2036 | - $this->set_prop( 'parent_id', absint( $value ) ); |
|
| 2028 | + * Set parent invoice ID. |
|
| 2029 | + * |
|
| 2030 | + * @since 1.0.19 |
|
| 2031 | + */ |
|
| 2032 | + public function set_parent_id( $value ) { |
|
| 2033 | + if ( $value && ( $value === $this->get_id() ) ) { |
|
| 2034 | + return; |
|
| 2035 | + } |
|
| 2036 | + $this->set_prop( 'parent_id', absint( $value ) ); |
|
| 2037 | 2037 | } |
| 2038 | 2038 | |
| 2039 | 2039 | /** |
| 2040 | - * Set plugin version when the invoice was created. |
|
| 2041 | - * |
|
| 2042 | - * @since 1.0.19 |
|
| 2043 | - */ |
|
| 2044 | - public function set_version( $value ) { |
|
| 2045 | - $this->set_prop( 'version', $value ); |
|
| 2040 | + * Set plugin version when the invoice was created. |
|
| 2041 | + * |
|
| 2042 | + * @since 1.0.19 |
|
| 2043 | + */ |
|
| 2044 | + public function set_version( $value ) { |
|
| 2045 | + $this->set_prop( 'version', $value ); |
|
| 2046 | 2046 | } |
| 2047 | - |
|
| 2048 | - /** |
|
| 2049 | - * Set date when the invoice was created. |
|
| 2050 | - * |
|
| 2051 | - * @since 1.0.19 |
|
| 2052 | - * @param string $value Value to set. |
|
| 2047 | + |
|
| 2048 | + /** |
|
| 2049 | + * Set date when the invoice was created. |
|
| 2050 | + * |
|
| 2051 | + * @since 1.0.19 |
|
| 2052 | + * @param string $value Value to set. |
|
| 2053 | 2053 | * @return bool Whether or not the date was set. |
| 2054 | - */ |
|
| 2055 | - public function set_date_created( $value ) { |
|
| 2054 | + */ |
|
| 2055 | + public function set_date_created( $value ) { |
|
| 2056 | 2056 | $date = strtotime( $value ); |
| 2057 | 2057 | |
| 2058 | 2058 | if ( $date && $value !== '0000-00-00 00:00:00' ) { |
@@ -2060,19 +2060,19 @@ discard block |
||
| 2060 | 2060 | return true; |
| 2061 | 2061 | } |
| 2062 | 2062 | |
| 2063 | - $this->set_prop( 'date_created', '' ); |
|
| 2064 | - return false; |
|
| 2063 | + $this->set_prop( 'date_created', '' ); |
|
| 2064 | + return false; |
|
| 2065 | 2065 | |
| 2066 | 2066 | } |
| 2067 | 2067 | |
| 2068 | 2068 | /** |
| 2069 | - * Set date invoice due date. |
|
| 2070 | - * |
|
| 2071 | - * @since 1.0.19 |
|
| 2072 | - * @param string $value Value to set. |
|
| 2069 | + * Set date invoice due date. |
|
| 2070 | + * |
|
| 2071 | + * @since 1.0.19 |
|
| 2072 | + * @param string $value Value to set. |
|
| 2073 | 2073 | * @return bool Whether or not the date was set. |
| 2074 | - */ |
|
| 2075 | - public function set_due_date( $value ) { |
|
| 2074 | + */ |
|
| 2075 | + public function set_due_date( $value ) { |
|
| 2076 | 2076 | $date = strtotime( $value ); |
| 2077 | 2077 | |
| 2078 | 2078 | if ( $date && $value !== '0000-00-00 00:00:00' ) { |
@@ -2080,29 +2080,29 @@ discard block |
||
| 2080 | 2080 | return true; |
| 2081 | 2081 | } |
| 2082 | 2082 | |
| 2083 | - $this->set_prop( 'due_date', '' ); |
|
| 2083 | + $this->set_prop( 'due_date', '' ); |
|
| 2084 | 2084 | return false; |
| 2085 | 2085 | |
| 2086 | 2086 | } |
| 2087 | 2087 | |
| 2088 | 2088 | /** |
| 2089 | - * Alias of self::set_due_date(). |
|
| 2090 | - * |
|
| 2091 | - * @since 1.0.19 |
|
| 2092 | - * @param string $value New name. |
|
| 2093 | - */ |
|
| 2094 | - public function set_date_due( $value ) { |
|
| 2095 | - $this->set_due_date( $value ); |
|
| 2089 | + * Alias of self::set_due_date(). |
|
| 2090 | + * |
|
| 2091 | + * @since 1.0.19 |
|
| 2092 | + * @param string $value New name. |
|
| 2093 | + */ |
|
| 2094 | + public function set_date_due( $value ) { |
|
| 2095 | + $this->set_due_date( $value ); |
|
| 2096 | 2096 | } |
| 2097 | 2097 | |
| 2098 | 2098 | /** |
| 2099 | - * Set date invoice was completed. |
|
| 2100 | - * |
|
| 2101 | - * @since 1.0.19 |
|
| 2102 | - * @param string $value Value to set. |
|
| 2099 | + * Set date invoice was completed. |
|
| 2100 | + * |
|
| 2101 | + * @since 1.0.19 |
|
| 2102 | + * @param string $value Value to set. |
|
| 2103 | 2103 | * @return bool Whether or not the date was set. |
| 2104 | - */ |
|
| 2105 | - public function set_completed_date( $value ) { |
|
| 2104 | + */ |
|
| 2105 | + public function set_completed_date( $value ) { |
|
| 2106 | 2106 | $date = strtotime( $value ); |
| 2107 | 2107 | |
| 2108 | 2108 | if ( $date && $value !== '0000-00-00 00:00:00' ) { |
@@ -2110,29 +2110,29 @@ discard block |
||
| 2110 | 2110 | return true; |
| 2111 | 2111 | } |
| 2112 | 2112 | |
| 2113 | - $this->set_prop( 'completed_date', '' ); |
|
| 2113 | + $this->set_prop( 'completed_date', '' ); |
|
| 2114 | 2114 | return false; |
| 2115 | 2115 | |
| 2116 | 2116 | } |
| 2117 | 2117 | |
| 2118 | 2118 | /** |
| 2119 | - * Alias of self::set_completed_date(). |
|
| 2120 | - * |
|
| 2121 | - * @since 1.0.19 |
|
| 2122 | - * @param string $value New name. |
|
| 2123 | - */ |
|
| 2124 | - public function set_date_completed( $value ) { |
|
| 2125 | - $this->set_completed_date( $value ); |
|
| 2119 | + * Alias of self::set_completed_date(). |
|
| 2120 | + * |
|
| 2121 | + * @since 1.0.19 |
|
| 2122 | + * @param string $value New name. |
|
| 2123 | + */ |
|
| 2124 | + public function set_date_completed( $value ) { |
|
| 2125 | + $this->set_completed_date( $value ); |
|
| 2126 | 2126 | } |
| 2127 | 2127 | |
| 2128 | 2128 | /** |
| 2129 | - * Set date when the invoice was last modified. |
|
| 2130 | - * |
|
| 2131 | - * @since 1.0.19 |
|
| 2132 | - * @param string $value Value to set. |
|
| 2129 | + * Set date when the invoice was last modified. |
|
| 2130 | + * |
|
| 2131 | + * @since 1.0.19 |
|
| 2132 | + * @param string $value Value to set. |
|
| 2133 | 2133 | * @return bool Whether or not the date was set. |
| 2134 | - */ |
|
| 2135 | - public function set_date_modified( $value ) { |
|
| 2134 | + */ |
|
| 2135 | + public function set_date_modified( $value ) { |
|
| 2136 | 2136 | $date = strtotime( $value ); |
| 2137 | 2137 | |
| 2138 | 2138 | if ( $date && $value !== '0000-00-00 00:00:00' ) { |
@@ -2140,798 +2140,798 @@ discard block |
||
| 2140 | 2140 | return true; |
| 2141 | 2141 | } |
| 2142 | 2142 | |
| 2143 | - $this->set_prop( 'date_modified', '' ); |
|
| 2143 | + $this->set_prop( 'date_modified', '' ); |
|
| 2144 | 2144 | return false; |
| 2145 | 2145 | |
| 2146 | 2146 | } |
| 2147 | 2147 | |
| 2148 | 2148 | /** |
| 2149 | - * Set the invoice number. |
|
| 2150 | - * |
|
| 2151 | - * @since 1.0.19 |
|
| 2152 | - * @param string $value New number. |
|
| 2153 | - */ |
|
| 2154 | - public function set_number( $value ) { |
|
| 2149 | + * Set the invoice number. |
|
| 2150 | + * |
|
| 2151 | + * @since 1.0.19 |
|
| 2152 | + * @param string $value New number. |
|
| 2153 | + */ |
|
| 2154 | + public function set_number( $value ) { |
|
| 2155 | 2155 | $number = sanitize_text_field( $value ); |
| 2156 | - $this->set_prop( 'number', $number ); |
|
| 2156 | + $this->set_prop( 'number', $number ); |
|
| 2157 | 2157 | } |
| 2158 | 2158 | |
| 2159 | 2159 | /** |
| 2160 | - * Set the invoice type. |
|
| 2161 | - * |
|
| 2162 | - * @since 1.0.19 |
|
| 2163 | - * @param string $value Type. |
|
| 2164 | - */ |
|
| 2165 | - public function set_type( $value ) { |
|
| 2160 | + * Set the invoice type. |
|
| 2161 | + * |
|
| 2162 | + * @since 1.0.19 |
|
| 2163 | + * @param string $value Type. |
|
| 2164 | + */ |
|
| 2165 | + public function set_type( $value ) { |
|
| 2166 | 2166 | $type = sanitize_text_field( str_replace( 'wpi_', '', $value ) ); |
| 2167 | - $this->set_prop( 'type', $type ); |
|
| 2168 | - } |
|
| 2167 | + $this->set_prop( 'type', $type ); |
|
| 2168 | + } |
|
| 2169 | 2169 | |
| 2170 | 2170 | /** |
| 2171 | - * Set the invoice post type. |
|
| 2172 | - * |
|
| 2173 | - * @since 1.0.19 |
|
| 2174 | - * @param string $value Post type. |
|
| 2175 | - */ |
|
| 2176 | - public function set_post_type( $value ) { |
|
| 2171 | + * Set the invoice post type. |
|
| 2172 | + * |
|
| 2173 | + * @since 1.0.19 |
|
| 2174 | + * @param string $value Post type. |
|
| 2175 | + */ |
|
| 2176 | + public function set_post_type( $value ) { |
|
| 2177 | 2177 | if ( getpaid_is_invoice_post_type( $value ) ) { |
| 2178 | - $this->set_type( $value ); |
|
| 2178 | + $this->set_type( $value ); |
|
| 2179 | 2179 | $this->set_prop( 'post_type', $value ); |
| 2180 | 2180 | } |
| 2181 | 2181 | } |
| 2182 | 2182 | |
| 2183 | 2183 | /** |
| 2184 | - * Set the invoice key. |
|
| 2185 | - * |
|
| 2186 | - * @since 1.0.19 |
|
| 2187 | - * @param string $value New key. |
|
| 2188 | - */ |
|
| 2189 | - public function set_key( $value ) { |
|
| 2184 | + * Set the invoice key. |
|
| 2185 | + * |
|
| 2186 | + * @since 1.0.19 |
|
| 2187 | + * @param string $value New key. |
|
| 2188 | + */ |
|
| 2189 | + public function set_key( $value ) { |
|
| 2190 | 2190 | $key = sanitize_text_field( $value ); |
| 2191 | - $this->set_prop( 'key', $key ); |
|
| 2191 | + $this->set_prop( 'key', $key ); |
|
| 2192 | 2192 | } |
| 2193 | 2193 | |
| 2194 | 2194 | /** |
| 2195 | - * Set the invoice mode. |
|
| 2196 | - * |
|
| 2197 | - * @since 1.0.19 |
|
| 2198 | - * @param string $value mode. |
|
| 2199 | - */ |
|
| 2200 | - public function set_mode( $value ) { |
|
| 2195 | + * Set the invoice mode. |
|
| 2196 | + * |
|
| 2197 | + * @since 1.0.19 |
|
| 2198 | + * @param string $value mode. |
|
| 2199 | + */ |
|
| 2200 | + public function set_mode( $value ) { |
|
| 2201 | 2201 | if ( in_array( $value, array( 'live', 'test' ) ) ) { |
| 2202 | 2202 | $this->set_prop( 'mode', $value ); |
| 2203 | 2203 | } |
| 2204 | 2204 | } |
| 2205 | 2205 | |
| 2206 | 2206 | /** |
| 2207 | - * Set the invoice path. |
|
| 2208 | - * |
|
| 2209 | - * @since 1.0.19 |
|
| 2210 | - * @param string $value path. |
|
| 2211 | - */ |
|
| 2212 | - public function set_path( $value ) { |
|
| 2207 | + * Set the invoice path. |
|
| 2208 | + * |
|
| 2209 | + * @since 1.0.19 |
|
| 2210 | + * @param string $value path. |
|
| 2211 | + */ |
|
| 2212 | + public function set_path( $value ) { |
|
| 2213 | 2213 | $this->set_prop( 'path', $value ); |
| 2214 | 2214 | } |
| 2215 | 2215 | |
| 2216 | 2216 | /** |
| 2217 | - * Set the invoice name. |
|
| 2218 | - * |
|
| 2219 | - * @since 1.0.19 |
|
| 2220 | - * @param string $value New name. |
|
| 2221 | - */ |
|
| 2222 | - public function set_name( $value ) { |
|
| 2217 | + * Set the invoice name. |
|
| 2218 | + * |
|
| 2219 | + * @since 1.0.19 |
|
| 2220 | + * @param string $value New name. |
|
| 2221 | + */ |
|
| 2222 | + public function set_name( $value ) { |
|
| 2223 | 2223 | $name = sanitize_text_field( $value ); |
| 2224 | - $this->set_prop( 'name', $name ); |
|
| 2224 | + $this->set_prop( 'name', $name ); |
|
| 2225 | 2225 | } |
| 2226 | 2226 | |
| 2227 | 2227 | /** |
| 2228 | - * Alias of self::set_name(). |
|
| 2229 | - * |
|
| 2230 | - * @since 1.0.19 |
|
| 2231 | - * @param string $value New name. |
|
| 2232 | - */ |
|
| 2233 | - public function set_title( $value ) { |
|
| 2234 | - $this->set_name( $value ); |
|
| 2228 | + * Alias of self::set_name(). |
|
| 2229 | + * |
|
| 2230 | + * @since 1.0.19 |
|
| 2231 | + * @param string $value New name. |
|
| 2232 | + */ |
|
| 2233 | + public function set_title( $value ) { |
|
| 2234 | + $this->set_name( $value ); |
|
| 2235 | 2235 | } |
| 2236 | 2236 | |
| 2237 | 2237 | /** |
| 2238 | - * Set the invoice description. |
|
| 2239 | - * |
|
| 2240 | - * @since 1.0.19 |
|
| 2241 | - * @param string $value New description. |
|
| 2242 | - */ |
|
| 2243 | - public function set_description( $value ) { |
|
| 2238 | + * Set the invoice description. |
|
| 2239 | + * |
|
| 2240 | + * @since 1.0.19 |
|
| 2241 | + * @param string $value New description. |
|
| 2242 | + */ |
|
| 2243 | + public function set_description( $value ) { |
|
| 2244 | 2244 | $description = wp_kses_post( $value ); |
| 2245 | - $this->set_prop( 'description', $description ); |
|
| 2245 | + $this->set_prop( 'description', $description ); |
|
| 2246 | + } |
|
| 2247 | + |
|
| 2248 | + /** |
|
| 2249 | + * Alias of self::set_description(). |
|
| 2250 | + * |
|
| 2251 | + * @since 1.0.19 |
|
| 2252 | + * @param string $value New description. |
|
| 2253 | + */ |
|
| 2254 | + public function set_excerpt( $value ) { |
|
| 2255 | + $this->set_description( $value ); |
|
| 2256 | + } |
|
| 2257 | + |
|
| 2258 | + /** |
|
| 2259 | + * Alias of self::set_description(). |
|
| 2260 | + * |
|
| 2261 | + * @since 1.0.19 |
|
| 2262 | + * @param string $value New description. |
|
| 2263 | + */ |
|
| 2264 | + public function set_summary( $value ) { |
|
| 2265 | + $this->set_description( $value ); |
|
| 2266 | + } |
|
| 2267 | + |
|
| 2268 | + /** |
|
| 2269 | + * Set the receiver of the invoice. |
|
| 2270 | + * |
|
| 2271 | + * @since 1.0.19 |
|
| 2272 | + * @param int $value New author. |
|
| 2273 | + */ |
|
| 2274 | + public function set_author( $value ) { |
|
| 2275 | + $user = get_user_by( 'id', (int) $value ); |
|
| 2276 | + |
|
| 2277 | + if ( $user && $user->ID ) { |
|
| 2278 | + $this->set_prop( 'author', $user->ID ); |
|
| 2279 | + $this->set_prop( 'email', $user->user_email ); |
|
| 2280 | + } |
|
| 2281 | + |
|
| 2282 | + } |
|
| 2283 | + |
|
| 2284 | + /** |
|
| 2285 | + * Alias of self::set_author(). |
|
| 2286 | + * |
|
| 2287 | + * @since 1.0.19 |
|
| 2288 | + * @param int $value New user id. |
|
| 2289 | + */ |
|
| 2290 | + public function set_user_id( $value ) { |
|
| 2291 | + $this->set_author( $value ); |
|
| 2292 | + } |
|
| 2293 | + |
|
| 2294 | + /** |
|
| 2295 | + * Alias of self::set_author(). |
|
| 2296 | + * |
|
| 2297 | + * @since 1.0.19 |
|
| 2298 | + * @param int $value New user id. |
|
| 2299 | + */ |
|
| 2300 | + public function set_customer_id( $value ) { |
|
| 2301 | + $this->set_author( $value ); |
|
| 2302 | + } |
|
| 2303 | + |
|
| 2304 | + /** |
|
| 2305 | + * Set the customer's ip. |
|
| 2306 | + * |
|
| 2307 | + * @since 1.0.19 |
|
| 2308 | + * @param string $value ip address. |
|
| 2309 | + */ |
|
| 2310 | + public function set_ip( $value ) { |
|
| 2311 | + $this->set_prop( 'ip', $value ); |
|
| 2312 | + } |
|
| 2313 | + |
|
| 2314 | + /** |
|
| 2315 | + * Alias of self::set_ip(). |
|
| 2316 | + * |
|
| 2317 | + * @since 1.0.19 |
|
| 2318 | + * @param string $value ip address. |
|
| 2319 | + */ |
|
| 2320 | + public function set_user_ip( $value ) { |
|
| 2321 | + $this->set_ip( $value ); |
|
| 2322 | + } |
|
| 2323 | + |
|
| 2324 | + /** |
|
| 2325 | + * Set the customer's first name. |
|
| 2326 | + * |
|
| 2327 | + * @since 1.0.19 |
|
| 2328 | + * @param string $value first name. |
|
| 2329 | + */ |
|
| 2330 | + public function set_first_name( $value ) { |
|
| 2331 | + $this->set_prop( 'first_name', $value ); |
|
| 2332 | + } |
|
| 2333 | + |
|
| 2334 | + /** |
|
| 2335 | + * Alias of self::set_first_name(). |
|
| 2336 | + * |
|
| 2337 | + * @since 1.0.19 |
|
| 2338 | + * @param string $value first name. |
|
| 2339 | + */ |
|
| 2340 | + public function set_user_first_name( $value ) { |
|
| 2341 | + $this->set_first_name( $value ); |
|
| 2342 | + } |
|
| 2343 | + |
|
| 2344 | + /** |
|
| 2345 | + * Alias of self::set_first_name(). |
|
| 2346 | + * |
|
| 2347 | + * @since 1.0.19 |
|
| 2348 | + * @param string $value first name. |
|
| 2349 | + */ |
|
| 2350 | + public function set_customer_first_name( $value ) { |
|
| 2351 | + $this->set_first_name( $value ); |
|
| 2352 | + } |
|
| 2353 | + |
|
| 2354 | + /** |
|
| 2355 | + * Set the customer's last name. |
|
| 2356 | + * |
|
| 2357 | + * @since 1.0.19 |
|
| 2358 | + * @param string $value last name. |
|
| 2359 | + */ |
|
| 2360 | + public function set_last_name( $value ) { |
|
| 2361 | + $this->set_prop( 'last_name', $value ); |
|
| 2246 | 2362 | } |
| 2247 | 2363 | |
| 2248 | 2364 | /** |
| 2249 | - * Alias of self::set_description(). |
|
| 2250 | - * |
|
| 2251 | - * @since 1.0.19 |
|
| 2252 | - * @param string $value New description. |
|
| 2253 | - */ |
|
| 2254 | - public function set_excerpt( $value ) { |
|
| 2255 | - $this->set_description( $value ); |
|
| 2365 | + * Alias of self::set_last_name(). |
|
| 2366 | + * |
|
| 2367 | + * @since 1.0.19 |
|
| 2368 | + * @param string $value last name. |
|
| 2369 | + */ |
|
| 2370 | + public function set_user_last_name( $value ) { |
|
| 2371 | + $this->set_last_name( $value ); |
|
| 2372 | + } |
|
| 2373 | + |
|
| 2374 | + /** |
|
| 2375 | + * Alias of self::set_last_name(). |
|
| 2376 | + * |
|
| 2377 | + * @since 1.0.19 |
|
| 2378 | + * @param string $value last name. |
|
| 2379 | + */ |
|
| 2380 | + public function set_customer_last_name( $value ) { |
|
| 2381 | + $this->set_last_name( $value ); |
|
| 2382 | + } |
|
| 2383 | + |
|
| 2384 | + /** |
|
| 2385 | + * Set the customer's phone number. |
|
| 2386 | + * |
|
| 2387 | + * @since 1.0.19 |
|
| 2388 | + * @param string $value phone. |
|
| 2389 | + */ |
|
| 2390 | + public function set_phone( $value ) { |
|
| 2391 | + $this->set_prop( 'phone', $value ); |
|
| 2256 | 2392 | } |
| 2257 | 2393 | |
| 2258 | 2394 | /** |
| 2259 | - * Alias of self::set_description(). |
|
| 2260 | - * |
|
| 2261 | - * @since 1.0.19 |
|
| 2262 | - * @param string $value New description. |
|
| 2263 | - */ |
|
| 2264 | - public function set_summary( $value ) { |
|
| 2265 | - $this->set_description( $value ); |
|
| 2395 | + * Alias of self::set_phone(). |
|
| 2396 | + * |
|
| 2397 | + * @since 1.0.19 |
|
| 2398 | + * @param string $value phone. |
|
| 2399 | + */ |
|
| 2400 | + public function set_user_phone( $value ) { |
|
| 2401 | + $this->set_phone( $value ); |
|
| 2266 | 2402 | } |
| 2267 | 2403 | |
| 2268 | 2404 | /** |
| 2269 | - * Set the receiver of the invoice. |
|
| 2270 | - * |
|
| 2271 | - * @since 1.0.19 |
|
| 2272 | - * @param int $value New author. |
|
| 2273 | - */ |
|
| 2274 | - public function set_author( $value ) { |
|
| 2275 | - $user = get_user_by( 'id', (int) $value ); |
|
| 2405 | + * Alias of self::set_phone(). |
|
| 2406 | + * |
|
| 2407 | + * @since 1.0.19 |
|
| 2408 | + * @param string $value phone. |
|
| 2409 | + */ |
|
| 2410 | + public function set_customer_phone( $value ) { |
|
| 2411 | + $this->set_phone( $value ); |
|
| 2412 | + } |
|
| 2276 | 2413 | |
| 2277 | - if ( $user && $user->ID ) { |
|
| 2278 | - $this->set_prop( 'author', $user->ID ); |
|
| 2279 | - $this->set_prop( 'email', $user->user_email ); |
|
| 2280 | - } |
|
| 2414 | + /** |
|
| 2415 | + * Alias of self::set_phone(). |
|
| 2416 | + * |
|
| 2417 | + * @since 1.0.19 |
|
| 2418 | + * @param string $value phone. |
|
| 2419 | + */ |
|
| 2420 | + public function set_phone_number( $value ) { |
|
| 2421 | + $this->set_phone( $value ); |
|
| 2422 | + } |
|
| 2281 | 2423 | |
| 2424 | + /** |
|
| 2425 | + * Set the customer's email address. |
|
| 2426 | + * |
|
| 2427 | + * @since 1.0.19 |
|
| 2428 | + * @param string $value email address. |
|
| 2429 | + */ |
|
| 2430 | + public function set_email( $value ) { |
|
| 2431 | + $this->set_prop( 'email', $value ); |
|
| 2282 | 2432 | } |
| 2283 | 2433 | |
| 2284 | 2434 | /** |
| 2285 | - * Alias of self::set_author(). |
|
| 2286 | - * |
|
| 2287 | - * @since 1.0.19 |
|
| 2288 | - * @param int $value New user id. |
|
| 2289 | - */ |
|
| 2290 | - public function set_user_id( $value ) { |
|
| 2291 | - $this->set_author( $value ); |
|
| 2435 | + * Alias of self::set_email(). |
|
| 2436 | + * |
|
| 2437 | + * @since 1.0.19 |
|
| 2438 | + * @param string $value email address. |
|
| 2439 | + */ |
|
| 2440 | + public function set_user_email( $value ) { |
|
| 2441 | + $this->set_email( $value ); |
|
| 2292 | 2442 | } |
| 2293 | 2443 | |
| 2294 | 2444 | /** |
| 2295 | - * Alias of self::set_author(). |
|
| 2296 | - * |
|
| 2297 | - * @since 1.0.19 |
|
| 2298 | - * @param int $value New user id. |
|
| 2299 | - */ |
|
| 2300 | - public function set_customer_id( $value ) { |
|
| 2301 | - $this->set_author( $value ); |
|
| 2445 | + * Alias of self::set_email(). |
|
| 2446 | + * |
|
| 2447 | + * @since 1.0.19 |
|
| 2448 | + * @param string $value email address. |
|
| 2449 | + */ |
|
| 2450 | + public function set_email_address( $value ) { |
|
| 2451 | + $this->set_email( $value ); |
|
| 2302 | 2452 | } |
| 2303 | 2453 | |
| 2304 | 2454 | /** |
| 2305 | - * Set the customer's ip. |
|
| 2306 | - * |
|
| 2307 | - * @since 1.0.19 |
|
| 2308 | - * @param string $value ip address. |
|
| 2309 | - */ |
|
| 2310 | - public function set_ip( $value ) { |
|
| 2311 | - $this->set_prop( 'ip', $value ); |
|
| 2455 | + * Alias of self::set_email(). |
|
| 2456 | + * |
|
| 2457 | + * @since 1.0.19 |
|
| 2458 | + * @param string $value email address. |
|
| 2459 | + */ |
|
| 2460 | + public function set_customer_email( $value ) { |
|
| 2461 | + $this->set_email( $value ); |
|
| 2312 | 2462 | } |
| 2313 | 2463 | |
| 2314 | 2464 | /** |
| 2315 | - * Alias of self::set_ip(). |
|
| 2316 | - * |
|
| 2317 | - * @since 1.0.19 |
|
| 2318 | - * @param string $value ip address. |
|
| 2319 | - */ |
|
| 2320 | - public function set_user_ip( $value ) { |
|
| 2321 | - $this->set_ip( $value ); |
|
| 2465 | + * Set the customer's country. |
|
| 2466 | + * |
|
| 2467 | + * @since 1.0.19 |
|
| 2468 | + * @param string $value country. |
|
| 2469 | + */ |
|
| 2470 | + public function set_country( $value ) { |
|
| 2471 | + $this->set_prop( 'country', $value ); |
|
| 2322 | 2472 | } |
| 2323 | 2473 | |
| 2324 | 2474 | /** |
| 2325 | - * Set the customer's first name. |
|
| 2326 | - * |
|
| 2327 | - * @since 1.0.19 |
|
| 2328 | - * @param string $value first name. |
|
| 2329 | - */ |
|
| 2330 | - public function set_first_name( $value ) { |
|
| 2331 | - $this->set_prop( 'first_name', $value ); |
|
| 2475 | + * Alias of self::set_country(). |
|
| 2476 | + * |
|
| 2477 | + * @since 1.0.19 |
|
| 2478 | + * @param string $value country. |
|
| 2479 | + */ |
|
| 2480 | + public function set_user_country( $value ) { |
|
| 2481 | + $this->set_country( $value ); |
|
| 2332 | 2482 | } |
| 2333 | 2483 | |
| 2334 | 2484 | /** |
| 2335 | - * Alias of self::set_first_name(). |
|
| 2336 | - * |
|
| 2337 | - * @since 1.0.19 |
|
| 2338 | - * @param string $value first name. |
|
| 2339 | - */ |
|
| 2340 | - public function set_user_first_name( $value ) { |
|
| 2341 | - $this->set_first_name( $value ); |
|
| 2485 | + * Alias of self::set_country(). |
|
| 2486 | + * |
|
| 2487 | + * @since 1.0.19 |
|
| 2488 | + * @param string $value country. |
|
| 2489 | + */ |
|
| 2490 | + public function set_customer_country( $value ) { |
|
| 2491 | + $this->set_country( $value ); |
|
| 2342 | 2492 | } |
| 2343 | 2493 | |
| 2344 | 2494 | /** |
| 2345 | - * Alias of self::set_first_name(). |
|
| 2346 | - * |
|
| 2347 | - * @since 1.0.19 |
|
| 2348 | - * @param string $value first name. |
|
| 2349 | - */ |
|
| 2350 | - public function set_customer_first_name( $value ) { |
|
| 2351 | - $this->set_first_name( $value ); |
|
| 2495 | + * Set the customer's state. |
|
| 2496 | + * |
|
| 2497 | + * @since 1.0.19 |
|
| 2498 | + * @param string $value state. |
|
| 2499 | + */ |
|
| 2500 | + public function set_state( $value ) { |
|
| 2501 | + $this->set_prop( 'state', $value ); |
|
| 2352 | 2502 | } |
| 2353 | 2503 | |
| 2354 | 2504 | /** |
| 2355 | - * Set the customer's last name. |
|
| 2356 | - * |
|
| 2357 | - * @since 1.0.19 |
|
| 2358 | - * @param string $value last name. |
|
| 2359 | - */ |
|
| 2360 | - public function set_last_name( $value ) { |
|
| 2361 | - $this->set_prop( 'last_name', $value ); |
|
| 2505 | + * Alias of self::set_state(). |
|
| 2506 | + * |
|
| 2507 | + * @since 1.0.19 |
|
| 2508 | + * @param string $value state. |
|
| 2509 | + */ |
|
| 2510 | + public function set_user_state( $value ) { |
|
| 2511 | + $this->set_state( $value ); |
|
| 2362 | 2512 | } |
| 2363 | 2513 | |
| 2364 | 2514 | /** |
| 2365 | - * Alias of self::set_last_name(). |
|
| 2366 | - * |
|
| 2367 | - * @since 1.0.19 |
|
| 2368 | - * @param string $value last name. |
|
| 2369 | - */ |
|
| 2370 | - public function set_user_last_name( $value ) { |
|
| 2371 | - $this->set_last_name( $value ); |
|
| 2515 | + * Alias of self::set_state(). |
|
| 2516 | + * |
|
| 2517 | + * @since 1.0.19 |
|
| 2518 | + * @param string $value state. |
|
| 2519 | + */ |
|
| 2520 | + public function set_customer_state( $value ) { |
|
| 2521 | + $this->set_state( $value ); |
|
| 2372 | 2522 | } |
| 2373 | 2523 | |
| 2374 | 2524 | /** |
| 2375 | - * Alias of self::set_last_name(). |
|
| 2376 | - * |
|
| 2377 | - * @since 1.0.19 |
|
| 2378 | - * @param string $value last name. |
|
| 2379 | - */ |
|
| 2380 | - public function set_customer_last_name( $value ) { |
|
| 2381 | - $this->set_last_name( $value ); |
|
| 2525 | + * Set the customer's city. |
|
| 2526 | + * |
|
| 2527 | + * @since 1.0.19 |
|
| 2528 | + * @param string $value city. |
|
| 2529 | + */ |
|
| 2530 | + public function set_city( $value ) { |
|
| 2531 | + $this->set_prop( 'city', $value ); |
|
| 2382 | 2532 | } |
| 2383 | 2533 | |
| 2384 | 2534 | /** |
| 2385 | - * Set the customer's phone number. |
|
| 2386 | - * |
|
| 2387 | - * @since 1.0.19 |
|
| 2388 | - * @param string $value phone. |
|
| 2389 | - */ |
|
| 2390 | - public function set_phone( $value ) { |
|
| 2391 | - $this->set_prop( 'phone', $value ); |
|
| 2535 | + * Alias of self::set_city(). |
|
| 2536 | + * |
|
| 2537 | + * @since 1.0.19 |
|
| 2538 | + * @param string $value city. |
|
| 2539 | + */ |
|
| 2540 | + public function set_user_city( $value ) { |
|
| 2541 | + $this->set_city( $value ); |
|
| 2392 | 2542 | } |
| 2393 | 2543 | |
| 2394 | 2544 | /** |
| 2395 | - * Alias of self::set_phone(). |
|
| 2396 | - * |
|
| 2397 | - * @since 1.0.19 |
|
| 2398 | - * @param string $value phone. |
|
| 2399 | - */ |
|
| 2400 | - public function set_user_phone( $value ) { |
|
| 2401 | - $this->set_phone( $value ); |
|
| 2545 | + * Alias of self::set_city(). |
|
| 2546 | + * |
|
| 2547 | + * @since 1.0.19 |
|
| 2548 | + * @param string $value city. |
|
| 2549 | + */ |
|
| 2550 | + public function set_customer_city( $value ) { |
|
| 2551 | + $this->set_city( $value ); |
|
| 2402 | 2552 | } |
| 2403 | 2553 | |
| 2404 | 2554 | /** |
| 2405 | - * Alias of self::set_phone(). |
|
| 2406 | - * |
|
| 2407 | - * @since 1.0.19 |
|
| 2408 | - * @param string $value phone. |
|
| 2409 | - */ |
|
| 2410 | - public function set_customer_phone( $value ) { |
|
| 2411 | - $this->set_phone( $value ); |
|
| 2555 | + * Set the customer's zip code. |
|
| 2556 | + * |
|
| 2557 | + * @since 1.0.19 |
|
| 2558 | + * @param string $value zip. |
|
| 2559 | + */ |
|
| 2560 | + public function set_zip( $value ) { |
|
| 2561 | + $this->set_prop( 'zip', $value ); |
|
| 2412 | 2562 | } |
| 2413 | 2563 | |
| 2414 | 2564 | /** |
| 2415 | - * Alias of self::set_phone(). |
|
| 2416 | - * |
|
| 2417 | - * @since 1.0.19 |
|
| 2418 | - * @param string $value phone. |
|
| 2419 | - */ |
|
| 2420 | - public function set_phone_number( $value ) { |
|
| 2421 | - $this->set_phone( $value ); |
|
| 2565 | + * Alias of self::set_zip(). |
|
| 2566 | + * |
|
| 2567 | + * @since 1.0.19 |
|
| 2568 | + * @param string $value zip. |
|
| 2569 | + */ |
|
| 2570 | + public function set_user_zip( $value ) { |
|
| 2571 | + $this->set_zip( $value ); |
|
| 2422 | 2572 | } |
| 2423 | 2573 | |
| 2424 | 2574 | /** |
| 2425 | - * Set the customer's email address. |
|
| 2426 | - * |
|
| 2427 | - * @since 1.0.19 |
|
| 2428 | - * @param string $value email address. |
|
| 2429 | - */ |
|
| 2430 | - public function set_email( $value ) { |
|
| 2431 | - $this->set_prop( 'email', $value ); |
|
| 2575 | + * Alias of self::set_zip(). |
|
| 2576 | + * |
|
| 2577 | + * @since 1.0.19 |
|
| 2578 | + * @param string $value zip. |
|
| 2579 | + */ |
|
| 2580 | + public function set_customer_zip( $value ) { |
|
| 2581 | + $this->set_zip( $value ); |
|
| 2432 | 2582 | } |
| 2433 | 2583 | |
| 2434 | 2584 | /** |
| 2435 | - * Alias of self::set_email(). |
|
| 2436 | - * |
|
| 2437 | - * @since 1.0.19 |
|
| 2438 | - * @param string $value email address. |
|
| 2439 | - */ |
|
| 2440 | - public function set_user_email( $value ) { |
|
| 2441 | - $this->set_email( $value ); |
|
| 2585 | + * Set the customer's company. |
|
| 2586 | + * |
|
| 2587 | + * @since 1.0.19 |
|
| 2588 | + * @param string $value company. |
|
| 2589 | + */ |
|
| 2590 | + public function set_company( $value ) { |
|
| 2591 | + $this->set_prop( 'company', $value ); |
|
| 2442 | 2592 | } |
| 2443 | 2593 | |
| 2444 | 2594 | /** |
| 2445 | - * Alias of self::set_email(). |
|
| 2446 | - * |
|
| 2447 | - * @since 1.0.19 |
|
| 2448 | - * @param string $value email address. |
|
| 2449 | - */ |
|
| 2450 | - public function set_email_address( $value ) { |
|
| 2451 | - $this->set_email( $value ); |
|
| 2595 | + * Alias of self::set_company(). |
|
| 2596 | + * |
|
| 2597 | + * @since 1.0.19 |
|
| 2598 | + * @param string $value company. |
|
| 2599 | + */ |
|
| 2600 | + public function set_user_company( $value ) { |
|
| 2601 | + $this->set_company( $value ); |
|
| 2452 | 2602 | } |
| 2453 | 2603 | |
| 2454 | 2604 | /** |
| 2455 | - * Alias of self::set_email(). |
|
| 2456 | - * |
|
| 2457 | - * @since 1.0.19 |
|
| 2458 | - * @param string $value email address. |
|
| 2459 | - */ |
|
| 2460 | - public function set_customer_email( $value ) { |
|
| 2461 | - $this->set_email( $value ); |
|
| 2605 | + * Alias of self::set_company(). |
|
| 2606 | + * |
|
| 2607 | + * @since 1.0.19 |
|
| 2608 | + * @param string $value company. |
|
| 2609 | + */ |
|
| 2610 | + public function set_customer_company( $value ) { |
|
| 2611 | + $this->set_company( $value ); |
|
| 2462 | 2612 | } |
| 2463 | 2613 | |
| 2464 | 2614 | /** |
| 2465 | - * Set the customer's country. |
|
| 2466 | - * |
|
| 2467 | - * @since 1.0.19 |
|
| 2468 | - * @param string $value country. |
|
| 2469 | - */ |
|
| 2470 | - public function set_country( $value ) { |
|
| 2471 | - $this->set_prop( 'country', $value ); |
|
| 2615 | + * Set the customer's company id. |
|
| 2616 | + * |
|
| 2617 | + * @since 1.0.19 |
|
| 2618 | + * @param string $value company id. |
|
| 2619 | + */ |
|
| 2620 | + public function set_company_id( $value ) { |
|
| 2621 | + $this->set_prop( 'company_id', $value ); |
|
| 2472 | 2622 | } |
| 2473 | 2623 | |
| 2474 | 2624 | /** |
| 2475 | - * Alias of self::set_country(). |
|
| 2476 | - * |
|
| 2477 | - * @since 1.0.19 |
|
| 2478 | - * @param string $value country. |
|
| 2479 | - */ |
|
| 2480 | - public function set_user_country( $value ) { |
|
| 2481 | - $this->set_country( $value ); |
|
| 2625 | + * Set the customer's var number. |
|
| 2626 | + * |
|
| 2627 | + * @since 1.0.19 |
|
| 2628 | + * @param string $value var number. |
|
| 2629 | + */ |
|
| 2630 | + public function set_vat_number( $value ) { |
|
| 2631 | + $this->set_prop( 'vat_number', $value ); |
|
| 2482 | 2632 | } |
| 2483 | 2633 | |
| 2484 | 2634 | /** |
| 2485 | - * Alias of self::set_country(). |
|
| 2486 | - * |
|
| 2487 | - * @since 1.0.19 |
|
| 2488 | - * @param string $value country. |
|
| 2489 | - */ |
|
| 2490 | - public function set_customer_country( $value ) { |
|
| 2491 | - $this->set_country( $value ); |
|
| 2635 | + * Alias of self::set_vat_number(). |
|
| 2636 | + * |
|
| 2637 | + * @since 1.0.19 |
|
| 2638 | + * @param string $value var number. |
|
| 2639 | + */ |
|
| 2640 | + public function set_user_vat_number( $value ) { |
|
| 2641 | + $this->set_vat_number( $value ); |
|
| 2492 | 2642 | } |
| 2493 | 2643 | |
| 2494 | 2644 | /** |
| 2495 | - * Set the customer's state. |
|
| 2496 | - * |
|
| 2497 | - * @since 1.0.19 |
|
| 2498 | - * @param string $value state. |
|
| 2499 | - */ |
|
| 2500 | - public function set_state( $value ) { |
|
| 2501 | - $this->set_prop( 'state', $value ); |
|
| 2645 | + * Alias of self::set_vat_number(). |
|
| 2646 | + * |
|
| 2647 | + * @since 1.0.19 |
|
| 2648 | + * @param string $value var number. |
|
| 2649 | + */ |
|
| 2650 | + public function set_customer_vat_number( $value ) { |
|
| 2651 | + $this->set_vat_number( $value ); |
|
| 2502 | 2652 | } |
| 2503 | 2653 | |
| 2504 | 2654 | /** |
| 2505 | - * Alias of self::set_state(). |
|
| 2506 | - * |
|
| 2507 | - * @since 1.0.19 |
|
| 2508 | - * @param string $value state. |
|
| 2509 | - */ |
|
| 2510 | - public function set_user_state( $value ) { |
|
| 2511 | - $this->set_state( $value ); |
|
| 2655 | + * Set the customer's vat rate. |
|
| 2656 | + * |
|
| 2657 | + * @since 1.0.19 |
|
| 2658 | + * @param string $value var rate. |
|
| 2659 | + */ |
|
| 2660 | + public function set_vat_rate( $value ) { |
|
| 2661 | + $this->set_prop( 'vat_rate', $value ); |
|
| 2512 | 2662 | } |
| 2513 | 2663 | |
| 2514 | 2664 | /** |
| 2515 | - * Alias of self::set_state(). |
|
| 2516 | - * |
|
| 2517 | - * @since 1.0.19 |
|
| 2518 | - * @param string $value state. |
|
| 2519 | - */ |
|
| 2520 | - public function set_customer_state( $value ) { |
|
| 2521 | - $this->set_state( $value ); |
|
| 2665 | + * Alias of self::set_vat_rate(). |
|
| 2666 | + * |
|
| 2667 | + * @since 1.0.19 |
|
| 2668 | + * @param string $value var number. |
|
| 2669 | + */ |
|
| 2670 | + public function set_user_vat_rate( $value ) { |
|
| 2671 | + $this->set_vat_rate( $value ); |
|
| 2522 | 2672 | } |
| 2523 | 2673 | |
| 2524 | 2674 | /** |
| 2525 | - * Set the customer's city. |
|
| 2526 | - * |
|
| 2527 | - * @since 1.0.19 |
|
| 2528 | - * @param string $value city. |
|
| 2529 | - */ |
|
| 2530 | - public function set_city( $value ) { |
|
| 2531 | - $this->set_prop( 'city', $value ); |
|
| 2675 | + * Alias of self::set_vat_rate(). |
|
| 2676 | + * |
|
| 2677 | + * @since 1.0.19 |
|
| 2678 | + * @param string $value var number. |
|
| 2679 | + */ |
|
| 2680 | + public function set_customer_vat_rate( $value ) { |
|
| 2681 | + $this->set_vat_rate( $value ); |
|
| 2532 | 2682 | } |
| 2533 | 2683 | |
| 2534 | 2684 | /** |
| 2535 | - * Alias of self::set_city(). |
|
| 2536 | - * |
|
| 2537 | - * @since 1.0.19 |
|
| 2538 | - * @param string $value city. |
|
| 2539 | - */ |
|
| 2540 | - public function set_user_city( $value ) { |
|
| 2541 | - $this->set_city( $value ); |
|
| 2685 | + * Set the customer's address. |
|
| 2686 | + * |
|
| 2687 | + * @since 1.0.19 |
|
| 2688 | + * @param string $value address. |
|
| 2689 | + */ |
|
| 2690 | + public function set_address( $value ) { |
|
| 2691 | + $this->set_prop( 'address', $value ); |
|
| 2542 | 2692 | } |
| 2543 | 2693 | |
| 2544 | 2694 | /** |
| 2545 | - * Alias of self::set_city(). |
|
| 2546 | - * |
|
| 2547 | - * @since 1.0.19 |
|
| 2548 | - * @param string $value city. |
|
| 2549 | - */ |
|
| 2550 | - public function set_customer_city( $value ) { |
|
| 2551 | - $this->set_city( $value ); |
|
| 2695 | + * Alias of self::set_address(). |
|
| 2696 | + * |
|
| 2697 | + * @since 1.0.19 |
|
| 2698 | + * @param string $value address. |
|
| 2699 | + */ |
|
| 2700 | + public function set_user_address( $value ) { |
|
| 2701 | + $this->set_address( $value ); |
|
| 2552 | 2702 | } |
| 2553 | 2703 | |
| 2554 | 2704 | /** |
| 2555 | - * Set the customer's zip code. |
|
| 2556 | - * |
|
| 2557 | - * @since 1.0.19 |
|
| 2558 | - * @param string $value zip. |
|
| 2559 | - */ |
|
| 2560 | - public function set_zip( $value ) { |
|
| 2561 | - $this->set_prop( 'zip', $value ); |
|
| 2705 | + * Alias of self::set_address(). |
|
| 2706 | + * |
|
| 2707 | + * @since 1.0.19 |
|
| 2708 | + * @param string $value address. |
|
| 2709 | + */ |
|
| 2710 | + public function set_customer_address( $value ) { |
|
| 2711 | + $this->set_address( $value ); |
|
| 2562 | 2712 | } |
| 2563 | 2713 | |
| 2564 | 2714 | /** |
| 2565 | - * Alias of self::set_zip(). |
|
| 2566 | - * |
|
| 2567 | - * @since 1.0.19 |
|
| 2568 | - * @param string $value zip. |
|
| 2569 | - */ |
|
| 2570 | - public function set_user_zip( $value ) { |
|
| 2571 | - $this->set_zip( $value ); |
|
| 2715 | + * Set whether the customer has viewed the invoice or not. |
|
| 2716 | + * |
|
| 2717 | + * @since 1.0.19 |
|
| 2718 | + * @param int|bool $value confirmed. |
|
| 2719 | + */ |
|
| 2720 | + public function set_is_viewed( $value ) { |
|
| 2721 | + $this->set_prop( 'is_viewed', $value ); |
|
| 2572 | 2722 | } |
| 2573 | 2723 | |
| 2574 | 2724 | /** |
| 2575 | - * Alias of self::set_zip(). |
|
| 2576 | - * |
|
| 2577 | - * @since 1.0.19 |
|
| 2578 | - * @param string $value zip. |
|
| 2579 | - */ |
|
| 2580 | - public function set_customer_zip( $value ) { |
|
| 2581 | - $this->set_zip( $value ); |
|
| 2725 | + * Set extra email recipients. |
|
| 2726 | + * |
|
| 2727 | + * @since 1.0.19 |
|
| 2728 | + * @param string $value email recipients. |
|
| 2729 | + */ |
|
| 2730 | + public function set_email_cc( $value ) { |
|
| 2731 | + $this->set_prop( 'email_cc', $value ); |
|
| 2582 | 2732 | } |
| 2583 | 2733 | |
| 2584 | 2734 | /** |
| 2585 | - * Set the customer's company. |
|
| 2586 | - * |
|
| 2587 | - * @since 1.0.19 |
|
| 2588 | - * @param string $value company. |
|
| 2589 | - */ |
|
| 2590 | - public function set_company( $value ) { |
|
| 2591 | - $this->set_prop( 'company', $value ); |
|
| 2735 | + * Set the invoice template. |
|
| 2736 | + * |
|
| 2737 | + * @since 1.0.19 |
|
| 2738 | + * @param string $value template. |
|
| 2739 | + */ |
|
| 2740 | + public function set_template( $value ) { |
|
| 2741 | + if ( in_array( $value, array( 'quantity', 'hours', 'amount' ) ) ) { |
|
| 2742 | + $this->set_prop( 'template', $value ); |
|
| 2743 | + } |
|
| 2592 | 2744 | } |
| 2593 | 2745 | |
| 2594 | 2746 | /** |
| 2595 | - * Alias of self::set_company(). |
|
| 2596 | - * |
|
| 2597 | - * @since 1.0.19 |
|
| 2598 | - * @param string $value company. |
|
| 2599 | - */ |
|
| 2600 | - public function set_user_company( $value ) { |
|
| 2601 | - $this->set_company( $value ); |
|
| 2747 | + * Set the invoice source. |
|
| 2748 | + * |
|
| 2749 | + * @since 1.0.19 |
|
| 2750 | + * @param string $value source. |
|
| 2751 | + * @deprecated |
|
| 2752 | + */ |
|
| 2753 | + public function created_via( $value ) { |
|
| 2754 | + $this->set_created_via( sanitize_text_field( $value ) ); |
|
| 2602 | 2755 | } |
| 2603 | 2756 | |
| 2604 | 2757 | /** |
| 2605 | - * Alias of self::set_company(). |
|
| 2606 | - * |
|
| 2607 | - * @since 1.0.19 |
|
| 2608 | - * @param string $value company. |
|
| 2609 | - */ |
|
| 2610 | - public function set_customer_company( $value ) { |
|
| 2611 | - $this->set_company( $value ); |
|
| 2758 | + * Set the invoice source. |
|
| 2759 | + * |
|
| 2760 | + * @since 1.0.19 |
|
| 2761 | + * @param string $value source. |
|
| 2762 | + */ |
|
| 2763 | + public function set_created_via( $value ) { |
|
| 2764 | + $this->set_prop( 'created_via', sanitize_text_field( $value ) ); |
|
| 2612 | 2765 | } |
| 2613 | 2766 | |
| 2614 | - /** |
|
| 2615 | - * Set the customer's company id. |
|
| 2616 | - * |
|
| 2617 | - * @since 1.0.19 |
|
| 2618 | - * @param string $value company id. |
|
| 2619 | - */ |
|
| 2620 | - public function set_company_id( $value ) { |
|
| 2621 | - $this->set_prop( 'company_id', $value ); |
|
| 2767 | + /** |
|
| 2768 | + * Set the customer's address confirmed status. |
|
| 2769 | + * |
|
| 2770 | + * @since 1.0.19 |
|
| 2771 | + * @param int|bool $value confirmed. |
|
| 2772 | + */ |
|
| 2773 | + public function set_address_confirmed( $value ) { |
|
| 2774 | + $this->set_prop( 'address_confirmed', $value ); |
|
| 2622 | 2775 | } |
| 2623 | 2776 | |
| 2624 | 2777 | /** |
| 2625 | - * Set the customer's var number. |
|
| 2626 | - * |
|
| 2627 | - * @since 1.0.19 |
|
| 2628 | - * @param string $value var number. |
|
| 2629 | - */ |
|
| 2630 | - public function set_vat_number( $value ) { |
|
| 2631 | - $this->set_prop( 'vat_number', $value ); |
|
| 2778 | + * Alias of self::set_address_confirmed(). |
|
| 2779 | + * |
|
| 2780 | + * @since 1.0.19 |
|
| 2781 | + * @param int|bool $value confirmed. |
|
| 2782 | + */ |
|
| 2783 | + public function set_user_address_confirmed( $value ) { |
|
| 2784 | + $this->set_address_confirmed( $value ); |
|
| 2632 | 2785 | } |
| 2633 | 2786 | |
| 2634 | 2787 | /** |
| 2635 | - * Alias of self::set_vat_number(). |
|
| 2636 | - * |
|
| 2637 | - * @since 1.0.19 |
|
| 2638 | - * @param string $value var number. |
|
| 2639 | - */ |
|
| 2640 | - public function set_user_vat_number( $value ) { |
|
| 2641 | - $this->set_vat_number( $value ); |
|
| 2788 | + * Alias of self::set_address_confirmed(). |
|
| 2789 | + * |
|
| 2790 | + * @since 1.0.19 |
|
| 2791 | + * @param int|bool $value confirmed. |
|
| 2792 | + */ |
|
| 2793 | + public function set_customer_address_confirmed( $value ) { |
|
| 2794 | + $this->set_address_confirmed( $value ); |
|
| 2642 | 2795 | } |
| 2643 | 2796 | |
| 2644 | 2797 | /** |
| 2645 | - * Alias of self::set_vat_number(). |
|
| 2646 | - * |
|
| 2647 | - * @since 1.0.19 |
|
| 2648 | - * @param string $value var number. |
|
| 2649 | - */ |
|
| 2650 | - public function set_customer_vat_number( $value ) { |
|
| 2651 | - $this->set_vat_number( $value ); |
|
| 2798 | + * Set the invoice sub total. |
|
| 2799 | + * |
|
| 2800 | + * @since 1.0.19 |
|
| 2801 | + * @param float $value sub total. |
|
| 2802 | + */ |
|
| 2803 | + public function set_subtotal( $value ) { |
|
| 2804 | + $this->set_prop( 'subtotal', max( 0, $value ) ); |
|
| 2652 | 2805 | } |
| 2653 | 2806 | |
| 2654 | 2807 | /** |
| 2655 | - * Set the customer's vat rate. |
|
| 2656 | - * |
|
| 2657 | - * @since 1.0.19 |
|
| 2658 | - * @param string $value var rate. |
|
| 2659 | - */ |
|
| 2660 | - public function set_vat_rate( $value ) { |
|
| 2661 | - $this->set_prop( 'vat_rate', $value ); |
|
| 2808 | + * Set the invoice total. |
|
| 2809 | + * |
|
| 2810 | + * @since 1.0.19 |
|
| 2811 | + * @param float $value sub total. |
|
| 2812 | + */ |
|
| 2813 | + public function set_total( $value ) { |
|
| 2814 | + $this->set_prop( 'total', max( 0, $value ) ); |
|
| 2662 | 2815 | } |
| 2663 | 2816 | |
| 2664 | - /** |
|
| 2665 | - * Alias of self::set_vat_rate(). |
|
| 2666 | - * |
|
| 2667 | - * @since 1.0.19 |
|
| 2668 | - * @param string $value var number. |
|
| 2669 | - */ |
|
| 2670 | - public function set_user_vat_rate( $value ) { |
|
| 2671 | - $this->set_vat_rate( $value ); |
|
| 2672 | - } |
|
| 2673 | - |
|
| 2674 | - /** |
|
| 2675 | - * Alias of self::set_vat_rate(). |
|
| 2676 | - * |
|
| 2677 | - * @since 1.0.19 |
|
| 2678 | - * @param string $value var number. |
|
| 2679 | - */ |
|
| 2680 | - public function set_customer_vat_rate( $value ) { |
|
| 2681 | - $this->set_vat_rate( $value ); |
|
| 2682 | - } |
|
| 2683 | - |
|
| 2684 | - /** |
|
| 2685 | - * Set the customer's address. |
|
| 2686 | - * |
|
| 2687 | - * @since 1.0.19 |
|
| 2688 | - * @param string $value address. |
|
| 2689 | - */ |
|
| 2690 | - public function set_address( $value ) { |
|
| 2691 | - $this->set_prop( 'address', $value ); |
|
| 2692 | - } |
|
| 2693 | - |
|
| 2694 | - /** |
|
| 2695 | - * Alias of self::set_address(). |
|
| 2696 | - * |
|
| 2697 | - * @since 1.0.19 |
|
| 2698 | - * @param string $value address. |
|
| 2699 | - */ |
|
| 2700 | - public function set_user_address( $value ) { |
|
| 2701 | - $this->set_address( $value ); |
|
| 2702 | - } |
|
| 2703 | - |
|
| 2704 | - /** |
|
| 2705 | - * Alias of self::set_address(). |
|
| 2706 | - * |
|
| 2707 | - * @since 1.0.19 |
|
| 2708 | - * @param string $value address. |
|
| 2709 | - */ |
|
| 2710 | - public function set_customer_address( $value ) { |
|
| 2711 | - $this->set_address( $value ); |
|
| 2712 | - } |
|
| 2713 | - |
|
| 2714 | - /** |
|
| 2715 | - * Set whether the customer has viewed the invoice or not. |
|
| 2716 | - * |
|
| 2717 | - * @since 1.0.19 |
|
| 2718 | - * @param int|bool $value confirmed. |
|
| 2719 | - */ |
|
| 2720 | - public function set_is_viewed( $value ) { |
|
| 2721 | - $this->set_prop( 'is_viewed', $value ); |
|
| 2722 | - } |
|
| 2723 | - |
|
| 2724 | - /** |
|
| 2725 | - * Set extra email recipients. |
|
| 2726 | - * |
|
| 2727 | - * @since 1.0.19 |
|
| 2728 | - * @param string $value email recipients. |
|
| 2729 | - */ |
|
| 2730 | - public function set_email_cc( $value ) { |
|
| 2731 | - $this->set_prop( 'email_cc', $value ); |
|
| 2732 | - } |
|
| 2733 | - |
|
| 2734 | - /** |
|
| 2735 | - * Set the invoice template. |
|
| 2736 | - * |
|
| 2737 | - * @since 1.0.19 |
|
| 2738 | - * @param string $value template. |
|
| 2739 | - */ |
|
| 2740 | - public function set_template( $value ) { |
|
| 2741 | - if ( in_array( $value, array( 'quantity', 'hours', 'amount' ) ) ) { |
|
| 2742 | - $this->set_prop( 'template', $value ); |
|
| 2743 | - } |
|
| 2744 | - } |
|
| 2745 | - |
|
| 2746 | - /** |
|
| 2747 | - * Set the invoice source. |
|
| 2748 | - * |
|
| 2749 | - * @since 1.0.19 |
|
| 2750 | - * @param string $value source. |
|
| 2751 | - * @deprecated |
|
| 2752 | - */ |
|
| 2753 | - public function created_via( $value ) { |
|
| 2754 | - $this->set_created_via( sanitize_text_field( $value ) ); |
|
| 2755 | - } |
|
| 2756 | - |
|
| 2757 | - /** |
|
| 2758 | - * Set the invoice source. |
|
| 2759 | - * |
|
| 2760 | - * @since 1.0.19 |
|
| 2761 | - * @param string $value source. |
|
| 2762 | - */ |
|
| 2763 | - public function set_created_via( $value ) { |
|
| 2764 | - $this->set_prop( 'created_via', sanitize_text_field( $value ) ); |
|
| 2765 | - } |
|
| 2766 | - |
|
| 2767 | - /** |
|
| 2768 | - * Set the customer's address confirmed status. |
|
| 2769 | - * |
|
| 2770 | - * @since 1.0.19 |
|
| 2771 | - * @param int|bool $value confirmed. |
|
| 2772 | - */ |
|
| 2773 | - public function set_address_confirmed( $value ) { |
|
| 2774 | - $this->set_prop( 'address_confirmed', $value ); |
|
| 2775 | - } |
|
| 2776 | - |
|
| 2777 | - /** |
|
| 2778 | - * Alias of self::set_address_confirmed(). |
|
| 2779 | - * |
|
| 2780 | - * @since 1.0.19 |
|
| 2781 | - * @param int|bool $value confirmed. |
|
| 2782 | - */ |
|
| 2783 | - public function set_user_address_confirmed( $value ) { |
|
| 2784 | - $this->set_address_confirmed( $value ); |
|
| 2785 | - } |
|
| 2786 | - |
|
| 2787 | - /** |
|
| 2788 | - * Alias of self::set_address_confirmed(). |
|
| 2789 | - * |
|
| 2790 | - * @since 1.0.19 |
|
| 2791 | - * @param int|bool $value confirmed. |
|
| 2792 | - */ |
|
| 2793 | - public function set_customer_address_confirmed( $value ) { |
|
| 2794 | - $this->set_address_confirmed( $value ); |
|
| 2795 | - } |
|
| 2796 | - |
|
| 2797 | - /** |
|
| 2798 | - * Set the invoice sub total. |
|
| 2799 | - * |
|
| 2800 | - * @since 1.0.19 |
|
| 2801 | - * @param float $value sub total. |
|
| 2802 | - */ |
|
| 2803 | - public function set_subtotal( $value ) { |
|
| 2804 | - $this->set_prop( 'subtotal', max( 0, $value ) ); |
|
| 2805 | - } |
|
| 2806 | - |
|
| 2807 | - /** |
|
| 2808 | - * Set the invoice total. |
|
| 2809 | - * |
|
| 2810 | - * @since 1.0.19 |
|
| 2811 | - * @param float $value sub total. |
|
| 2812 | - */ |
|
| 2813 | - public function set_total( $value ) { |
|
| 2814 | - $this->set_prop( 'total', max( 0, $value ) ); |
|
| 2815 | - } |
|
| 2816 | - |
|
| 2817 | - /** |
|
| 2818 | - * Set the invoice discount amount. |
|
| 2819 | - * |
|
| 2820 | - * @since 1.0.19 |
|
| 2821 | - * @param float $value discount total. |
|
| 2822 | - */ |
|
| 2823 | - public function set_total_discount( $value ) { |
|
| 2824 | - $this->set_prop( 'total_discount', max( 0, $value ) ); |
|
| 2817 | + /** |
|
| 2818 | + * Set the invoice discount amount. |
|
| 2819 | + * |
|
| 2820 | + * @since 1.0.19 |
|
| 2821 | + * @param float $value discount total. |
|
| 2822 | + */ |
|
| 2823 | + public function set_total_discount( $value ) { |
|
| 2824 | + $this->set_prop( 'total_discount', max( 0, $value ) ); |
|
| 2825 | 2825 | } |
| 2826 | 2826 | |
| 2827 | 2827 | /** |
| 2828 | - * Alias of self::set_total_discount(). |
|
| 2829 | - * |
|
| 2830 | - * @since 1.0.19 |
|
| 2831 | - * @param float $value discount total. |
|
| 2832 | - */ |
|
| 2833 | - public function set_discount( $value ) { |
|
| 2834 | - $this->set_total_discount( $value ); |
|
| 2828 | + * Alias of self::set_total_discount(). |
|
| 2829 | + * |
|
| 2830 | + * @since 1.0.19 |
|
| 2831 | + * @param float $value discount total. |
|
| 2832 | + */ |
|
| 2833 | + public function set_discount( $value ) { |
|
| 2834 | + $this->set_total_discount( $value ); |
|
| 2835 | 2835 | } |
| 2836 | 2836 | |
| 2837 | 2837 | /** |
| 2838 | - * Set the invoice tax amount. |
|
| 2839 | - * |
|
| 2840 | - * @since 1.0.19 |
|
| 2841 | - * @param float $value tax total. |
|
| 2842 | - */ |
|
| 2843 | - public function set_total_tax( $value ) { |
|
| 2844 | - $this->set_prop( 'total_tax', max( 0, $value ) ); |
|
| 2838 | + * Set the invoice tax amount. |
|
| 2839 | + * |
|
| 2840 | + * @since 1.0.19 |
|
| 2841 | + * @param float $value tax total. |
|
| 2842 | + */ |
|
| 2843 | + public function set_total_tax( $value ) { |
|
| 2844 | + $this->set_prop( 'total_tax', max( 0, $value ) ); |
|
| 2845 | 2845 | } |
| 2846 | 2846 | |
| 2847 | 2847 | /** |
| 2848 | - * Alias of self::set_total_tax(). |
|
| 2849 | - * |
|
| 2850 | - * @since 1.0.19 |
|
| 2851 | - * @param float $value tax total. |
|
| 2852 | - */ |
|
| 2853 | - public function set_tax_total( $value ) { |
|
| 2854 | - $this->set_total_tax( $value ); |
|
| 2848 | + * Alias of self::set_total_tax(). |
|
| 2849 | + * |
|
| 2850 | + * @since 1.0.19 |
|
| 2851 | + * @param float $value tax total. |
|
| 2852 | + */ |
|
| 2853 | + public function set_tax_total( $value ) { |
|
| 2854 | + $this->set_total_tax( $value ); |
|
| 2855 | 2855 | } |
| 2856 | 2856 | |
| 2857 | 2857 | /** |
| 2858 | - * Set the invoice fees amount. |
|
| 2859 | - * |
|
| 2860 | - * @since 1.0.19 |
|
| 2861 | - * @param float $value fees total. |
|
| 2862 | - */ |
|
| 2863 | - public function set_total_fees( $value ) { |
|
| 2864 | - $this->set_prop( 'total_fees', max( 0, $value ) ); |
|
| 2858 | + * Set the invoice fees amount. |
|
| 2859 | + * |
|
| 2860 | + * @since 1.0.19 |
|
| 2861 | + * @param float $value fees total. |
|
| 2862 | + */ |
|
| 2863 | + public function set_total_fees( $value ) { |
|
| 2864 | + $this->set_prop( 'total_fees', max( 0, $value ) ); |
|
| 2865 | 2865 | } |
| 2866 | 2866 | |
| 2867 | 2867 | /** |
| 2868 | - * Alias of self::set_total_fees(). |
|
| 2869 | - * |
|
| 2870 | - * @since 1.0.19 |
|
| 2871 | - * @param float $value fees total. |
|
| 2872 | - */ |
|
| 2873 | - public function set_fees_total( $value ) { |
|
| 2874 | - $this->set_total_fees( $value ); |
|
| 2868 | + * Alias of self::set_total_fees(). |
|
| 2869 | + * |
|
| 2870 | + * @since 1.0.19 |
|
| 2871 | + * @param float $value fees total. |
|
| 2872 | + */ |
|
| 2873 | + public function set_fees_total( $value ) { |
|
| 2874 | + $this->set_total_fees( $value ); |
|
| 2875 | 2875 | } |
| 2876 | 2876 | |
| 2877 | 2877 | /** |
| 2878 | - * Set the invoice fees. |
|
| 2879 | - * |
|
| 2880 | - * @since 1.0.19 |
|
| 2881 | - * @param array $value fees. |
|
| 2882 | - */ |
|
| 2883 | - public function set_fees( $value ) { |
|
| 2878 | + * Set the invoice fees. |
|
| 2879 | + * |
|
| 2880 | + * @since 1.0.19 |
|
| 2881 | + * @param array $value fees. |
|
| 2882 | + */ |
|
| 2883 | + public function set_fees( $value ) { |
|
| 2884 | 2884 | |
| 2885 | - if ( ! is_array( $value ) ) { |
|
| 2886 | - $value = array(); |
|
| 2887 | - } |
|
| 2885 | + if ( ! is_array( $value ) ) { |
|
| 2886 | + $value = array(); |
|
| 2887 | + } |
|
| 2888 | 2888 | |
| 2889 | - $this->set_prop( 'fees', $value ); |
|
| 2889 | + $this->set_prop( 'fees', $value ); |
|
| 2890 | 2890 | |
| 2891 | 2891 | } |
| 2892 | 2892 | |
| 2893 | 2893 | /** |
| 2894 | - * Set the invoice taxes. |
|
| 2895 | - * |
|
| 2896 | - * @since 1.0.19 |
|
| 2897 | - * @param array $value taxes. |
|
| 2898 | - */ |
|
| 2899 | - public function set_taxes( $value ) { |
|
| 2894 | + * Set the invoice taxes. |
|
| 2895 | + * |
|
| 2896 | + * @since 1.0.19 |
|
| 2897 | + * @param array $value taxes. |
|
| 2898 | + */ |
|
| 2899 | + public function set_taxes( $value ) { |
|
| 2900 | 2900 | |
| 2901 | - if ( ! is_array( $value ) ) { |
|
| 2902 | - $value = array(); |
|
| 2903 | - } |
|
| 2901 | + if ( ! is_array( $value ) ) { |
|
| 2902 | + $value = array(); |
|
| 2903 | + } |
|
| 2904 | 2904 | |
| 2905 | - $this->set_prop( 'taxes', $value ); |
|
| 2905 | + $this->set_prop( 'taxes', $value ); |
|
| 2906 | 2906 | |
| 2907 | 2907 | } |
| 2908 | 2908 | |
| 2909 | 2909 | /** |
| 2910 | - * Set the invoice discounts. |
|
| 2911 | - * |
|
| 2912 | - * @since 1.0.19 |
|
| 2913 | - * @param array $value discounts. |
|
| 2914 | - */ |
|
| 2915 | - public function set_discounts( $value ) { |
|
| 2910 | + * Set the invoice discounts. |
|
| 2911 | + * |
|
| 2912 | + * @since 1.0.19 |
|
| 2913 | + * @param array $value discounts. |
|
| 2914 | + */ |
|
| 2915 | + public function set_discounts( $value ) { |
|
| 2916 | 2916 | |
| 2917 | - if ( ! is_array( $value ) ) { |
|
| 2918 | - $value = array(); |
|
| 2919 | - } |
|
| 2917 | + if ( ! is_array( $value ) ) { |
|
| 2918 | + $value = array(); |
|
| 2919 | + } |
|
| 2920 | 2920 | |
| 2921 | - $this->set_prop( 'discounts', $value ); |
|
| 2921 | + $this->set_prop( 'discounts', $value ); |
|
| 2922 | 2922 | } |
| 2923 | 2923 | |
| 2924 | 2924 | /** |
| 2925 | - * Set the invoice items. |
|
| 2926 | - * |
|
| 2927 | - * @since 1.0.19 |
|
| 2928 | - * @param GetPaid_Form_Item[] $value items. |
|
| 2929 | - */ |
|
| 2930 | - public function set_items( $value ) { |
|
| 2925 | + * Set the invoice items. |
|
| 2926 | + * |
|
| 2927 | + * @since 1.0.19 |
|
| 2928 | + * @param GetPaid_Form_Item[] $value items. |
|
| 2929 | + */ |
|
| 2930 | + public function set_items( $value ) { |
|
| 2931 | 2931 | |
| 2932 | 2932 | // Remove existing items. |
| 2933 | 2933 | $this->set_prop( 'items', array() ); |
| 2934 | - $this->recurring_item = null; |
|
| 2934 | + $this->recurring_item = null; |
|
| 2935 | 2935 | |
| 2936 | 2936 | // Ensure that we have an array. |
| 2937 | 2937 | if ( ! is_array( $value ) ) { |
@@ -2945,95 +2945,95 @@ discard block |
||
| 2945 | 2945 | } |
| 2946 | 2946 | |
| 2947 | 2947 | /** |
| 2948 | - * Set the payment form. |
|
| 2949 | - * |
|
| 2950 | - * @since 1.0.19 |
|
| 2951 | - * @param int $value payment form. |
|
| 2952 | - */ |
|
| 2953 | - public function set_payment_form( $value ) { |
|
| 2954 | - $this->set_prop( 'payment_form', $value ); |
|
| 2948 | + * Set the payment form. |
|
| 2949 | + * |
|
| 2950 | + * @since 1.0.19 |
|
| 2951 | + * @param int $value payment form. |
|
| 2952 | + */ |
|
| 2953 | + public function set_payment_form( $value ) { |
|
| 2954 | + $this->set_prop( 'payment_form', $value ); |
|
| 2955 | 2955 | } |
| 2956 | 2956 | |
| 2957 | 2957 | /** |
| 2958 | - * Set the submission id. |
|
| 2959 | - * |
|
| 2960 | - * @since 1.0.19 |
|
| 2961 | - * @param string $value submission id. |
|
| 2962 | - */ |
|
| 2963 | - public function set_submission_id( $value ) { |
|
| 2964 | - $this->set_prop( 'submission_id', $value ); |
|
| 2958 | + * Set the submission id. |
|
| 2959 | + * |
|
| 2960 | + * @since 1.0.19 |
|
| 2961 | + * @param string $value submission id. |
|
| 2962 | + */ |
|
| 2963 | + public function set_submission_id( $value ) { |
|
| 2964 | + $this->set_prop( 'submission_id', $value ); |
|
| 2965 | 2965 | } |
| 2966 | 2966 | |
| 2967 | 2967 | /** |
| 2968 | - * Set the discount code. |
|
| 2969 | - * |
|
| 2970 | - * @since 1.0.19 |
|
| 2971 | - * @param string $value discount code. |
|
| 2972 | - */ |
|
| 2973 | - public function set_discount_code( $value ) { |
|
| 2974 | - $this->set_prop( 'discount_code', sanitize_text_field( $value ) ); |
|
| 2968 | + * Set the discount code. |
|
| 2969 | + * |
|
| 2970 | + * @since 1.0.19 |
|
| 2971 | + * @param string $value discount code. |
|
| 2972 | + */ |
|
| 2973 | + public function set_discount_code( $value ) { |
|
| 2974 | + $this->set_prop( 'discount_code', sanitize_text_field( $value ) ); |
|
| 2975 | 2975 | } |
| 2976 | 2976 | |
| 2977 | 2977 | /** |
| 2978 | - * Set the gateway. |
|
| 2979 | - * |
|
| 2980 | - * @since 1.0.19 |
|
| 2981 | - * @param string $value gateway. |
|
| 2982 | - */ |
|
| 2983 | - public function set_gateway( $value ) { |
|
| 2984 | - $this->set_prop( 'gateway', $value ); |
|
| 2978 | + * Set the gateway. |
|
| 2979 | + * |
|
| 2980 | + * @since 1.0.19 |
|
| 2981 | + * @param string $value gateway. |
|
| 2982 | + */ |
|
| 2983 | + public function set_gateway( $value ) { |
|
| 2984 | + $this->set_prop( 'gateway', $value ); |
|
| 2985 | 2985 | } |
| 2986 | 2986 | |
| 2987 | 2987 | /** |
| 2988 | - * Set the transaction id. |
|
| 2989 | - * |
|
| 2990 | - * @since 1.0.19 |
|
| 2991 | - * @param string $value transaction id. |
|
| 2992 | - */ |
|
| 2993 | - public function set_transaction_id( $value ) { |
|
| 2994 | - if ( ! empty( $value ) ) { |
|
| 2995 | - $this->set_prop( 'transaction_id', $value ); |
|
| 2996 | - } |
|
| 2988 | + * Set the transaction id. |
|
| 2989 | + * |
|
| 2990 | + * @since 1.0.19 |
|
| 2991 | + * @param string $value transaction id. |
|
| 2992 | + */ |
|
| 2993 | + public function set_transaction_id( $value ) { |
|
| 2994 | + if ( ! empty( $value ) ) { |
|
| 2995 | + $this->set_prop( 'transaction_id', $value ); |
|
| 2996 | + } |
|
| 2997 | 2997 | } |
| 2998 | 2998 | |
| 2999 | 2999 | /** |
| 3000 | - * Set the currency id. |
|
| 3001 | - * |
|
| 3002 | - * @since 1.0.19 |
|
| 3003 | - * @param string $value currency id. |
|
| 3004 | - */ |
|
| 3005 | - public function set_currency( $value ) { |
|
| 3006 | - $this->set_prop( 'currency', $value ); |
|
| 3000 | + * Set the currency id. |
|
| 3001 | + * |
|
| 3002 | + * @since 1.0.19 |
|
| 3003 | + * @param string $value currency id. |
|
| 3004 | + */ |
|
| 3005 | + public function set_currency( $value ) { |
|
| 3006 | + $this->set_prop( 'currency', $value ); |
|
| 3007 | 3007 | } |
| 3008 | 3008 | |
| 3009 | - /** |
|
| 3010 | - * Set whether to disable taxes. |
|
| 3011 | - * |
|
| 3012 | - * @since 1.0.19 |
|
| 3013 | - * @param bool $value value. |
|
| 3014 | - */ |
|
| 3015 | - public function set_disable_taxes( $value ) { |
|
| 3016 | - $this->set_prop( 'disable_taxes', (bool) $value ); |
|
| 3017 | - } |
|
| 3009 | + /** |
|
| 3010 | + * Set whether to disable taxes. |
|
| 3011 | + * |
|
| 3012 | + * @since 1.0.19 |
|
| 3013 | + * @param bool $value value. |
|
| 3014 | + */ |
|
| 3015 | + public function set_disable_taxes( $value ) { |
|
| 3016 | + $this->set_prop( 'disable_taxes', (bool) $value ); |
|
| 3017 | + } |
|
| 3018 | 3018 | |
| 3019 | 3019 | /** |
| 3020 | - * Set the subscription id. |
|
| 3021 | - * |
|
| 3022 | - * @since 1.0.19 |
|
| 3023 | - * @param string $value subscription id. |
|
| 3024 | - */ |
|
| 3025 | - public function set_subscription_id( $value ) { |
|
| 3026 | - $this->set_prop( 'subscription_id', $value ); |
|
| 3027 | - } |
|
| 3020 | + * Set the subscription id. |
|
| 3021 | + * |
|
| 3022 | + * @since 1.0.19 |
|
| 3023 | + * @param string $value subscription id. |
|
| 3024 | + */ |
|
| 3025 | + public function set_subscription_id( $value ) { |
|
| 3026 | + $this->set_prop( 'subscription_id', $value ); |
|
| 3027 | + } |
|
| 3028 | 3028 | |
| 3029 | - /** |
|
| 3030 | - * Set the remote subscription id. |
|
| 3031 | - * |
|
| 3032 | - * @since 1.0.19 |
|
| 3033 | - * @param string $value subscription id. |
|
| 3034 | - */ |
|
| 3035 | - public function set_remote_subscription_id( $value ) { |
|
| 3036 | - $this->set_prop( 'remote_subscription_id', $value ); |
|
| 3029 | + /** |
|
| 3030 | + * Set the remote subscription id. |
|
| 3031 | + * |
|
| 3032 | + * @since 1.0.19 |
|
| 3033 | + * @param string $value subscription id. |
|
| 3034 | + */ |
|
| 3035 | + public function set_remote_subscription_id( $value ) { |
|
| 3036 | + $this->set_prop( 'remote_subscription_id', $value ); |
|
| 3037 | 3037 | } |
| 3038 | 3038 | |
| 3039 | 3039 | /* |
@@ -3072,24 +3072,24 @@ discard block |
||
| 3072 | 3072 | */ |
| 3073 | 3073 | public function is_taxable() { |
| 3074 | 3074 | return ! $this->get_disable_taxes(); |
| 3075 | - } |
|
| 3075 | + } |
|
| 3076 | 3076 | |
| 3077 | - /** |
|
| 3078 | - * @deprecated |
|
| 3079 | - */ |
|
| 3080 | - public function has_vat() { |
|
| 3077 | + /** |
|
| 3078 | + * @deprecated |
|
| 3079 | + */ |
|
| 3080 | + public function has_vat() { |
|
| 3081 | 3081 | return $this->is_taxable(); |
| 3082 | - } |
|
| 3082 | + } |
|
| 3083 | 3083 | |
| 3084 | - /** |
|
| 3085 | - * Checks to see if the invoice requires payment. |
|
| 3086 | - */ |
|
| 3087 | - public function is_free() { |
|
| 3084 | + /** |
|
| 3085 | + * Checks to see if the invoice requires payment. |
|
| 3086 | + */ |
|
| 3087 | + public function is_free() { |
|
| 3088 | 3088 | $is_free = ( (float) wpinv_round_amount( $this->get_initial_total() ) == 0 ); |
| 3089 | 3089 | |
| 3090 | - if ( $this->is_recurring() && $this->get_recurring_total() > 0 ) { |
|
| 3091 | - $is_free = false; |
|
| 3092 | - } |
|
| 3090 | + if ( $this->is_recurring() && $this->get_recurring_total() > 0 ) { |
|
| 3091 | + $is_free = false; |
|
| 3092 | + } |
|
| 3093 | 3093 | |
| 3094 | 3094 | return apply_filters( 'wpinv_invoice_is_free', $is_free, $this ); |
| 3095 | 3095 | } |
@@ -3100,46 +3100,46 @@ discard block |
||
| 3100 | 3100 | public function is_paid() { |
| 3101 | 3101 | $is_paid = $this->has_status( array( 'publish', 'wpi-processing', 'wpi-renewal' ) ); |
| 3102 | 3102 | return apply_filters( 'wpinv_invoice_is_paid', $is_paid, $this ); |
| 3103 | - } |
|
| 3103 | + } |
|
| 3104 | 3104 | |
| 3105 | - /** |
|
| 3105 | + /** |
|
| 3106 | 3106 | * Checks if the invoice needs payment. |
| 3107 | 3107 | */ |
| 3108 | - public function needs_payment() { |
|
| 3109 | - $needs_payment = ! $this->is_paid() && ! $this->is_refunded() && ! $this->is_free(); |
|
| 3108 | + public function needs_payment() { |
|
| 3109 | + $needs_payment = ! $this->is_paid() && ! $this->is_refunded() && ! $this->is_free(); |
|
| 3110 | 3110 | return apply_filters( 'wpinv_needs_payment', $needs_payment, $this ); |
| 3111 | 3111 | } |
| 3112 | 3112 | |
| 3113 | - /** |
|
| 3113 | + /** |
|
| 3114 | 3114 | * Checks if the invoice is refunded. |
| 3115 | 3115 | */ |
| 3116 | - public function is_refunded() { |
|
| 3116 | + public function is_refunded() { |
|
| 3117 | 3117 | $is_refunded = $this->has_status( 'wpi-refunded' ); |
| 3118 | 3118 | return apply_filters( 'wpinv_invoice_is_refunded', $is_refunded, $this ); |
| 3119 | - } |
|
| 3119 | + } |
|
| 3120 | 3120 | |
| 3121 | - /** |
|
| 3121 | + /** |
|
| 3122 | 3122 | * Checks if the invoice is held. |
| 3123 | 3123 | */ |
| 3124 | - public function is_held() { |
|
| 3124 | + public function is_held() { |
|
| 3125 | 3125 | $is_held = $this->has_status( 'wpi-onhold' ); |
| 3126 | 3126 | return apply_filters( 'wpinv_invoice_is_held', $is_held, $this ); |
| 3127 | - } |
|
| 3127 | + } |
|
| 3128 | 3128 | |
| 3129 | - /** |
|
| 3129 | + /** |
|
| 3130 | 3130 | * Checks if the invoice is due. |
| 3131 | 3131 | */ |
| 3132 | - public function is_due() { |
|
| 3133 | - $due_date = $this->get_due_date(); |
|
| 3134 | - return empty( $due_date ) ? false : current_time( 'timestamp' ) > strtotime( $due_date ); |
|
| 3135 | - } |
|
| 3132 | + public function is_due() { |
|
| 3133 | + $due_date = $this->get_due_date(); |
|
| 3134 | + return empty( $due_date ) ? false : current_time( 'timestamp' ) > strtotime( $due_date ); |
|
| 3135 | + } |
|
| 3136 | 3136 | |
| 3137 | - /** |
|
| 3137 | + /** |
|
| 3138 | 3138 | * Checks if the invoice is draft. |
| 3139 | 3139 | */ |
| 3140 | - public function is_draft() { |
|
| 3140 | + public function is_draft() { |
|
| 3141 | 3141 | return $this->has_status( 'draft, auto-draft' ); |
| 3142 | - } |
|
| 3142 | + } |
|
| 3143 | 3143 | |
| 3144 | 3144 | /** |
| 3145 | 3145 | * Checks if the invoice has a given status. |
@@ -3147,9 +3147,9 @@ discard block |
||
| 3147 | 3147 | public function has_status( $status ) { |
| 3148 | 3148 | $status = wpinv_parse_list( $status ); |
| 3149 | 3149 | return apply_filters( 'wpinv_has_status', in_array( $this->get_status(), $status ), $status ); |
| 3150 | - } |
|
| 3150 | + } |
|
| 3151 | 3151 | |
| 3152 | - /** |
|
| 3152 | + /** |
|
| 3153 | 3153 | * Checks if the invoice is of a given type. |
| 3154 | 3154 | */ |
| 3155 | 3155 | public function is_type( $type ) { |
@@ -3172,25 +3172,25 @@ discard block |
||
| 3172 | 3172 | */ |
| 3173 | 3173 | public function has_free_trial() { |
| 3174 | 3174 | return $this->is_recurring() && 0 == $this->get_initial_total(); |
| 3175 | - } |
|
| 3175 | + } |
|
| 3176 | 3176 | |
| 3177 | - /** |
|
| 3177 | + /** |
|
| 3178 | 3178 | * @deprecated |
| 3179 | 3179 | */ |
| 3180 | 3180 | public function is_free_trial() { |
| 3181 | 3181 | $this->has_free_trial(); |
| 3182 | 3182 | } |
| 3183 | 3183 | |
| 3184 | - /** |
|
| 3184 | + /** |
|
| 3185 | 3185 | * Check if the initial payment if 0. |
| 3186 | 3186 | * |
| 3187 | 3187 | */ |
| 3188 | - public function is_initial_free() { |
|
| 3188 | + public function is_initial_free() { |
|
| 3189 | 3189 | $is_initial_free = ! ( (float) wpinv_round_amount( $this->get_initial_total() ) > 0 ); |
| 3190 | 3190 | return apply_filters( 'wpinv_invoice_is_initial_free', $is_initial_free, $this->get_cart_details(), $this ); |
| 3191 | 3191 | } |
| 3192 | 3192 | |
| 3193 | - /** |
|
| 3193 | + /** |
|
| 3194 | 3194 | * Check if the recurring item has a free trial. |
| 3195 | 3195 | * |
| 3196 | 3196 | */ |
@@ -3203,21 +3203,21 @@ discard block |
||
| 3203 | 3203 | |
| 3204 | 3204 | $item = $this->get_recurring( true ); |
| 3205 | 3205 | return $item->has_free_trial(); |
| 3206 | - } |
|
| 3206 | + } |
|
| 3207 | 3207 | |
| 3208 | - /** |
|
| 3208 | + /** |
|
| 3209 | 3209 | * Check if the free trial is a result of a discount. |
| 3210 | 3210 | */ |
| 3211 | 3211 | public function is_free_trial_from_discount() { |
| 3212 | - return $this->has_free_trial() && ! $this->item_has_free_trial(); |
|
| 3213 | - } |
|
| 3212 | + return $this->has_free_trial() && ! $this->item_has_free_trial(); |
|
| 3213 | + } |
|
| 3214 | 3214 | |
| 3215 | - /** |
|
| 3215 | + /** |
|
| 3216 | 3216 | * @deprecated |
| 3217 | 3217 | */ |
| 3218 | 3218 | public function discount_first_payment_only() { |
| 3219 | 3219 | |
| 3220 | - $discount = wpinv_get_discount_obj( $this->get_discount_code() ); |
|
| 3220 | + $discount = wpinv_get_discount_obj( $this->get_discount_code() ); |
|
| 3221 | 3221 | if ( ! $discount->exists() || ! $this->is_recurring() ) { |
| 3222 | 3222 | return true; |
| 3223 | 3223 | } |
@@ -3242,147 +3242,147 @@ discard block |
||
| 3242 | 3242 | */ |
| 3243 | 3243 | public function add_item( $item ) { |
| 3244 | 3244 | |
| 3245 | - if ( is_array( $item ) ) { |
|
| 3246 | - $item = $this->process_array_item( $item ); |
|
| 3247 | - } |
|
| 3245 | + if ( is_array( $item ) ) { |
|
| 3246 | + $item = $this->process_array_item( $item ); |
|
| 3247 | + } |
|
| 3248 | 3248 | |
| 3249 | - if ( is_numeric( $item ) ) { |
|
| 3250 | - $item = new GetPaid_Form_Item( $item ); |
|
| 3251 | - } |
|
| 3249 | + if ( is_numeric( $item ) ) { |
|
| 3250 | + $item = new GetPaid_Form_Item( $item ); |
|
| 3251 | + } |
|
| 3252 | 3252 | |
| 3253 | 3253 | // Make sure that it is available for purchase. |
| 3254 | - if ( $item->get_id() > 0 && ! $item->can_purchase() ) { |
|
| 3255 | - return new WP_Error( 'invalid_item', __( 'This item is not available for purchase', 'invoicing' ) ); |
|
| 3254 | + if ( $item->get_id() > 0 && ! $item->can_purchase() ) { |
|
| 3255 | + return new WP_Error( 'invalid_item', __( 'This item is not available for purchase', 'invoicing' ) ); |
|
| 3256 | 3256 | } |
| 3257 | 3257 | |
| 3258 | 3258 | // Do we have a recurring item? |
| 3259 | - if ( $item->is_recurring() ) { |
|
| 3260 | - $this->recurring_item = $item->get_id(); |
|
| 3259 | + if ( $item->is_recurring() ) { |
|
| 3260 | + $this->recurring_item = $item->get_id(); |
|
| 3261 | 3261 | } |
| 3262 | 3262 | |
| 3263 | 3263 | // Invoice id. |
| 3264 | 3264 | $item->invoice_id = (int) $this->get_id(); |
| 3265 | 3265 | |
| 3266 | - // Remove duplicates. |
|
| 3267 | - $this->remove_item( $item->get_id() ); |
|
| 3266 | + // Remove duplicates. |
|
| 3267 | + $this->remove_item( $item->get_id() ); |
|
| 3268 | 3268 | |
| 3269 | - if ( 0 == $item->get_quantity() ) { |
|
| 3270 | - return; |
|
| 3271 | - } |
|
| 3269 | + if ( 0 == $item->get_quantity() ) { |
|
| 3270 | + return; |
|
| 3271 | + } |
|
| 3272 | 3272 | |
| 3273 | - // Retrieve all items. |
|
| 3273 | + // Retrieve all items. |
|
| 3274 | 3274 | $items = $this->get_items(); |
| 3275 | 3275 | |
| 3276 | - // Add new item. |
|
| 3276 | + // Add new item. |
|
| 3277 | 3277 | $items[] = $item; |
| 3278 | 3278 | |
| 3279 | 3279 | $this->set_prop( 'items', $items ); |
| 3280 | 3280 | |
| 3281 | - return true; |
|
| 3282 | - } |
|
| 3281 | + return true; |
|
| 3282 | + } |
|
| 3283 | 3283 | |
| 3284 | - /** |
|
| 3285 | - * Converts an array to an item. |
|
| 3286 | - * |
|
| 3287 | - * @since 1.0.19 |
|
| 3288 | - * @return GetPaid_Form_Item |
|
| 3289 | - */ |
|
| 3290 | - protected function process_array_item( $array ) { |
|
| 3284 | + /** |
|
| 3285 | + * Converts an array to an item. |
|
| 3286 | + * |
|
| 3287 | + * @since 1.0.19 |
|
| 3288 | + * @return GetPaid_Form_Item |
|
| 3289 | + */ |
|
| 3290 | + protected function process_array_item( $array ) { |
|
| 3291 | 3291 | |
| 3292 | - $item_id = isset( $array['item_id'] ) ? $array['item_id'] : 0; |
|
| 3293 | - $item = new GetPaid_Form_Item( $item_id ); |
|
| 3292 | + $item_id = isset( $array['item_id'] ) ? $array['item_id'] : 0; |
|
| 3293 | + $item = new GetPaid_Form_Item( $item_id ); |
|
| 3294 | 3294 | |
| 3295 | - // Set item data. |
|
| 3296 | - foreach ( array( 'name', 'price', 'description' ) as $key ) { |
|
| 3297 | - if ( isset( $array[ "item_$key" ] ) ) { |
|
| 3298 | - $method = "set_$key"; |
|
| 3299 | - $item->$method( $array[ "item_$key" ] ); |
|
| 3300 | - } |
|
| 3301 | - } |
|
| 3295 | + // Set item data. |
|
| 3296 | + foreach ( array( 'name', 'price', 'description' ) as $key ) { |
|
| 3297 | + if ( isset( $array[ "item_$key" ] ) ) { |
|
| 3298 | + $method = "set_$key"; |
|
| 3299 | + $item->$method( $array[ "item_$key" ] ); |
|
| 3300 | + } |
|
| 3301 | + } |
|
| 3302 | 3302 | |
| 3303 | - if ( isset( $array['quantity'] ) ) { |
|
| 3304 | - $item->set_quantity( $array['quantity'] ); |
|
| 3305 | - } |
|
| 3303 | + if ( isset( $array['quantity'] ) ) { |
|
| 3304 | + $item->set_quantity( $array['quantity'] ); |
|
| 3305 | + } |
|
| 3306 | 3306 | |
| 3307 | - // Set item meta. |
|
| 3308 | - if ( isset( $array['meta'] ) && is_array( $array['meta'] ) ) { |
|
| 3309 | - $item->set_item_meta( $array['meta'] ); |
|
| 3310 | - } |
|
| 3307 | + // Set item meta. |
|
| 3308 | + if ( isset( $array['meta'] ) && is_array( $array['meta'] ) ) { |
|
| 3309 | + $item->set_item_meta( $array['meta'] ); |
|
| 3310 | + } |
|
| 3311 | 3311 | |
| 3312 | - return $item; |
|
| 3312 | + return $item; |
|
| 3313 | 3313 | |
| 3314 | - } |
|
| 3314 | + } |
|
| 3315 | 3315 | |
| 3316 | 3316 | /** |
| 3317 | - * Retrieves a specific item. |
|
| 3318 | - * |
|
| 3319 | - * @since 1.0.19 |
|
| 3320 | - * @return GetPaid_Form_Item|null |
|
| 3321 | - */ |
|
| 3322 | - public function get_item( $item_id ) { |
|
| 3317 | + * Retrieves a specific item. |
|
| 3318 | + * |
|
| 3319 | + * @since 1.0.19 |
|
| 3320 | + * @return GetPaid_Form_Item|null |
|
| 3321 | + */ |
|
| 3322 | + public function get_item( $item_id ) { |
|
| 3323 | 3323 | |
| 3324 | - foreach ( $this->get_items() as $item ) { |
|
| 3325 | - if ( (int) $item_id == $item->get_id() ) { |
|
| 3326 | - return $item; |
|
| 3327 | - } |
|
| 3328 | - } |
|
| 3324 | + foreach ( $this->get_items() as $item ) { |
|
| 3325 | + if ( (int) $item_id == $item->get_id() ) { |
|
| 3326 | + return $item; |
|
| 3327 | + } |
|
| 3328 | + } |
|
| 3329 | 3329 | |
| 3330 | - return null; |
|
| 3330 | + return null; |
|
| 3331 | 3331 | } |
| 3332 | 3332 | |
| 3333 | 3333 | /** |
| 3334 | - * Removes a specific item. |
|
| 3335 | - * |
|
| 3336 | - * @since 1.0.19 |
|
| 3337 | - */ |
|
| 3338 | - public function remove_item( $item_id ) { |
|
| 3339 | - $items = $this->get_items(); |
|
| 3340 | - $item_id = (int) $item_id; |
|
| 3334 | + * Removes a specific item. |
|
| 3335 | + * |
|
| 3336 | + * @since 1.0.19 |
|
| 3337 | + */ |
|
| 3338 | + public function remove_item( $item_id ) { |
|
| 3339 | + $items = $this->get_items(); |
|
| 3340 | + $item_id = (int) $item_id; |
|
| 3341 | 3341 | |
| 3342 | - foreach ( $items as $index => $item ) { |
|
| 3343 | - if ( (int) $item_id == $item->get_id() ) { |
|
| 3344 | - unset( $items[ $index ] ); |
|
| 3345 | - $this->set_prop( 'items', $items ); |
|
| 3342 | + foreach ( $items as $index => $item ) { |
|
| 3343 | + if ( (int) $item_id == $item->get_id() ) { |
|
| 3344 | + unset( $items[ $index ] ); |
|
| 3345 | + $this->set_prop( 'items', $items ); |
|
| 3346 | 3346 | |
| 3347 | - if ( $item_id == $this->recurring_item ) { |
|
| 3348 | - $this->recurring_item = null; |
|
| 3349 | - } |
|
| 3347 | + if ( $item_id == $this->recurring_item ) { |
|
| 3348 | + $this->recurring_item = null; |
|
| 3349 | + } |
|
| 3350 | 3350 | |
| 3351 | - } |
|
| 3352 | - } |
|
| 3351 | + } |
|
| 3352 | + } |
|
| 3353 | 3353 | |
| 3354 | 3354 | } |
| 3355 | 3355 | |
| 3356 | 3356 | /** |
| 3357 | - * Adds a fee to the invoice. |
|
| 3358 | - * |
|
| 3359 | - * @param array $fee An array of fee details. name, initial_fee, and recurring_fee are required. |
|
| 3360 | - * @since 1.0.19 |
|
| 3361 | - */ |
|
| 3357 | + * Adds a fee to the invoice. |
|
| 3358 | + * |
|
| 3359 | + * @param array $fee An array of fee details. name, initial_fee, and recurring_fee are required. |
|
| 3360 | + * @since 1.0.19 |
|
| 3361 | + */ |
|
| 3362 | 3362 | public function add_fee( $fee ) { |
| 3363 | 3363 | |
| 3364 | - $fees = $this->get_fees(); |
|
| 3365 | - $fees[ $fee['name'] ] = $fee; |
|
| 3366 | - $this->set_prop( 'fees', $fees ); |
|
| 3364 | + $fees = $this->get_fees(); |
|
| 3365 | + $fees[ $fee['name'] ] = $fee; |
|
| 3366 | + $this->set_prop( 'fees', $fees ); |
|
| 3367 | 3367 | |
| 3368 | 3368 | } |
| 3369 | 3369 | |
| 3370 | 3370 | /** |
| 3371 | - * Retrieves a specific fee. |
|
| 3372 | - * |
|
| 3373 | - * @since 1.0.19 |
|
| 3374 | - */ |
|
| 3375 | - public function get_fee( $fee ) { |
|
| 3371 | + * Retrieves a specific fee. |
|
| 3372 | + * |
|
| 3373 | + * @since 1.0.19 |
|
| 3374 | + */ |
|
| 3375 | + public function get_fee( $fee ) { |
|
| 3376 | 3376 | $fees = $this->get_fees(); |
| 3377 | - return isset( $fees[ $fee ] ) ? $fees[ $fee ] : null; |
|
| 3377 | + return isset( $fees[ $fee ] ) ? $fees[ $fee ] : null; |
|
| 3378 | 3378 | } |
| 3379 | 3379 | |
| 3380 | 3380 | /** |
| 3381 | - * Removes a specific fee. |
|
| 3382 | - * |
|
| 3383 | - * @since 1.0.19 |
|
| 3384 | - */ |
|
| 3385 | - public function remove_fee( $fee ) { |
|
| 3381 | + * Removes a specific fee. |
|
| 3382 | + * |
|
| 3383 | + * @since 1.0.19 |
|
| 3384 | + */ |
|
| 3385 | + public function remove_fee( $fee ) { |
|
| 3386 | 3386 | $fees = $this->get_fees(); |
| 3387 | 3387 | if ( isset( $fees[ $fee ] ) ) { |
| 3388 | 3388 | unset( $fees[ $fee ] ); |
@@ -3390,55 +3390,55 @@ discard block |
||
| 3390 | 3390 | } |
| 3391 | 3391 | } |
| 3392 | 3392 | |
| 3393 | - /** |
|
| 3394 | - * Adds a discount to the invoice. |
|
| 3395 | - * |
|
| 3396 | - * @param array $discount An array of discount details. name, initial_discount, and recurring_discount are required. Include discount_code if the discount is from a discount code. |
|
| 3397 | - * @since 1.0.19 |
|
| 3398 | - */ |
|
| 3399 | - public function add_discount( $discount ) { |
|
| 3393 | + /** |
|
| 3394 | + * Adds a discount to the invoice. |
|
| 3395 | + * |
|
| 3396 | + * @param array $discount An array of discount details. name, initial_discount, and recurring_discount are required. Include discount_code if the discount is from a discount code. |
|
| 3397 | + * @since 1.0.19 |
|
| 3398 | + */ |
|
| 3399 | + public function add_discount( $discount ) { |
|
| 3400 | 3400 | |
| 3401 | - $discounts = $this->get_discounts(); |
|
| 3402 | - $discounts[ $discount['name'] ] = $discount; |
|
| 3403 | - $this->set_prop( 'discounts', $discounts ); |
|
| 3401 | + $discounts = $this->get_discounts(); |
|
| 3402 | + $discounts[ $discount['name'] ] = $discount; |
|
| 3403 | + $this->set_prop( 'discounts', $discounts ); |
|
| 3404 | 3404 | |
| 3405 | - } |
|
| 3405 | + } |
|
| 3406 | 3406 | |
| 3407 | 3407 | /** |
| 3408 | - * Retrieves a specific discount. |
|
| 3409 | - * |
|
| 3410 | - * @since 1.0.19 |
|
| 3411 | - * @return float |
|
| 3412 | - */ |
|
| 3413 | - public function get_discount( $discount = false ) { |
|
| 3408 | + * Retrieves a specific discount. |
|
| 3409 | + * |
|
| 3410 | + * @since 1.0.19 |
|
| 3411 | + * @return float |
|
| 3412 | + */ |
|
| 3413 | + public function get_discount( $discount = false ) { |
|
| 3414 | 3414 | |
| 3415 | - // Backwards compatibilty. |
|
| 3416 | - if ( empty( $discount ) ) { |
|
| 3417 | - return $this->get_total_discount(); |
|
| 3418 | - } |
|
| 3415 | + // Backwards compatibilty. |
|
| 3416 | + if ( empty( $discount ) ) { |
|
| 3417 | + return $this->get_total_discount(); |
|
| 3418 | + } |
|
| 3419 | 3419 | |
| 3420 | 3420 | $discounts = $this->get_discounts(); |
| 3421 | - return isset( $discounts[ $discount ] ) ? $discounts[ $discount ] : null; |
|
| 3421 | + return isset( $discounts[ $discount ] ) ? $discounts[ $discount ] : null; |
|
| 3422 | 3422 | } |
| 3423 | 3423 | |
| 3424 | 3424 | /** |
| 3425 | - * Removes a specific discount. |
|
| 3426 | - * |
|
| 3427 | - * @since 1.0.19 |
|
| 3428 | - */ |
|
| 3429 | - public function remove_discount( $discount ) { |
|
| 3425 | + * Removes a specific discount. |
|
| 3426 | + * |
|
| 3427 | + * @since 1.0.19 |
|
| 3428 | + */ |
|
| 3429 | + public function remove_discount( $discount ) { |
|
| 3430 | 3430 | $discounts = $this->get_discounts(); |
| 3431 | 3431 | if ( isset( $discounts[ $discount ] ) ) { |
| 3432 | 3432 | unset( $discounts[ $discount ] ); |
| 3433 | 3433 | $this->set_prop( 'discounts', $discounts ); |
| 3434 | 3434 | } |
| 3435 | 3435 | |
| 3436 | - if ( 'discount_code' == $discount ) { |
|
| 3437 | - foreach ( $this->get_items() as $item ) { |
|
| 3438 | - $item->item_discount = 0; |
|
| 3439 | - $item->recurring_item_discount = 0; |
|
| 3440 | - } |
|
| 3441 | - } |
|
| 3436 | + if ( 'discount_code' == $discount ) { |
|
| 3437 | + foreach ( $this->get_items() as $item ) { |
|
| 3438 | + $item->item_discount = 0; |
|
| 3439 | + $item->recurring_item_discount = 0; |
|
| 3440 | + } |
|
| 3441 | + } |
|
| 3442 | 3442 | |
| 3443 | 3443 | } |
| 3444 | 3444 | |
@@ -3451,34 +3451,34 @@ discard block |
||
| 3451 | 3451 | if ( $this->is_taxable() ) { |
| 3452 | 3452 | |
| 3453 | 3453 | $taxes = $this->get_taxes(); |
| 3454 | - $taxes[ $tax['name'] ] = $tax; |
|
| 3455 | - $this->set_prop( 'taxes', $tax ); |
|
| 3454 | + $taxes[ $tax['name'] ] = $tax; |
|
| 3455 | + $this->set_prop( 'taxes', $tax ); |
|
| 3456 | 3456 | |
| 3457 | 3457 | } |
| 3458 | 3458 | } |
| 3459 | 3459 | |
| 3460 | 3460 | /** |
| 3461 | - * Retrieves a specific tax. |
|
| 3462 | - * |
|
| 3463 | - * @since 1.0.19 |
|
| 3464 | - */ |
|
| 3465 | - public function get_tax( $tax = null ) { |
|
| 3461 | + * Retrieves a specific tax. |
|
| 3462 | + * |
|
| 3463 | + * @since 1.0.19 |
|
| 3464 | + */ |
|
| 3465 | + public function get_tax( $tax = null ) { |
|
| 3466 | 3466 | |
| 3467 | - // Backwards compatility. |
|
| 3468 | - if ( empty( $tax ) ) { |
|
| 3469 | - return $this->get_total_tax(); |
|
| 3470 | - } |
|
| 3467 | + // Backwards compatility. |
|
| 3468 | + if ( empty( $tax ) ) { |
|
| 3469 | + return $this->get_total_tax(); |
|
| 3470 | + } |
|
| 3471 | 3471 | |
| 3472 | 3472 | $taxes = $this->get_taxes(); |
| 3473 | - return isset( $taxes[ $tax ] ) ? $taxes[ $tax ] : null; |
|
| 3473 | + return isset( $taxes[ $tax ] ) ? $taxes[ $tax ] : null; |
|
| 3474 | 3474 | } |
| 3475 | 3475 | |
| 3476 | 3476 | /** |
| 3477 | - * Removes a specific tax. |
|
| 3478 | - * |
|
| 3479 | - * @since 1.0.19 |
|
| 3480 | - */ |
|
| 3481 | - public function remove_tax( $tax ) { |
|
| 3477 | + * Removes a specific tax. |
|
| 3478 | + * |
|
| 3479 | + * @since 1.0.19 |
|
| 3480 | + */ |
|
| 3481 | + public function remove_tax( $tax ) { |
|
| 3482 | 3482 | $taxes = $this->get_taxes(); |
| 3483 | 3483 | if ( isset( $taxes[ $tax ] ) ) { |
| 3484 | 3484 | unset( $taxes[ $tax ] ); |
@@ -3487,185 +3487,185 @@ discard block |
||
| 3487 | 3487 | } |
| 3488 | 3488 | |
| 3489 | 3489 | /** |
| 3490 | - * Recalculates the invoice subtotal. |
|
| 3491 | - * |
|
| 3492 | - * @since 1.0.19 |
|
| 3493 | - * @return float The recalculated subtotal |
|
| 3494 | - */ |
|
| 3495 | - public function recalculate_subtotal() { |
|
| 3490 | + * Recalculates the invoice subtotal. |
|
| 3491 | + * |
|
| 3492 | + * @since 1.0.19 |
|
| 3493 | + * @return float The recalculated subtotal |
|
| 3494 | + */ |
|
| 3495 | + public function recalculate_subtotal() { |
|
| 3496 | 3496 | $items = $this->get_items(); |
| 3497 | - $subtotal = 0; |
|
| 3498 | - $recurring = 0; |
|
| 3497 | + $subtotal = 0; |
|
| 3498 | + $recurring = 0; |
|
| 3499 | 3499 | |
| 3500 | 3500 | foreach ( $items as $item ) { |
| 3501 | - $subtotal += $item->get_sub_total( 'edit' ); |
|
| 3502 | - $recurring += $item->get_recurring_sub_total( 'edit' ); |
|
| 3501 | + $subtotal += $item->get_sub_total( 'edit' ); |
|
| 3502 | + $recurring += $item->get_recurring_sub_total( 'edit' ); |
|
| 3503 | 3503 | } |
| 3504 | 3504 | |
| 3505 | - if ( wpinv_prices_include_tax() ) { |
|
| 3506 | - $subtotal = max( 0, $subtotal - $this->totals['tax']['initial'] ); |
|
| 3507 | - $recurring = max( 0, $recurring - $this->totals['tax']['recurring'] ); |
|
| 3508 | - } |
|
| 3505 | + if ( wpinv_prices_include_tax() ) { |
|
| 3506 | + $subtotal = max( 0, $subtotal - $this->totals['tax']['initial'] ); |
|
| 3507 | + $recurring = max( 0, $recurring - $this->totals['tax']['recurring'] ); |
|
| 3508 | + } |
|
| 3509 | 3509 | |
| 3510 | - $current = $this->is_renewal() ? $recurring : $subtotal; |
|
| 3511 | - $this->set_subtotal( $current ); |
|
| 3510 | + $current = $this->is_renewal() ? $recurring : $subtotal; |
|
| 3511 | + $this->set_subtotal( $current ); |
|
| 3512 | 3512 | |
| 3513 | - $this->totals['subtotal'] = array( |
|
| 3514 | - 'initial' => $subtotal, |
|
| 3515 | - 'recurring' => $recurring, |
|
| 3516 | - ); |
|
| 3513 | + $this->totals['subtotal'] = array( |
|
| 3514 | + 'initial' => $subtotal, |
|
| 3515 | + 'recurring' => $recurring, |
|
| 3516 | + ); |
|
| 3517 | 3517 | |
| 3518 | 3518 | return $current; |
| 3519 | 3519 | } |
| 3520 | 3520 | |
| 3521 | 3521 | /** |
| 3522 | - * Recalculates the invoice discount total. |
|
| 3523 | - * |
|
| 3524 | - * @since 1.0.19 |
|
| 3525 | - * @return float The recalculated discount |
|
| 3526 | - */ |
|
| 3527 | - public function recalculate_total_discount() { |
|
| 3522 | + * Recalculates the invoice discount total. |
|
| 3523 | + * |
|
| 3524 | + * @since 1.0.19 |
|
| 3525 | + * @return float The recalculated discount |
|
| 3526 | + */ |
|
| 3527 | + public function recalculate_total_discount() { |
|
| 3528 | 3528 | $discounts = $this->get_discounts(); |
| 3529 | - $discount = 0; |
|
| 3530 | - $recurring = 0; |
|
| 3529 | + $discount = 0; |
|
| 3530 | + $recurring = 0; |
|
| 3531 | 3531 | |
| 3532 | 3532 | foreach ( $discounts as $data ) { |
| 3533 | - $discount += wpinv_sanitize_amount( $data['initial_discount'] ); |
|
| 3534 | - $recurring += wpinv_sanitize_amount( $data['recurring_discount'] ); |
|
| 3535 | - } |
|
| 3533 | + $discount += wpinv_sanitize_amount( $data['initial_discount'] ); |
|
| 3534 | + $recurring += wpinv_sanitize_amount( $data['recurring_discount'] ); |
|
| 3535 | + } |
|
| 3536 | 3536 | |
| 3537 | - $current = $this->is_renewal() ? $recurring : $discount; |
|
| 3537 | + $current = $this->is_renewal() ? $recurring : $discount; |
|
| 3538 | 3538 | |
| 3539 | - $this->set_total_discount( $current ); |
|
| 3539 | + $this->set_total_discount( $current ); |
|
| 3540 | 3540 | |
| 3541 | - $this->totals['discount'] = array( |
|
| 3542 | - 'initial' => $discount, |
|
| 3543 | - 'recurring' => $recurring, |
|
| 3544 | - ); |
|
| 3541 | + $this->totals['discount'] = array( |
|
| 3542 | + 'initial' => $discount, |
|
| 3543 | + 'recurring' => $recurring, |
|
| 3544 | + ); |
|
| 3545 | 3545 | |
| 3546 | - return $current; |
|
| 3546 | + return $current; |
|
| 3547 | 3547 | |
| 3548 | 3548 | } |
| 3549 | 3549 | |
| 3550 | 3550 | /** |
| 3551 | - * Recalculates the invoice tax total. |
|
| 3552 | - * |
|
| 3553 | - * @since 1.0.19 |
|
| 3554 | - * @return float The recalculated tax |
|
| 3555 | - */ |
|
| 3556 | - public function recalculate_total_tax() { |
|
| 3551 | + * Recalculates the invoice tax total. |
|
| 3552 | + * |
|
| 3553 | + * @since 1.0.19 |
|
| 3554 | + * @return float The recalculated tax |
|
| 3555 | + */ |
|
| 3556 | + public function recalculate_total_tax() { |
|
| 3557 | 3557 | |
| 3558 | - // Maybe disable taxes. |
|
| 3559 | - $vat_number = $this->get_vat_number(); |
|
| 3560 | - $skip_tax = GetPaid_Payment_Form_Submission_Taxes::is_eu_transaction( $this->get_country() ) && ! empty( $vat_number ); |
|
| 3558 | + // Maybe disable taxes. |
|
| 3559 | + $vat_number = $this->get_vat_number(); |
|
| 3560 | + $skip_tax = GetPaid_Payment_Form_Submission_Taxes::is_eu_transaction( $this->get_country() ) && ! empty( $vat_number ); |
|
| 3561 | 3561 | |
| 3562 | - if ( wpinv_is_base_country( $this->get_country() ) && 'vat_too' == wpinv_get_option( 'vat_same_country_rule', 'vat_too' ) ) { |
|
| 3563 | - $skip_tax = false; |
|
| 3564 | - } |
|
| 3562 | + if ( wpinv_is_base_country( $this->get_country() ) && 'vat_too' == wpinv_get_option( 'vat_same_country_rule', 'vat_too' ) ) { |
|
| 3563 | + $skip_tax = false; |
|
| 3564 | + } |
|
| 3565 | 3565 | |
| 3566 | - if ( ! wpinv_use_taxes() || $this->get_disable_taxes() || ! wpinv_is_country_taxable( $this->get_country() ) || $skip_tax ) { |
|
| 3566 | + if ( ! wpinv_use_taxes() || $this->get_disable_taxes() || ! wpinv_is_country_taxable( $this->get_country() ) || $skip_tax ) { |
|
| 3567 | 3567 | |
| 3568 | - $this->totals['tax'] = array( |
|
| 3569 | - 'initial' => 0, |
|
| 3570 | - 'recurring' => 0, |
|
| 3571 | - ); |
|
| 3568 | + $this->totals['tax'] = array( |
|
| 3569 | + 'initial' => 0, |
|
| 3570 | + 'recurring' => 0, |
|
| 3571 | + ); |
|
| 3572 | 3572 | |
| 3573 | - $this->tax_rate = 0; |
|
| 3573 | + $this->tax_rate = 0; |
|
| 3574 | 3574 | |
| 3575 | - $this->set_taxes( array() ); |
|
| 3576 | - $current = 0; |
|
| 3577 | - } else { |
|
| 3575 | + $this->set_taxes( array() ); |
|
| 3576 | + $current = 0; |
|
| 3577 | + } else { |
|
| 3578 | 3578 | |
| 3579 | - $item_taxes = array(); |
|
| 3579 | + $item_taxes = array(); |
|
| 3580 | 3580 | |
| 3581 | - foreach ( $this->get_items() as $item ) { |
|
| 3582 | - $rates = getpaid_get_item_tax_rates( $item, $this->get_country(), $this->get_state() ); |
|
| 3583 | - $rates = getpaid_filter_item_tax_rates( $item, $rates ); |
|
| 3584 | - $taxes = getpaid_calculate_item_taxes( getpaid_get_taxable_amount( $item, false ), $rates ); |
|
| 3585 | - $r_taxes = getpaid_calculate_item_taxes( getpaid_get_taxable_amount( $item, true ), $rates ); |
|
| 3586 | - foreach ( $taxes as $name => $amount ) { |
|
| 3587 | - $recurring = isset( $r_taxes[ $name ] ) ? $r_taxes[ $name ] : 0; |
|
| 3588 | - $tax = getpaid_prepare_item_tax( $item, $name, $amount, $recurring ); |
|
| 3581 | + foreach ( $this->get_items() as $item ) { |
|
| 3582 | + $rates = getpaid_get_item_tax_rates( $item, $this->get_country(), $this->get_state() ); |
|
| 3583 | + $rates = getpaid_filter_item_tax_rates( $item, $rates ); |
|
| 3584 | + $taxes = getpaid_calculate_item_taxes( getpaid_get_taxable_amount( $item, false ), $rates ); |
|
| 3585 | + $r_taxes = getpaid_calculate_item_taxes( getpaid_get_taxable_amount( $item, true ), $rates ); |
|
| 3586 | + foreach ( $taxes as $name => $amount ) { |
|
| 3587 | + $recurring = isset( $r_taxes[ $name ] ) ? $r_taxes[ $name ] : 0; |
|
| 3588 | + $tax = getpaid_prepare_item_tax( $item, $name, $amount, $recurring ); |
|
| 3589 | 3589 | |
| 3590 | - if ( ! isset( $item_taxes[ $name ] ) ) { |
|
| 3591 | - $item_taxes[ $name ] = $tax; |
|
| 3592 | - continue; |
|
| 3593 | - } |
|
| 3590 | + if ( ! isset( $item_taxes[ $name ] ) ) { |
|
| 3591 | + $item_taxes[ $name ] = $tax; |
|
| 3592 | + continue; |
|
| 3593 | + } |
|
| 3594 | 3594 | |
| 3595 | - $item_taxes[ $name ]['initial_tax'] += $tax['initial_tax']; |
|
| 3596 | - $item_taxes[ $name ]['recurring_tax'] += $tax['recurring_tax']; |
|
| 3595 | + $item_taxes[ $name ]['initial_tax'] += $tax['initial_tax']; |
|
| 3596 | + $item_taxes[ $name ]['recurring_tax'] += $tax['recurring_tax']; |
|
| 3597 | 3597 | |
| 3598 | - } |
|
| 3598 | + } |
|
| 3599 | 3599 | |
| 3600 | - } |
|
| 3600 | + } |
|
| 3601 | 3601 | |
| 3602 | - $item_taxes = array_replace( $this->get_taxes(), $item_taxes ); |
|
| 3603 | - $this->set_taxes( $item_taxes ); |
|
| 3602 | + $item_taxes = array_replace( $this->get_taxes(), $item_taxes ); |
|
| 3603 | + $this->set_taxes( $item_taxes ); |
|
| 3604 | 3604 | |
| 3605 | - $initial_tax = array_sum( wp_list_pluck( $item_taxes, 'initial_tax' ) ); |
|
| 3606 | - $recurring_tax = array_sum( wp_list_pluck( $item_taxes, 'recurring_tax' ) ); |
|
| 3605 | + $initial_tax = array_sum( wp_list_pluck( $item_taxes, 'initial_tax' ) ); |
|
| 3606 | + $recurring_tax = array_sum( wp_list_pluck( $item_taxes, 'recurring_tax' ) ); |
|
| 3607 | 3607 | |
| 3608 | - $current = $this->is_renewal() ? $recurring_tax : $initial_tax; |
|
| 3608 | + $current = $this->is_renewal() ? $recurring_tax : $initial_tax; |
|
| 3609 | 3609 | |
| 3610 | - $this->totals['tax'] = array( |
|
| 3611 | - 'initial' => $initial_tax, |
|
| 3612 | - 'recurring' => $recurring_tax, |
|
| 3613 | - ); |
|
| 3610 | + $this->totals['tax'] = array( |
|
| 3611 | + 'initial' => $initial_tax, |
|
| 3612 | + 'recurring' => $recurring_tax, |
|
| 3613 | + ); |
|
| 3614 | 3614 | |
| 3615 | - } |
|
| 3615 | + } |
|
| 3616 | 3616 | |
| 3617 | - $this->set_total_tax( $current ); |
|
| 3617 | + $this->set_total_tax( $current ); |
|
| 3618 | 3618 | |
| 3619 | - return $current; |
|
| 3619 | + return $current; |
|
| 3620 | 3620 | |
| 3621 | 3621 | } |
| 3622 | 3622 | |
| 3623 | 3623 | /** |
| 3624 | - * Recalculates the invoice fees total. |
|
| 3625 | - * |
|
| 3626 | - * @since 1.0.19 |
|
| 3627 | - * @return float The recalculated fee |
|
| 3628 | - */ |
|
| 3629 | - public function recalculate_total_fees() { |
|
| 3630 | - $fees = $this->get_fees(); |
|
| 3631 | - $fee = 0; |
|
| 3632 | - $recurring = 0; |
|
| 3624 | + * Recalculates the invoice fees total. |
|
| 3625 | + * |
|
| 3626 | + * @since 1.0.19 |
|
| 3627 | + * @return float The recalculated fee |
|
| 3628 | + */ |
|
| 3629 | + public function recalculate_total_fees() { |
|
| 3630 | + $fees = $this->get_fees(); |
|
| 3631 | + $fee = 0; |
|
| 3632 | + $recurring = 0; |
|
| 3633 | 3633 | |
| 3634 | 3634 | foreach ( $fees as $data ) { |
| 3635 | - $fee += wpinv_sanitize_amount( $data['initial_fee'] ); |
|
| 3636 | - $recurring += wpinv_sanitize_amount( $data['recurring_fee'] ); |
|
| 3637 | - } |
|
| 3635 | + $fee += wpinv_sanitize_amount( $data['initial_fee'] ); |
|
| 3636 | + $recurring += wpinv_sanitize_amount( $data['recurring_fee'] ); |
|
| 3637 | + } |
|
| 3638 | 3638 | |
| 3639 | - $current = $this->is_renewal() ? $recurring : $fee; |
|
| 3640 | - $this->set_total_fees( $current ); |
|
| 3639 | + $current = $this->is_renewal() ? $recurring : $fee; |
|
| 3640 | + $this->set_total_fees( $current ); |
|
| 3641 | 3641 | |
| 3642 | - $this->totals['fee'] = array( |
|
| 3643 | - 'initial' => $fee, |
|
| 3644 | - 'recurring' => $recurring, |
|
| 3645 | - ); |
|
| 3642 | + $this->totals['fee'] = array( |
|
| 3643 | + 'initial' => $fee, |
|
| 3644 | + 'recurring' => $recurring, |
|
| 3645 | + ); |
|
| 3646 | 3646 | |
| 3647 | 3647 | $this->set_total_fees( $fee ); |
| 3648 | 3648 | return $current; |
| 3649 | 3649 | } |
| 3650 | 3650 | |
| 3651 | 3651 | /** |
| 3652 | - * Recalculates the invoice total. |
|
| 3653 | - * |
|
| 3654 | - * @since 1.0.19 |
|
| 3652 | + * Recalculates the invoice total. |
|
| 3653 | + * |
|
| 3654 | + * @since 1.0.19 |
|
| 3655 | 3655 | * @return float The invoice total |
| 3656 | - */ |
|
| 3657 | - public function recalculate_total() { |
|
| 3656 | + */ |
|
| 3657 | + public function recalculate_total() { |
|
| 3658 | 3658 | $this->recalculate_total_fees(); |
| 3659 | 3659 | $this->recalculate_total_discount(); |
| 3660 | - $this->recalculate_total_tax(); |
|
| 3661 | - $this->recalculate_subtotal(); |
|
| 3662 | - $this->set_total( $this->get_total_tax( 'edit' ) + $this->get_total_fees( 'edit' ) + $this->get_subtotal( 'edit' ) - $this->get_total_discount( 'edit' ) ); |
|
| 3663 | - return $this->get_total(); |
|
| 3664 | - } |
|
| 3665 | - |
|
| 3666 | - /** |
|
| 3667 | - * @deprecated |
|
| 3668 | - */ |
|
| 3660 | + $this->recalculate_total_tax(); |
|
| 3661 | + $this->recalculate_subtotal(); |
|
| 3662 | + $this->set_total( $this->get_total_tax( 'edit' ) + $this->get_total_fees( 'edit' ) + $this->get_subtotal( 'edit' ) - $this->get_total_discount( 'edit' ) ); |
|
| 3663 | + return $this->get_total(); |
|
| 3664 | + } |
|
| 3665 | + |
|
| 3666 | + /** |
|
| 3667 | + * @deprecated |
|
| 3668 | + */ |
|
| 3669 | 3669 | public function recalculate_totals() { |
| 3670 | 3670 | $this->recalculate_total(); |
| 3671 | 3671 | $this->save( true ); |
@@ -3679,22 +3679,22 @@ discard block |
||
| 3679 | 3679 | return $this->get_data(); |
| 3680 | 3680 | } |
| 3681 | 3681 | |
| 3682 | - /** |
|
| 3682 | + /** |
|
| 3683 | 3683 | * Adds a system note to an invoice. |
| 3684 | 3684 | * |
| 3685 | 3685 | * @param string $note The note being added. |
| 3686 | - * @return int|false The new note's ID on success, false on failure. |
|
| 3686 | + * @return int|false The new note's ID on success, false on failure. |
|
| 3687 | 3687 | * |
| 3688 | 3688 | */ |
| 3689 | 3689 | public function add_system_note( $note ) { |
| 3690 | - return $this->add_note( $note, false, false, true ); |
|
| 3691 | - } |
|
| 3690 | + return $this->add_note( $note, false, false, true ); |
|
| 3691 | + } |
|
| 3692 | 3692 | |
| 3693 | 3693 | /** |
| 3694 | 3694 | * Adds a note to an invoice. |
| 3695 | 3695 | * |
| 3696 | 3696 | * @param string $note The note being added. |
| 3697 | - * @return int|false The new note's ID on success, false on failure. |
|
| 3697 | + * @return int|false The new note's ID on success, false on failure. |
|
| 3698 | 3698 | * |
| 3699 | 3699 | */ |
| 3700 | 3700 | public function add_note( $note = '', $customer_type = false, $added_by_user = false, $system = false ) { |
@@ -3704,21 +3704,21 @@ discard block |
||
| 3704 | 3704 | return false; |
| 3705 | 3705 | } |
| 3706 | 3706 | |
| 3707 | - $author = 'System'; |
|
| 3708 | - $author_email = '[email protected]'; |
|
| 3707 | + $author = 'System'; |
|
| 3708 | + $author_email = '[email protected]'; |
|
| 3709 | 3709 | |
| 3710 | - // If this is an admin comment or it has been added by the user. |
|
| 3711 | - if ( is_user_logged_in() && ( ! $system || $added_by_user ) ) { |
|
| 3712 | - $user = get_user_by( 'id', get_current_user_id() ); |
|
| 3710 | + // If this is an admin comment or it has been added by the user. |
|
| 3711 | + if ( is_user_logged_in() && ( ! $system || $added_by_user ) ) { |
|
| 3712 | + $user = get_user_by( 'id', get_current_user_id() ); |
|
| 3713 | 3713 | $author = $user->display_name; |
| 3714 | 3714 | $author_email = $user->user_email; |
| 3715 | - } |
|
| 3715 | + } |
|
| 3716 | 3716 | |
| 3717 | - return getpaid_notes()->add_invoice_note( $this, $note, $author, $author_email, $customer_type ); |
|
| 3717 | + return getpaid_notes()->add_invoice_note( $this, $note, $author, $author_email, $customer_type ); |
|
| 3718 | 3718 | |
| 3719 | - } |
|
| 3719 | + } |
|
| 3720 | 3720 | |
| 3721 | - /** |
|
| 3721 | + /** |
|
| 3722 | 3722 | * Generates a unique key for the invoice. |
| 3723 | 3723 | */ |
| 3724 | 3724 | public function generate_key( $string = '' ) { |
@@ -3738,113 +3738,113 @@ discard block |
||
| 3738 | 3738 | $number = wpinv_get_next_invoice_number( $this->get_post_type() ); |
| 3739 | 3739 | } |
| 3740 | 3740 | |
| 3741 | - return wpinv_format_invoice_number( $number, $this->get_post_type() ); |
|
| 3742 | - |
|
| 3743 | - } |
|
| 3744 | - |
|
| 3745 | - /** |
|
| 3746 | - * Handle the status transition. |
|
| 3747 | - */ |
|
| 3748 | - protected function status_transition() { |
|
| 3749 | - $status_transition = $this->status_transition; |
|
| 3750 | - |
|
| 3751 | - // Reset status transition variable. |
|
| 3752 | - $this->status_transition = false; |
|
| 3741 | + return wpinv_format_invoice_number( $number, $this->get_post_type() ); |
|
| 3753 | 3742 | |
| 3754 | - if ( $status_transition ) { |
|
| 3755 | - try { |
|
| 3756 | - |
|
| 3757 | - // Fire a hook for the status change. |
|
| 3758 | - do_action( 'getpaid_invoice_status_' . $status_transition['to'], $this, $status_transition ); |
|
| 3759 | - |
|
| 3760 | - // @deprecated this is deprecated and will be removed in the future. |
|
| 3761 | - do_action( 'wpinv_status_' . $status_transition['to'], $this->get_id(), $status_transition['from'] ); |
|
| 3762 | - |
|
| 3763 | - if ( ! empty( $status_transition['from'] ) ) { |
|
| 3764 | - |
|
| 3765 | - /* translators: 1: old invoice status 2: new invoice status */ |
|
| 3766 | - $transition_note = sprintf( __( 'Status changed from %1$s to %2$s.', 'invoicing' ), wpinv_status_nicename( $status_transition['from'], $this ), wpinv_status_nicename( $status_transition['to'], $this ) ); |
|
| 3767 | - |
|
| 3768 | - // Fire another hook. |
|
| 3769 | - do_action( 'getpaid_invoice_status_' . $status_transition['from'] . '_to_' . $status_transition['to'], $this ); |
|
| 3770 | - do_action( 'getpaid_invoice_status_changed', $this, $status_transition['from'], $status_transition['to'] ); |
|
| 3771 | - |
|
| 3772 | - // @deprecated this is deprecated and will be removed in the future. |
|
| 3773 | - do_action( 'wpinv_status_' . $status_transition['from'] . '_to_' . $status_transition['to'], $this->get_id(), $status_transition['from'] ); |
|
| 3774 | - |
|
| 3775 | - // Note the transition occurred. |
|
| 3776 | - $this->add_note( trim( $status_transition['note'] . ' ' . $transition_note ), false, $status_transition['manual'] ); |
|
| 3777 | - |
|
| 3778 | - // Work out if this was for a payment, and trigger a payment_status hook instead. |
|
| 3779 | - if ( |
|
| 3780 | - in_array( $status_transition['from'], array( 'wpi-cancelled', 'wpi-pending', 'wpi-failed', 'wpi-refunded', 'wpi-onhold' ), true ) |
|
| 3781 | - && in_array( $status_transition['to'], array( 'publish', 'wpi-processing', 'wpi-renewal' ), true ) |
|
| 3782 | - ) { |
|
| 3783 | - do_action( 'getpaid_invoice_payment_status_changed', $this, $status_transition ); |
|
| 3784 | - } |
|
| 3785 | - |
|
| 3786 | - // Work out if this was for a payment reversal, and trigger a payment_status_reversed hook instead. |
|
| 3787 | - if ( |
|
| 3788 | - in_array( $status_transition['from'], array( 'publish', 'wpi-processing', 'wpi-renewal' ), true ) |
|
| 3789 | - && in_array( $status_transition['to'], array( 'wpi-cancelled', 'wpi-pending', 'wpi-failed', 'wpi-refunded', 'wpi-onhold' ), true ) |
|
| 3790 | - ) { |
|
| 3791 | - do_action( 'getpaid_invoice_payment_status_reversed', $this, $status_transition ); |
|
| 3792 | - } |
|
| 3793 | - } else { |
|
| 3794 | - /* translators: %s: new invoice status */ |
|
| 3795 | - $transition_note = sprintf( __( 'Status set to %s.', 'invoicing' ), wpinv_status_nicename( $status_transition['to'], $this ) ); |
|
| 3796 | - |
|
| 3797 | - // Note the transition occurred. |
|
| 3798 | - $this->add_note( trim( $status_transition['note'] . ' ' . $transition_note ), 0, $status_transition['manual'] ); |
|
| 3743 | + } |
|
| 3799 | 3744 | |
| 3800 | - } |
|
| 3801 | - } catch ( Exception $e ) { |
|
| 3802 | - $this->add_note( __( 'Error during status transition.', 'invoicing' ) . ' ' . $e->getMessage() ); |
|
| 3803 | - } |
|
| 3804 | - } |
|
| 3805 | - } |
|
| 3745 | + /** |
|
| 3746 | + * Handle the status transition. |
|
| 3747 | + */ |
|
| 3748 | + protected function status_transition() { |
|
| 3749 | + $status_transition = $this->status_transition; |
|
| 3750 | + |
|
| 3751 | + // Reset status transition variable. |
|
| 3752 | + $this->status_transition = false; |
|
| 3753 | + |
|
| 3754 | + if ( $status_transition ) { |
|
| 3755 | + try { |
|
| 3756 | + |
|
| 3757 | + // Fire a hook for the status change. |
|
| 3758 | + do_action( 'getpaid_invoice_status_' . $status_transition['to'], $this, $status_transition ); |
|
| 3759 | + |
|
| 3760 | + // @deprecated this is deprecated and will be removed in the future. |
|
| 3761 | + do_action( 'wpinv_status_' . $status_transition['to'], $this->get_id(), $status_transition['from'] ); |
|
| 3762 | + |
|
| 3763 | + if ( ! empty( $status_transition['from'] ) ) { |
|
| 3764 | + |
|
| 3765 | + /* translators: 1: old invoice status 2: new invoice status */ |
|
| 3766 | + $transition_note = sprintf( __( 'Status changed from %1$s to %2$s.', 'invoicing' ), wpinv_status_nicename( $status_transition['from'], $this ), wpinv_status_nicename( $status_transition['to'], $this ) ); |
|
| 3767 | + |
|
| 3768 | + // Fire another hook. |
|
| 3769 | + do_action( 'getpaid_invoice_status_' . $status_transition['from'] . '_to_' . $status_transition['to'], $this ); |
|
| 3770 | + do_action( 'getpaid_invoice_status_changed', $this, $status_transition['from'], $status_transition['to'] ); |
|
| 3771 | + |
|
| 3772 | + // @deprecated this is deprecated and will be removed in the future. |
|
| 3773 | + do_action( 'wpinv_status_' . $status_transition['from'] . '_to_' . $status_transition['to'], $this->get_id(), $status_transition['from'] ); |
|
| 3774 | + |
|
| 3775 | + // Note the transition occurred. |
|
| 3776 | + $this->add_note( trim( $status_transition['note'] . ' ' . $transition_note ), false, $status_transition['manual'] ); |
|
| 3777 | + |
|
| 3778 | + // Work out if this was for a payment, and trigger a payment_status hook instead. |
|
| 3779 | + if ( |
|
| 3780 | + in_array( $status_transition['from'], array( 'wpi-cancelled', 'wpi-pending', 'wpi-failed', 'wpi-refunded', 'wpi-onhold' ), true ) |
|
| 3781 | + && in_array( $status_transition['to'], array( 'publish', 'wpi-processing', 'wpi-renewal' ), true ) |
|
| 3782 | + ) { |
|
| 3783 | + do_action( 'getpaid_invoice_payment_status_changed', $this, $status_transition ); |
|
| 3784 | + } |
|
| 3785 | + |
|
| 3786 | + // Work out if this was for a payment reversal, and trigger a payment_status_reversed hook instead. |
|
| 3787 | + if ( |
|
| 3788 | + in_array( $status_transition['from'], array( 'publish', 'wpi-processing', 'wpi-renewal' ), true ) |
|
| 3789 | + && in_array( $status_transition['to'], array( 'wpi-cancelled', 'wpi-pending', 'wpi-failed', 'wpi-refunded', 'wpi-onhold' ), true ) |
|
| 3790 | + ) { |
|
| 3791 | + do_action( 'getpaid_invoice_payment_status_reversed', $this, $status_transition ); |
|
| 3792 | + } |
|
| 3793 | + } else { |
|
| 3794 | + /* translators: %s: new invoice status */ |
|
| 3795 | + $transition_note = sprintf( __( 'Status set to %s.', 'invoicing' ), wpinv_status_nicename( $status_transition['to'], $this ) ); |
|
| 3796 | + |
|
| 3797 | + // Note the transition occurred. |
|
| 3798 | + $this->add_note( trim( $status_transition['note'] . ' ' . $transition_note ), 0, $status_transition['manual'] ); |
|
| 3799 | + |
|
| 3800 | + } |
|
| 3801 | + } catch ( Exception $e ) { |
|
| 3802 | + $this->add_note( __( 'Error during status transition.', 'invoicing' ) . ' ' . $e->getMessage() ); |
|
| 3803 | + } |
|
| 3804 | + } |
|
| 3805 | + } |
|
| 3806 | 3806 | |
| 3807 | - /** |
|
| 3808 | - * Updates an invoice status. |
|
| 3809 | - */ |
|
| 3810 | - public function update_status( $new_status = false, $note = '', $manual = false ) { |
|
| 3807 | + /** |
|
| 3808 | + * Updates an invoice status. |
|
| 3809 | + */ |
|
| 3810 | + public function update_status( $new_status = false, $note = '', $manual = false ) { |
|
| 3811 | 3811 | |
| 3812 | - // Fires before updating a status. |
|
| 3813 | - do_action( 'wpinv_before_invoice_status_change', $this->get_id(), $new_status, $this->get_status( 'edit' ) ); |
|
| 3812 | + // Fires before updating a status. |
|
| 3813 | + do_action( 'wpinv_before_invoice_status_change', $this->get_id(), $new_status, $this->get_status( 'edit' ) ); |
|
| 3814 | 3814 | |
| 3815 | - // Update the status. |
|
| 3816 | - $this->set_status( $new_status, $note, $manual ); |
|
| 3815 | + // Update the status. |
|
| 3816 | + $this->set_status( $new_status, $note, $manual ); |
|
| 3817 | 3817 | |
| 3818 | - // Save the order. |
|
| 3819 | - return $this->save(); |
|
| 3818 | + // Save the order. |
|
| 3819 | + return $this->save(); |
|
| 3820 | 3820 | |
| 3821 | - } |
|
| 3821 | + } |
|
| 3822 | 3822 | |
| 3823 | - /** |
|
| 3824 | - * @deprecated |
|
| 3825 | - */ |
|
| 3826 | - public function refresh_item_ids() { |
|
| 3823 | + /** |
|
| 3824 | + * @deprecated |
|
| 3825 | + */ |
|
| 3826 | + public function refresh_item_ids() { |
|
| 3827 | 3827 | $item_ids = implode( ',', array_unique( wp_list_pluck( $this->get_cart_details(), 'item_id' ) ) ); |
| 3828 | 3828 | update_post_meta( $this->get_id(), '_wpinv_item_ids', $item_ids ); |
| 3829 | - } |
|
| 3829 | + } |
|
| 3830 | 3830 | |
| 3831 | - /** |
|
| 3832 | - * @deprecated |
|
| 3833 | - */ |
|
| 3834 | - public function update_items( $temp = false ) { |
|
| 3831 | + /** |
|
| 3832 | + * @deprecated |
|
| 3833 | + */ |
|
| 3834 | + public function update_items( $temp = false ) { |
|
| 3835 | 3835 | |
| 3836 | - $this->set_items( $this->get_items() ); |
|
| 3836 | + $this->set_items( $this->get_items() ); |
|
| 3837 | 3837 | |
| 3838 | - if ( ! $temp ) { |
|
| 3839 | - $this->save(); |
|
| 3840 | - } |
|
| 3838 | + if ( ! $temp ) { |
|
| 3839 | + $this->save(); |
|
| 3840 | + } |
|
| 3841 | 3841 | |
| 3842 | 3842 | return $this; |
| 3843 | - } |
|
| 3843 | + } |
|
| 3844 | 3844 | |
| 3845 | - /** |
|
| 3846 | - * @deprecated |
|
| 3847 | - */ |
|
| 3845 | + /** |
|
| 3846 | + * @deprecated |
|
| 3847 | + */ |
|
| 3848 | 3848 | public function validate_discount() { |
| 3849 | 3849 | |
| 3850 | 3850 | $discount_code = $this->get_discount_code(); |
@@ -3860,93 +3860,93 @@ discard block |
||
| 3860 | 3860 | |
| 3861 | 3861 | } |
| 3862 | 3862 | |
| 3863 | - /** |
|
| 3864 | - * Refunds an invoice. |
|
| 3865 | - */ |
|
| 3863 | + /** |
|
| 3864 | + * Refunds an invoice. |
|
| 3865 | + */ |
|
| 3866 | 3866 | public function refund() { |
| 3867 | - $this->set_status( 'wpi-refunded' ); |
|
| 3867 | + $this->set_status( 'wpi-refunded' ); |
|
| 3868 | 3868 | $this->save(); |
| 3869 | - } |
|
| 3869 | + } |
|
| 3870 | 3870 | |
| 3871 | - /** |
|
| 3872 | - * Marks an invoice as paid. |
|
| 3873 | - * |
|
| 3874 | - * @param string $transaction_id |
|
| 3875 | - */ |
|
| 3871 | + /** |
|
| 3872 | + * Marks an invoice as paid. |
|
| 3873 | + * |
|
| 3874 | + * @param string $transaction_id |
|
| 3875 | + */ |
|
| 3876 | 3876 | public function mark_paid( $transaction_id = null, $note = '' ) { |
| 3877 | 3877 | |
| 3878 | - // Set the transaction id. |
|
| 3879 | - if ( empty( $transaction_id ) ) { |
|
| 3880 | - $transaction_id = $this->generate_key('trans_'); |
|
| 3881 | - } |
|
| 3878 | + // Set the transaction id. |
|
| 3879 | + if ( empty( $transaction_id ) ) { |
|
| 3880 | + $transaction_id = $this->generate_key('trans_'); |
|
| 3881 | + } |
|
| 3882 | 3882 | |
| 3883 | - if ( ! $this->get_transaction_id() ) { |
|
| 3884 | - $this->set_transaction_id( $transaction_id ); |
|
| 3885 | - } |
|
| 3883 | + if ( ! $this->get_transaction_id() ) { |
|
| 3884 | + $this->set_transaction_id( $transaction_id ); |
|
| 3885 | + } |
|
| 3886 | 3886 | |
| 3887 | - if ( $this->is_paid() && 'wpi-processing' != $this->get_status() ) { |
|
| 3888 | - return $this->save(); |
|
| 3889 | - } |
|
| 3887 | + if ( $this->is_paid() && 'wpi-processing' != $this->get_status() ) { |
|
| 3888 | + return $this->save(); |
|
| 3889 | + } |
|
| 3890 | 3890 | |
| 3891 | - // Set the completed date. |
|
| 3892 | - $this->set_date_completed( current_time( 'mysql' ) ); |
|
| 3891 | + // Set the completed date. |
|
| 3892 | + $this->set_date_completed( current_time( 'mysql' ) ); |
|
| 3893 | 3893 | |
| 3894 | - // Set the new status. |
|
| 3895 | - $gateway = sanitize_text_field( $this->get_gateway_title() ); |
|
| 3896 | - if ( $this->is_renewal() || ! $this->is_parent() ) { |
|
| 3894 | + // Set the new status. |
|
| 3895 | + $gateway = sanitize_text_field( $this->get_gateway_title() ); |
|
| 3896 | + if ( $this->is_renewal() || ! $this->is_parent() ) { |
|
| 3897 | 3897 | |
| 3898 | - $_note = wp_sprintf( __( 'Renewed via %s', 'invoicing' ), $gateway ); |
|
| 3899 | - $_note = $_note . empty( $note ) ? '' : " ($note)"; |
|
| 3898 | + $_note = wp_sprintf( __( 'Renewed via %s', 'invoicing' ), $gateway ); |
|
| 3899 | + $_note = $_note . empty( $note ) ? '' : " ($note)"; |
|
| 3900 | 3900 | |
| 3901 | - if ( 'none' == $this->get_gateway() ) { |
|
| 3902 | - $_note = $note; |
|
| 3903 | - } |
|
| 3901 | + if ( 'none' == $this->get_gateway() ) { |
|
| 3902 | + $_note = $note; |
|
| 3903 | + } |
|
| 3904 | 3904 | |
| 3905 | - $this->set_status( 'wpi-renewal', $_note ); |
|
| 3905 | + $this->set_status( 'wpi-renewal', $_note ); |
|
| 3906 | 3906 | |
| 3907 | - } else { |
|
| 3907 | + } else { |
|
| 3908 | 3908 | |
| 3909 | - $_note = wp_sprintf( __( 'Paid via %s', 'invoicing' ), $gateway ); |
|
| 3910 | - $_note = $_note . empty( $note ) ? '' : " ($note)"; |
|
| 3909 | + $_note = wp_sprintf( __( 'Paid via %s', 'invoicing' ), $gateway ); |
|
| 3910 | + $_note = $_note . empty( $note ) ? '' : " ($note)"; |
|
| 3911 | 3911 | |
| 3912 | - if ( 'none' == $this->get_gateway() ) { |
|
| 3913 | - $_note = $note; |
|
| 3914 | - } |
|
| 3912 | + if ( 'none' == $this->get_gateway() ) { |
|
| 3913 | + $_note = $note; |
|
| 3914 | + } |
|
| 3915 | 3915 | |
| 3916 | - $this->set_status( 'publish', $_note ); |
|
| 3916 | + $this->set_status( 'publish', $_note ); |
|
| 3917 | 3917 | |
| 3918 | - } |
|
| 3918 | + } |
|
| 3919 | 3919 | |
| 3920 | - // Set checkout mode. |
|
| 3921 | - $mode = wpinv_is_test_mode( $this->get_gateway() ) ? 'test' : 'live'; |
|
| 3922 | - $this->set_mode( $mode ); |
|
| 3920 | + // Set checkout mode. |
|
| 3921 | + $mode = wpinv_is_test_mode( $this->get_gateway() ) ? 'test' : 'live'; |
|
| 3922 | + $this->set_mode( $mode ); |
|
| 3923 | 3923 | |
| 3924 | - // Save the invoice. |
|
| 3924 | + // Save the invoice. |
|
| 3925 | 3925 | $this->save(); |
| 3926 | - } |
|
| 3927 | - |
|
| 3928 | - /** |
|
| 3929 | - * Save data to the database. |
|
| 3930 | - * |
|
| 3931 | - * @since 1.0.19 |
|
| 3932 | - * @return int invoice ID |
|
| 3933 | - */ |
|
| 3934 | - public function save() { |
|
| 3935 | - $this->maybe_set_date_paid(); |
|
| 3936 | - $this->maybe_set_key(); |
|
| 3937 | - parent::save(); |
|
| 3938 | - $this->clear_cache(); |
|
| 3939 | - $this->status_transition(); |
|
| 3940 | - return $this->get_id(); |
|
| 3941 | - } |
|
| 3942 | - |
|
| 3943 | - /** |
|
| 3926 | + } |
|
| 3927 | + |
|
| 3928 | + /** |
|
| 3929 | + * Save data to the database. |
|
| 3930 | + * |
|
| 3931 | + * @since 1.0.19 |
|
| 3932 | + * @return int invoice ID |
|
| 3933 | + */ |
|
| 3934 | + public function save() { |
|
| 3935 | + $this->maybe_set_date_paid(); |
|
| 3936 | + $this->maybe_set_key(); |
|
| 3937 | + parent::save(); |
|
| 3938 | + $this->clear_cache(); |
|
| 3939 | + $this->status_transition(); |
|
| 3940 | + return $this->get_id(); |
|
| 3941 | + } |
|
| 3942 | + |
|
| 3943 | + /** |
|
| 3944 | 3944 | * Clears the subscription's cache. |
| 3945 | 3945 | */ |
| 3946 | 3946 | public function clear_cache() { |
| 3947 | - wp_cache_delete( $this->get_key(), 'getpaid_invoice_keys_to_invoice_ids' ); |
|
| 3948 | - wp_cache_delete( $this->get_number(), 'getpaid_invoice_numbers_to_invoice_ids' ); |
|
| 3949 | - wp_cache_delete( $this->get_transaction_id(), 'getpaid_invoice_transaction_ids_to_invoice_ids' ); |
|
| 3950 | - } |
|
| 3947 | + wp_cache_delete( $this->get_key(), 'getpaid_invoice_keys_to_invoice_ids' ); |
|
| 3948 | + wp_cache_delete( $this->get_number(), 'getpaid_invoice_numbers_to_invoice_ids' ); |
|
| 3949 | + wp_cache_delete( $this->get_transaction_id(), 'getpaid_invoice_transaction_ids_to_invoice_ids' ); |
|
| 3950 | + } |
|
| 3951 | 3951 | |
| 3952 | 3952 | } |
@@ -14,90 +14,90 @@ 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; |
|
| 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 | 29 | |
| 30 | - /** |
|
| 31 | - * Reports components. |
|
| 32 | - * |
|
| 33 | - * @var GetPaid_Reports |
|
| 34 | - */ |
|
| 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_send_invoice', array( $this, 'send_customer_invoice' ) ); |
|
| 66 | - 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_send_invoice', array( $this, 'send_customer_invoice' ) ); |
|
| 66 | + add_action( 'getpaid_authenticated_admin_action_send_invoice_reminder', array( $this, 'send_customer_payment_reminder' ) ); |
|
| 67 | 67 | add_action( 'getpaid_authenticated_admin_action_reset_tax_rates', array( $this, 'admin_reset_tax_rates' ) ); |
| 68 | - add_action( 'getpaid_authenticated_admin_action_create_missing_pages', array( $this, 'admin_create_missing_pages' ) ); |
|
| 69 | - add_action( 'getpaid_authenticated_admin_action_create_missing_tables', array( $this, 'admin_create_missing_tables' ) ); |
|
| 70 | - add_action( 'getpaid_authenticated_admin_action_migrate_old_invoices', array( $this, 'admin_migrate_old_invoices' ) ); |
|
| 71 | - add_action( 'getpaid_authenticated_admin_action_download_customers', array( $this, 'admin_download_customers' ) ); |
|
| 72 | - add_action( 'getpaid_authenticated_admin_action_recalculate_discounts', array( $this, 'admin_recalculate_discounts' ) ); |
|
| 73 | - add_action( 'getpaid_authenticated_admin_action_install_plugin', array( $this, 'admin_install_plugin' ) ); |
|
| 74 | - add_action( 'getpaid_authenticated_admin_action_connect_gateway', array( $this, 'admin_connect_gateway' ) ); |
|
| 75 | - add_filter( 'admin_footer_text', array( $this, 'admin_footer_text' ) ); |
|
| 76 | - do_action( 'getpaid_init_admin_hooks', $this ); |
|
| 77 | - |
|
| 78 | - // Setup/welcome |
|
| 79 | - if ( ! empty( $_GET['page'] ) ) { |
|
| 80 | - switch ( $_GET['page'] ) { |
|
| 81 | - case 'gp-setup' : |
|
| 82 | - include_once( dirname( __FILE__ ) . '/class-getpaid-admin-setup-wizard.php' ); |
|
| 83 | - break; |
|
| 84 | - } |
|
| 85 | - } |
|
| 68 | + add_action( 'getpaid_authenticated_admin_action_create_missing_pages', array( $this, 'admin_create_missing_pages' ) ); |
|
| 69 | + add_action( 'getpaid_authenticated_admin_action_create_missing_tables', array( $this, 'admin_create_missing_tables' ) ); |
|
| 70 | + add_action( 'getpaid_authenticated_admin_action_migrate_old_invoices', array( $this, 'admin_migrate_old_invoices' ) ); |
|
| 71 | + add_action( 'getpaid_authenticated_admin_action_download_customers', array( $this, 'admin_download_customers' ) ); |
|
| 72 | + add_action( 'getpaid_authenticated_admin_action_recalculate_discounts', array( $this, 'admin_recalculate_discounts' ) ); |
|
| 73 | + add_action( 'getpaid_authenticated_admin_action_install_plugin', array( $this, 'admin_install_plugin' ) ); |
|
| 74 | + add_action( 'getpaid_authenticated_admin_action_connect_gateway', array( $this, 'admin_connect_gateway' ) ); |
|
| 75 | + add_filter( 'admin_footer_text', array( $this, 'admin_footer_text' ) ); |
|
| 76 | + do_action( 'getpaid_init_admin_hooks', $this ); |
|
| 77 | + |
|
| 78 | + // Setup/welcome |
|
| 79 | + if ( ! empty( $_GET['page'] ) ) { |
|
| 80 | + switch ( $_GET['page'] ) { |
|
| 81 | + case 'gp-setup' : |
|
| 82 | + include_once( dirname( __FILE__ ) . '/class-getpaid-admin-setup-wizard.php' ); |
|
| 83 | + break; |
|
| 84 | + } |
|
| 85 | + } |
|
| 86 | 86 | |
| 87 | 87 | } |
| 88 | 88 | |
| 89 | 89 | /** |
| 90 | - * Register admin scripts |
|
| 91 | - * |
|
| 92 | - */ |
|
| 93 | - public function enqeue_scripts() { |
|
| 90 | + * Register admin scripts |
|
| 91 | + * |
|
| 92 | + */ |
|
| 93 | + public function enqeue_scripts() { |
|
| 94 | 94 | global $current_screen, $pagenow; |
| 95 | 95 | |
| 96 | - $page = isset( $_GET['page'] ) ? $_GET['page'] : ''; |
|
| 97 | - $editing = $pagenow == 'post.php' || $pagenow == 'post-new.php'; |
|
| 96 | + $page = isset( $_GET['page'] ) ? $_GET['page'] : ''; |
|
| 97 | + $editing = $pagenow == 'post.php' || $pagenow == 'post-new.php'; |
|
| 98 | 98 | |
| 99 | 99 | if ( ! empty( $current_screen->post_type ) ) { |
| 100 | - $page = $current_screen->post_type; |
|
| 100 | + $page = $current_screen->post_type; |
|
| 101 | 101 | } |
| 102 | 102 | |
| 103 | 103 | // General styles. |
@@ -118,54 +118,54 @@ discard block |
||
| 118 | 118 | } |
| 119 | 119 | |
| 120 | 120 | // Payment form scripts. |
| 121 | - if ( 'wpi_payment_form' == $page && $editing ) { |
|
| 121 | + if ( 'wpi_payment_form' == $page && $editing ) { |
|
| 122 | 122 | $this->load_payment_form_scripts(); |
| 123 | 123 | } |
| 124 | 124 | |
| 125 | - if ( $page == 'wpinv-subscriptions' ) { |
|
| 126 | - wp_enqueue_script( 'postbox' ); |
|
| 127 | - } |
|
| 125 | + if ( $page == 'wpinv-subscriptions' ) { |
|
| 126 | + wp_enqueue_script( 'postbox' ); |
|
| 127 | + } |
|
| 128 | 128 | |
| 129 | 129 | } |
| 130 | 130 | |
| 131 | 131 | /** |
| 132 | - * Returns admin js translations. |
|
| 133 | - * |
|
| 134 | - */ |
|
| 135 | - protected function get_admin_i18() { |
|
| 132 | + * Returns admin js translations. |
|
| 133 | + * |
|
| 134 | + */ |
|
| 135 | + protected function get_admin_i18() { |
|
| 136 | 136 | global $post; |
| 137 | 137 | |
| 138 | - $date_range = array( |
|
| 139 | - 'period' => isset( $_GET['date_range'] ) ? sanitize_text_field( $_GET['date_range'] ) : '7_days' |
|
| 140 | - ); |
|
| 138 | + $date_range = array( |
|
| 139 | + 'period' => isset( $_GET['date_range'] ) ? sanitize_text_field( $_GET['date_range'] ) : '7_days' |
|
| 140 | + ); |
|
| 141 | 141 | |
| 142 | - if ( $date_range['period'] == 'custom' ) { |
|
| 142 | + if ( $date_range['period'] == 'custom' ) { |
|
| 143 | 143 | |
| 144 | - if ( isset( $_GET['from'] ) ) { |
|
| 145 | - $date_range[ 'after' ] = date( 'Y-m-d', strtotime( sanitize_text_field( $_GET['from'] ), current_time( 'timestamp' ) ) - DAY_IN_SECONDS ); |
|
| 146 | - } |
|
| 144 | + if ( isset( $_GET['from'] ) ) { |
|
| 145 | + $date_range[ 'after' ] = date( 'Y-m-d', strtotime( sanitize_text_field( $_GET['from'] ), current_time( 'timestamp' ) ) - DAY_IN_SECONDS ); |
|
| 146 | + } |
|
| 147 | 147 | |
| 148 | - if ( isset( $_GET['to'] ) ) { |
|
| 149 | - $date_range[ 'before' ] = date( 'Y-m-d', strtotime( sanitize_text_field( $_GET['to'] ), current_time( 'timestamp' ) ) + DAY_IN_SECONDS ); |
|
| 150 | - } |
|
| 148 | + if ( isset( $_GET['to'] ) ) { |
|
| 149 | + $date_range[ 'before' ] = date( 'Y-m-d', strtotime( sanitize_text_field( $_GET['to'] ), current_time( 'timestamp' ) ) + DAY_IN_SECONDS ); |
|
| 150 | + } |
|
| 151 | 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' ), |
|
| 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 | 192 | ); |
| 193 | 193 | |
| 194 | - if ( ! empty( $post ) && getpaid_is_invoice_post_type( $post->post_type ) ) { |
|
| 194 | + if ( ! empty( $post ) && getpaid_is_invoice_post_type( $post->post_type ) ) { |
|
| 195 | 195 | |
| 196 | - $invoice = new WPInv_Invoice( $post ); |
|
| 197 | - $i18n['save_invoice'] = sprintf( |
|
| 198 | - __( 'Save %s', 'invoicing' ), |
|
| 199 | - ucfirst( $invoice->get_invoice_quote_type() ) |
|
| 200 | - ); |
|
| 196 | + $invoice = new WPInv_Invoice( $post ); |
|
| 197 | + $i18n['save_invoice'] = sprintf( |
|
| 198 | + __( 'Save %s', 'invoicing' ), |
|
| 199 | + ucfirst( $invoice->get_invoice_quote_type() ) |
|
| 200 | + ); |
|
| 201 | 201 | |
| 202 | - $i18n['invoice_description'] = sprintf( |
|
| 203 | - __( '%s Description', 'invoicing' ), |
|
| 204 | - ucfirst( $invoice->get_invoice_quote_type() ) |
|
| 205 | - ); |
|
| 202 | + $i18n['invoice_description'] = sprintf( |
|
| 203 | + __( '%s Description', 'invoicing' ), |
|
| 204 | + ucfirst( $invoice->get_invoice_quote_type() ) |
|
| 205 | + ); |
|
| 206 | 206 | |
| 207 | - } |
|
| 208 | - return $i18n; |
|
| 209 | - } |
|
| 207 | + } |
|
| 208 | + return $i18n; |
|
| 209 | + } |
|
| 210 | 210 | |
| 211 | - /** |
|
| 212 | - * Change the admin footer text on GetPaid admin pages. |
|
| 213 | - * |
|
| 214 | - * @since 2.0.0 |
|
| 215 | - * @param string $footer_text |
|
| 216 | - * @return string |
|
| 217 | - */ |
|
| 218 | - public function admin_footer_text( $footer_text ) { |
|
| 219 | - global $current_screen; |
|
| 211 | + /** |
|
| 212 | + * Change the admin footer text on GetPaid admin pages. |
|
| 213 | + * |
|
| 214 | + * @since 2.0.0 |
|
| 215 | + * @param string $footer_text |
|
| 216 | + * @return string |
|
| 217 | + */ |
|
| 218 | + public function admin_footer_text( $footer_text ) { |
|
| 219 | + global $current_screen; |
|
| 220 | 220 | |
| 221 | - $page = isset( $_GET['page'] ) ? $_GET['page'] : ''; |
|
| 221 | + $page = isset( $_GET['page'] ) ? $_GET['page'] : ''; |
|
| 222 | 222 | |
| 223 | 223 | if ( ! empty( $current_screen->post_type ) ) { |
| 224 | - $page = $current_screen->post_type; |
|
| 224 | + $page = $current_screen->post_type; |
|
| 225 | 225 | } |
| 226 | 226 | |
| 227 | 227 | // General styles. |
| 228 | 228 | if ( apply_filters( 'getpaid_display_admin_footer_text', wpinv_current_user_can_manage_invoicing() ) && false !== stripos( $page, 'wpi' ) ) { |
| 229 | 229 | |
| 230 | - // Change the footer text |
|
| 231 | - if ( ! get_user_meta( get_current_user_id(), 'getpaid_admin_footer_text_rated', true ) ) { |
|
| 232 | - |
|
| 233 | - $rating_url = esc_url( |
|
| 234 | - wp_nonce_url( |
|
| 235 | - admin_url( 'admin.php?page=wpinv-reports&getpaid-admin-action=rate_plugin' ), |
|
| 236 | - 'getpaid-nonce', |
|
| 237 | - 'getpaid-nonce' |
|
| 238 | - ) |
|
| 239 | - ); |
|
| 240 | - |
|
| 241 | - $footer_text = sprintf( |
|
| 242 | - /* translators: %s: five stars */ |
|
| 243 | - __( 'If you like <strong>GetPaid</strong>, please leave us a %s rating. A huge thanks in advance!', 'invoicing' ), |
|
| 244 | - "<a href='$rating_url'>★★★★★</a>" |
|
| 245 | - ); |
|
| 246 | - |
|
| 247 | - } else { |
|
| 248 | - |
|
| 249 | - $footer_text = sprintf( |
|
| 250 | - /* translators: %s: GetPaid */ |
|
| 251 | - __( 'Thank you for using %s!', 'invoicing' ), |
|
| 252 | - "<a href='https://wpgetpaid.com/' target='_blank'><strong>GetPaid</strong></a>" |
|
| 253 | - ); |
|
| 254 | - |
|
| 255 | - } |
|
| 256 | - |
|
| 257 | - } |
|
| 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() { |
|
| 230 | + // Change the footer text |
|
| 231 | + if ( ! get_user_meta( get_current_user_id(), 'getpaid_admin_footer_text_rated', true ) ) { |
|
| 232 | + |
|
| 233 | + $rating_url = esc_url( |
|
| 234 | + wp_nonce_url( |
|
| 235 | + admin_url( 'admin.php?page=wpinv-reports&getpaid-admin-action=rate_plugin' ), |
|
| 236 | + 'getpaid-nonce', |
|
| 237 | + 'getpaid-nonce' |
|
| 238 | + ) |
|
| 239 | + ); |
|
| 240 | + |
|
| 241 | + $footer_text = sprintf( |
|
| 242 | + /* translators: %s: five stars */ |
|
| 243 | + __( 'If you like <strong>GetPaid</strong>, please leave us a %s rating. A huge thanks in advance!', 'invoicing' ), |
|
| 244 | + "<a href='$rating_url'>★★★★★</a>" |
|
| 245 | + ); |
|
| 246 | + |
|
| 247 | + } else { |
|
| 248 | + |
|
| 249 | + $footer_text = sprintf( |
|
| 250 | + /* translators: %s: GetPaid */ |
|
| 251 | + __( 'Thank you for using %s!', 'invoicing' ), |
|
| 252 | + "<a href='https://wpgetpaid.com/' target='_blank'><strong>GetPaid</strong></a>" |
|
| 253 | + ); |
|
| 254 | + |
|
| 255 | + } |
|
| 256 | + |
|
| 257 | + } |
|
| 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() { |
|
| 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,20 +305,20 @@ 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 | |
| 318 | 318 | $page = isset( $_GET['page'] ) ? $_GET['page'] : ''; |
| 319 | 319 | |
| 320 | 320 | if ( ! empty( $current_screen->post_type ) ) { |
| 321 | - $page = $current_screen->post_type; |
|
| 321 | + $page = $current_screen->post_type; |
|
| 322 | 322 | } |
| 323 | 323 | |
| 324 | 324 | if ( false !== stripos( $page, 'wpi' ) ) { |
@@ -327,68 +327,68 @@ discard block |
||
| 327 | 327 | |
| 328 | 328 | if ( in_array( $page, wpinv_parse_list( 'wpi_invoice wpi_payment_form wpi_quote' ) ) ) { |
| 329 | 329 | $classes .= ' wpinv-cpt wpinv'; |
| 330 | - } |
|
| 330 | + } |
|
| 331 | 331 | |
| 332 | - if ( getpaid_is_invoice_post_type( $page ) ) { |
|
| 332 | + if ( getpaid_is_invoice_post_type( $page ) ) { |
|
| 333 | 333 | $classes .= ' getpaid-is-invoice-cpt'; |
| 334 | 334 | } |
| 335 | 335 | |
| 336 | - return $classes; |
|
| 336 | + return $classes; |
|
| 337 | 337 | } |
| 338 | 338 | |
| 339 | 339 | /** |
| 340 | - * Maybe show the AyeCode Connect Notice. |
|
| 341 | - */ |
|
| 342 | - public function init_ayecode_connect_helper(){ |
|
| 340 | + * Maybe show the AyeCode Connect Notice. |
|
| 341 | + */ |
|
| 342 | + public function init_ayecode_connect_helper(){ |
|
| 343 | 343 | |
| 344 | - // Register with the deactivation survey class. |
|
| 345 | - AyeCode_Deactivation_Survey::instance(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' ), |
|
| 351 | - )); |
|
| 344 | + // Register with the deactivation survey class. |
|
| 345 | + AyeCode_Deactivation_Survey::instance(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' ), |
|
| 351 | + )); |
|
| 352 | 352 | |
| 353 | 353 | new AyeCode_Connect_Helper( |
| 354 | 354 | array( |
| 355 | - 'connect_title' => __("WP Invoicing - an AyeCode product!","invoicing"), |
|
| 356 | - 'connect_external' => __( "Please confirm you wish to connect your site?","invoicing" ), |
|
| 357 | - 'connect' => sprintf( __( "<strong>Have a license?</strong> Forget about entering license keys or downloading zip files, connect your site for instant access. %slearn more%s","invoicing" ),"<a href='https://ayecode.io/introducing-ayecode-connect/' target='_blank'>","</a>" ), |
|
| 358 | - 'connect_button' => __("Connect Site","invoicing"), |
|
| 359 | - 'connecting_button' => __("Connecting...","invoicing"), |
|
| 360 | - 'error_localhost' => __( "This service will only work with a live domain, not a localhost.","invoicing" ), |
|
| 361 | - 'error' => __( "Something went wrong, please refresh and try again.","invoicing" ), |
|
| 355 | + 'connect_title' => __("WP Invoicing - an AyeCode product!","invoicing"), |
|
| 356 | + 'connect_external' => __( "Please confirm you wish to connect your site?","invoicing" ), |
|
| 357 | + 'connect' => sprintf( __( "<strong>Have a license?</strong> Forget about entering license keys or downloading zip files, connect your site for instant access. %slearn more%s","invoicing" ),"<a href='https://ayecode.io/introducing-ayecode-connect/' target='_blank'>","</a>" ), |
|
| 358 | + 'connect_button' => __("Connect Site","invoicing"), |
|
| 359 | + 'connecting_button' => __("Connecting...","invoicing"), |
|
| 360 | + 'error_localhost' => __( "This service will only work with a live domain, not a localhost.","invoicing" ), |
|
| 361 | + 'error' => __( "Something went wrong, please refresh and try again.","invoicing" ), |
|
| 362 | 362 | ), |
| 363 | 363 | array( 'wpi-addons' ) |
| 364 | 364 | ); |
| 365 | 365 | |
| 366 | 366 | } |
| 367 | 367 | |
| 368 | - /** |
|
| 369 | - * Redirect users to settings on activation. |
|
| 370 | - * |
|
| 371 | - * @return void |
|
| 372 | - */ |
|
| 373 | - public function activation_redirect() { |
|
| 368 | + /** |
|
| 369 | + * Redirect users to settings on activation. |
|
| 370 | + * |
|
| 371 | + * @return void |
|
| 372 | + */ |
|
| 373 | + public function activation_redirect() { |
|
| 374 | 374 | |
| 375 | - $redirected = get_option( 'wpinv_redirected_to_settings' ); |
|
| 375 | + $redirected = get_option( 'wpinv_redirected_to_settings' ); |
|
| 376 | 376 | |
| 377 | - if ( ! empty( $redirected ) || wp_doing_ajax() || ! current_user_can( 'manage_options' ) ) { |
|
| 378 | - return; |
|
| 379 | - } |
|
| 377 | + if ( ! empty( $redirected ) || wp_doing_ajax() || ! current_user_can( 'manage_options' ) ) { |
|
| 378 | + return; |
|
| 379 | + } |
|
| 380 | 380 | |
| 381 | - // Bail if activating from network, or bulk |
|
| 382 | - if ( is_network_admin() || isset( $_GET['activate-multi'] ) ) { |
|
| 383 | - return; |
|
| 384 | - } |
|
| 381 | + // Bail if activating from network, or bulk |
|
| 382 | + if ( is_network_admin() || isset( $_GET['activate-multi'] ) ) { |
|
| 383 | + return; |
|
| 384 | + } |
|
| 385 | 385 | |
| 386 | - update_option( 'wpinv_redirected_to_settings', 1 ); |
|
| 386 | + update_option( 'wpinv_redirected_to_settings', 1 ); |
|
| 387 | 387 | |
| 388 | 388 | wp_safe_redirect( admin_url( 'index.php?page=gp-setup' ) ); |
| 389 | 389 | exit; |
| 390 | 390 | |
| 391 | - } |
|
| 391 | + } |
|
| 392 | 392 | |
| 393 | 393 | /** |
| 394 | 394 | * Fires an admin action after verifying that a user can fire them. |
@@ -402,498 +402,498 @@ discard block |
||
| 402 | 402 | |
| 403 | 403 | } |
| 404 | 404 | |
| 405 | - /** |
|
| 405 | + /** |
|
| 406 | 406 | * Sends a payment reminder to a customer. |
| 407 | - * |
|
| 408 | - * @param array $args |
|
| 407 | + * |
|
| 408 | + * @param array $args |
|
| 409 | 409 | */ |
| 410 | 410 | public function duplicate_payment_form( $args ) { |
| 411 | 411 | |
| 412 | - if ( empty( $args['form_id'] ) ) { |
|
| 413 | - return; |
|
| 414 | - } |
|
| 415 | - |
|
| 416 | - $form = new GetPaid_Payment_Form( $args['form_id'] ); |
|
| 412 | + if ( empty( $args['form_id'] ) ) { |
|
| 413 | + return; |
|
| 414 | + } |
|
| 417 | 415 | |
| 418 | - if ( ! $form->exists() ) { |
|
| 419 | - return; |
|
| 420 | - } |
|
| 416 | + $form = new GetPaid_Payment_Form( $args['form_id'] ); |
|
| 421 | 417 | |
| 422 | - $new_form = new GetPaid_Payment_Form(); |
|
| 423 | - $new_form->set_author( $form->get_author( 'edit' ) ); |
|
| 424 | - $new_form->set_name( $form->get_name( 'edit' ) . __( '(copy)', 'invoicing' ) ); |
|
| 425 | - $new_form->set_elements( $form->get_elements( 'edit' ) ); |
|
| 426 | - $new_form->set_items( $form->get_items( 'edit' ) ); |
|
| 427 | - $new_form->save(); |
|
| 418 | + if ( ! $form->exists() ) { |
|
| 419 | + return; |
|
| 420 | + } |
|
| 428 | 421 | |
| 429 | - if ( $new_form->exists() ) { |
|
| 430 | - $this->show_success( __( 'Form duplicated successfully', 'invoicing' ) ); |
|
| 431 | - $url = get_edit_post_link( $new_form->get_id(), 'edit' ); |
|
| 432 | - } else { |
|
| 433 | - $this->show_error( __( 'Unable to duplicate form', 'invoicing' ) ); |
|
| 434 | - $url = remove_query_arg( array( 'getpaid-admin-action', 'form_id', 'getpaid-nonce' ) ); |
|
| 435 | - } |
|
| 422 | + $new_form = new GetPaid_Payment_Form(); |
|
| 423 | + $new_form->set_author( $form->get_author( 'edit' ) ); |
|
| 424 | + $new_form->set_name( $form->get_name( 'edit' ) . __( '(copy)', 'invoicing' ) ); |
|
| 425 | + $new_form->set_elements( $form->get_elements( 'edit' ) ); |
|
| 426 | + $new_form->set_items( $form->get_items( 'edit' ) ); |
|
| 427 | + $new_form->save(); |
|
| 428 | + |
|
| 429 | + if ( $new_form->exists() ) { |
|
| 430 | + $this->show_success( __( 'Form duplicated successfully', 'invoicing' ) ); |
|
| 431 | + $url = get_edit_post_link( $new_form->get_id(), 'edit' ); |
|
| 432 | + } else { |
|
| 433 | + $this->show_error( __( 'Unable to duplicate form', 'invoicing' ) ); |
|
| 434 | + $url = remove_query_arg( array( 'getpaid-admin-action', 'form_id', 'getpaid-nonce' ) ); |
|
| 435 | + } |
|
| 436 | 436 | |
| 437 | - wp_redirect( $url ); |
|
| 438 | - exit; |
|
| 439 | - } |
|
| 437 | + wp_redirect( $url ); |
|
| 438 | + exit; |
|
| 439 | + } |
|
| 440 | 440 | |
| 441 | - /** |
|
| 441 | + /** |
|
| 442 | 442 | * Sends a payment reminder to a customer. |
| 443 | - * |
|
| 444 | - * @param array $args |
|
| 443 | + * |
|
| 444 | + * @param array $args |
|
| 445 | 445 | */ |
| 446 | 446 | public function send_customer_invoice( $args ) { |
| 447 | - $sent = getpaid()->get( 'invoice_emails' )->user_invoice( new WPInv_Invoice( $args['invoice_id'] ), true ); |
|
| 447 | + $sent = getpaid()->get( 'invoice_emails' )->user_invoice( new WPInv_Invoice( $args['invoice_id'] ), true ); |
|
| 448 | 448 | |
| 449 | - if ( $sent ) { |
|
| 450 | - $this->show_success( __( 'Invoice was successfully sent to the customer', 'invoicing' ) ); |
|
| 451 | - } else { |
|
| 452 | - $this->show_error( __( 'Could not send the invoice to the customer', 'invoicing' ) ); |
|
| 453 | - } |
|
| 449 | + if ( $sent ) { |
|
| 450 | + $this->show_success( __( 'Invoice was successfully sent to the customer', 'invoicing' ) ); |
|
| 451 | + } else { |
|
| 452 | + $this->show_error( __( 'Could not send the invoice to the customer', 'invoicing' ) ); |
|
| 453 | + } |
|
| 454 | 454 | |
| 455 | - wp_safe_redirect( remove_query_arg( array( 'getpaid-admin-action', 'getpaid-nonce', 'invoice_id' ) ) ); |
|
| 456 | - exit; |
|
| 457 | - } |
|
| 455 | + wp_safe_redirect( remove_query_arg( array( 'getpaid-admin-action', 'getpaid-nonce', 'invoice_id' ) ) ); |
|
| 456 | + exit; |
|
| 457 | + } |
|
| 458 | 458 | |
| 459 | - /** |
|
| 459 | + /** |
|
| 460 | 460 | * Sends a payment reminder to a customer. |
| 461 | - * |
|
| 462 | - * @param array $args |
|
| 461 | + * |
|
| 462 | + * @param array $args |
|
| 463 | 463 | */ |
| 464 | 464 | public function send_customer_payment_reminder( $args ) { |
| 465 | - $sent = getpaid()->get( 'invoice_emails' )->force_send_overdue_notice( new WPInv_Invoice( $args['invoice_id'] ) ); |
|
| 465 | + $sent = getpaid()->get( 'invoice_emails' )->force_send_overdue_notice( new WPInv_Invoice( $args['invoice_id'] ) ); |
|
| 466 | 466 | |
| 467 | - if ( $sent ) { |
|
| 468 | - $this->show_success( __( 'Payment reminder was successfully sent to the customer', 'invoicing' ) ); |
|
| 469 | - } else { |
|
| 470 | - $this->show_error( __( 'Could not sent payment reminder to the customer', 'invoicing' ) ); |
|
| 471 | - } |
|
| 467 | + if ( $sent ) { |
|
| 468 | + $this->show_success( __( 'Payment reminder was successfully sent to the customer', 'invoicing' ) ); |
|
| 469 | + } else { |
|
| 470 | + $this->show_error( __( 'Could not sent payment reminder to the customer', 'invoicing' ) ); |
|
| 471 | + } |
|
| 472 | 472 | |
| 473 | - wp_safe_redirect( remove_query_arg( array( 'getpaid-admin-action', 'getpaid-nonce', 'invoice_id' ) ) ); |
|
| 474 | - exit; |
|
| 475 | - } |
|
| 473 | + wp_safe_redirect( remove_query_arg( array( 'getpaid-admin-action', 'getpaid-nonce', 'invoice_id' ) ) ); |
|
| 474 | + exit; |
|
| 475 | + } |
|
| 476 | 476 | |
| 477 | - /** |
|
| 477 | + /** |
|
| 478 | 478 | * Resets tax rates. |
| 479 | - * |
|
| 479 | + * |
|
| 480 | 480 | */ |
| 481 | 481 | public function admin_reset_tax_rates() { |
| 482 | 482 | |
| 483 | - update_option( 'wpinv_tax_rates', wpinv_get_data( 'tax-rates' ) ); |
|
| 484 | - wp_safe_redirect( remove_query_arg( array( 'getpaid-admin-action', 'getpaid-nonce' ) ) ); |
|
| 485 | - exit; |
|
| 483 | + update_option( 'wpinv_tax_rates', wpinv_get_data( 'tax-rates' ) ); |
|
| 484 | + wp_safe_redirect( remove_query_arg( array( 'getpaid-admin-action', 'getpaid-nonce' ) ) ); |
|
| 485 | + exit; |
|
| 486 | 486 | |
| 487 | - } |
|
| 487 | + } |
|
| 488 | 488 | |
| 489 | - /** |
|
| 489 | + /** |
|
| 490 | 490 | * Resets admin pages. |
| 491 | - * |
|
| 491 | + * |
|
| 492 | 492 | */ |
| 493 | 493 | public function admin_create_missing_pages() { |
| 494 | - $installer = new GetPaid_Installer(); |
|
| 495 | - $installer->create_pages(); |
|
| 496 | - $this->show_success( __( 'GetPaid pages updated.', 'invoicing' ) ); |
|
| 497 | - wp_safe_redirect( remove_query_arg( array( 'getpaid-admin-action', 'getpaid-nonce' ) ) ); |
|
| 498 | - exit; |
|
| 499 | - } |
|
| 500 | - |
|
| 501 | - /** |
|
| 494 | + $installer = new GetPaid_Installer(); |
|
| 495 | + $installer->create_pages(); |
|
| 496 | + $this->show_success( __( 'GetPaid pages updated.', 'invoicing' ) ); |
|
| 497 | + wp_safe_redirect( remove_query_arg( array( 'getpaid-admin-action', 'getpaid-nonce' ) ) ); |
|
| 498 | + exit; |
|
| 499 | + } |
|
| 500 | + |
|
| 501 | + /** |
|
| 502 | 502 | * Creates an missing admin tables. |
| 503 | - * |
|
| 503 | + * |
|
| 504 | 504 | */ |
| 505 | 505 | public function admin_create_missing_tables() { |
| 506 | - global $wpdb; |
|
| 507 | - $installer = new GetPaid_Installer(); |
|
| 506 | + global $wpdb; |
|
| 507 | + $installer = new GetPaid_Installer(); |
|
| 508 | 508 | |
| 509 | - if ( $wpdb->get_var( "SHOW TABLES LIKE '{$wpdb->prefix}wpinv_subscriptions'" ) != $wpdb->prefix . 'wpinv_subscriptions' ) { |
|
| 510 | - $installer->create_subscriptions_table(); |
|
| 509 | + if ( $wpdb->get_var( "SHOW TABLES LIKE '{$wpdb->prefix}wpinv_subscriptions'" ) != $wpdb->prefix . 'wpinv_subscriptions' ) { |
|
| 510 | + $installer->create_subscriptions_table(); |
|
| 511 | 511 | |
| 512 | - if ( $wpdb->last_error !== '' ) { |
|
| 513 | - $this->show_error( __( 'Your GetPaid tables have been updated:', 'invoicing' ) . ' ' . $wpdb->last_error ); |
|
| 514 | - } |
|
| 515 | - } |
|
| 512 | + if ( $wpdb->last_error !== '' ) { |
|
| 513 | + $this->show_error( __( 'Your GetPaid tables have been updated:', 'invoicing' ) . ' ' . $wpdb->last_error ); |
|
| 514 | + } |
|
| 515 | + } |
|
| 516 | 516 | |
| 517 | - if ( $wpdb->get_var( "SHOW TABLES LIKE '{$wpdb->prefix}getpaid_invoices'" ) != $wpdb->prefix . 'getpaid_invoices' ) { |
|
| 518 | - $installer->create_invoices_table(); |
|
| 517 | + if ( $wpdb->get_var( "SHOW TABLES LIKE '{$wpdb->prefix}getpaid_invoices'" ) != $wpdb->prefix . 'getpaid_invoices' ) { |
|
| 518 | + $installer->create_invoices_table(); |
|
| 519 | 519 | |
| 520 | - if ( $wpdb->last_error !== '' ) { |
|
| 521 | - $this->show_error( __( 'Your GetPaid tables have been updated:', 'invoicing' ) . ' ' . $wpdb->last_error ); |
|
| 522 | - } |
|
| 523 | - } |
|
| 520 | + if ( $wpdb->last_error !== '' ) { |
|
| 521 | + $this->show_error( __( 'Your GetPaid tables have been updated:', 'invoicing' ) . ' ' . $wpdb->last_error ); |
|
| 522 | + } |
|
| 523 | + } |
|
| 524 | 524 | |
| 525 | - if ( $wpdb->get_var( "SHOW TABLES LIKE '{$wpdb->prefix}getpaid_invoice_items'" ) != $wpdb->prefix . 'getpaid_invoice_items' ) { |
|
| 526 | - $installer->create_invoice_items_table(); |
|
| 525 | + if ( $wpdb->get_var( "SHOW TABLES LIKE '{$wpdb->prefix}getpaid_invoice_items'" ) != $wpdb->prefix . 'getpaid_invoice_items' ) { |
|
| 526 | + $installer->create_invoice_items_table(); |
|
| 527 | 527 | |
| 528 | - if ( $wpdb->last_error !== '' ) { |
|
| 529 | - $this->show_error( __( 'Your GetPaid tables have been updated:', 'invoicing' ) . ' ' . $wpdb->last_error ); |
|
| 530 | - } |
|
| 531 | - } |
|
| 528 | + if ( $wpdb->last_error !== '' ) { |
|
| 529 | + $this->show_error( __( 'Your GetPaid tables have been updated:', 'invoicing' ) . ' ' . $wpdb->last_error ); |
|
| 530 | + } |
|
| 531 | + } |
|
| 532 | 532 | |
| 533 | - if ( ! $this->has_notices() ) { |
|
| 534 | - $this->show_success( __( 'Your GetPaid tables have been updated.', 'invoicing' ) ); |
|
| 535 | - } |
|
| 533 | + if ( ! $this->has_notices() ) { |
|
| 534 | + $this->show_success( __( 'Your GetPaid tables have been updated.', 'invoicing' ) ); |
|
| 535 | + } |
|
| 536 | 536 | |
| 537 | - wp_safe_redirect( remove_query_arg( array( 'getpaid-admin-action', 'getpaid-nonce' ) ) ); |
|
| 538 | - exit; |
|
| 539 | - } |
|
| 537 | + wp_safe_redirect( remove_query_arg( array( 'getpaid-admin-action', 'getpaid-nonce' ) ) ); |
|
| 538 | + exit; |
|
| 539 | + } |
|
| 540 | 540 | |
| 541 | - /** |
|
| 541 | + /** |
|
| 542 | 542 | * Migrates old invoices to the new database tables. |
| 543 | - * |
|
| 543 | + * |
|
| 544 | 544 | */ |
| 545 | 545 | public function admin_migrate_old_invoices() { |
| 546 | 546 | |
| 547 | - // Migrate the invoices. |
|
| 548 | - $installer = new GetPaid_Installer(); |
|
| 549 | - $installer->migrate_old_invoices(); |
|
| 547 | + // Migrate the invoices. |
|
| 548 | + $installer = new GetPaid_Installer(); |
|
| 549 | + $installer->migrate_old_invoices(); |
|
| 550 | 550 | |
| 551 | - // Show an admin message. |
|
| 552 | - $this->show_success( __( 'Your invoices have been migrated.', 'invoicing' ) ); |
|
| 551 | + // Show an admin message. |
|
| 552 | + $this->show_success( __( 'Your invoices have been migrated.', 'invoicing' ) ); |
|
| 553 | 553 | |
| 554 | - // Redirect the admin. |
|
| 555 | - wp_safe_redirect( remove_query_arg( array( 'getpaid-admin-action', 'getpaid-nonce' ) ) ); |
|
| 556 | - exit; |
|
| 554 | + // Redirect the admin. |
|
| 555 | + wp_safe_redirect( remove_query_arg( array( 'getpaid-admin-action', 'getpaid-nonce' ) ) ); |
|
| 556 | + exit; |
|
| 557 | 557 | |
| 558 | - } |
|
| 558 | + } |
|
| 559 | 559 | |
| 560 | - /** |
|
| 560 | + /** |
|
| 561 | 561 | * Download customers. |
| 562 | - * |
|
| 562 | + * |
|
| 563 | 563 | */ |
| 564 | 564 | public function admin_download_customers() { |
| 565 | - global $wpdb; |
|
| 565 | + global $wpdb; |
|
| 566 | 566 | |
| 567 | - $output = fopen( 'php://output', 'w' ) or die( __( 'Unsupported server', 'invoicing' ) ); |
|
| 567 | + $output = fopen( 'php://output', 'w' ) or die( __( 'Unsupported server', 'invoicing' ) ); |
|
| 568 | 568 | |
| 569 | - header( "Content-Type:text/csv" ); |
|
| 570 | - header( "Content-Disposition:attachment;filename=customers.csv" ); |
|
| 569 | + header( "Content-Type:text/csv" ); |
|
| 570 | + header( "Content-Disposition:attachment;filename=customers.csv" ); |
|
| 571 | 571 | |
| 572 | - $post_types = ''; |
|
| 572 | + $post_types = ''; |
|
| 573 | 573 | |
| 574 | - foreach ( array_keys( getpaid_get_invoice_post_types() ) as $post_type ) { |
|
| 575 | - $post_types .= $wpdb->prepare( "post_type=%s OR ", $post_type ); |
|
| 576 | - } |
|
| 574 | + foreach ( array_keys( getpaid_get_invoice_post_types() ) as $post_type ) { |
|
| 575 | + $post_types .= $wpdb->prepare( "post_type=%s OR ", $post_type ); |
|
| 576 | + } |
|
| 577 | 577 | |
| 578 | - $post_types = rtrim( $post_types, ' OR' ); |
|
| 578 | + $post_types = rtrim( $post_types, ' OR' ); |
|
| 579 | 579 | |
| 580 | - $customers = $wpdb->get_col( |
|
| 581 | - $wpdb->prepare( |
|
| 582 | - "SELECT DISTINCT( post_author ) FROM $wpdb->posts WHERE $post_types" |
|
| 583 | - ) |
|
| 584 | - ); |
|
| 580 | + $customers = $wpdb->get_col( |
|
| 581 | + $wpdb->prepare( |
|
| 582 | + "SELECT DISTINCT( post_author ) FROM $wpdb->posts WHERE $post_types" |
|
| 583 | + ) |
|
| 584 | + ); |
|
| 585 | 585 | |
| 586 | - $columns = array( |
|
| 587 | - 'name' => __( 'Name', 'invoicing' ), |
|
| 588 | - 'email' => __( 'Email', 'invoicing' ), |
|
| 589 | - 'country' => __( 'Country', 'invoicing' ), |
|
| 590 | - 'state' => __( 'State', 'invoicing' ), |
|
| 591 | - 'city' => __( 'City', 'invoicing' ), |
|
| 592 | - 'zip' => __( 'ZIP', 'invoicing' ), |
|
| 593 | - 'address' => __( 'Address', 'invoicing' ), |
|
| 594 | - 'phone' => __( 'Phone', 'invoicing' ), |
|
| 595 | - 'company' => __( 'Company', 'invoicing' ), |
|
| 596 | - 'company_id' => __( 'Company ID', 'invoicing' ), |
|
| 597 | - 'invoices' => __( 'Invoices', 'invoicing' ), |
|
| 598 | - 'total_raw' => __( 'Total Spend', 'invoicing' ), |
|
| 599 | - 'signup' => __( 'Date created', 'invoicing' ), |
|
| 600 | - ); |
|
| 586 | + $columns = array( |
|
| 587 | + 'name' => __( 'Name', 'invoicing' ), |
|
| 588 | + 'email' => __( 'Email', 'invoicing' ), |
|
| 589 | + 'country' => __( 'Country', 'invoicing' ), |
|
| 590 | + 'state' => __( 'State', 'invoicing' ), |
|
| 591 | + 'city' => __( 'City', 'invoicing' ), |
|
| 592 | + 'zip' => __( 'ZIP', 'invoicing' ), |
|
| 593 | + 'address' => __( 'Address', 'invoicing' ), |
|
| 594 | + 'phone' => __( 'Phone', 'invoicing' ), |
|
| 595 | + 'company' => __( 'Company', 'invoicing' ), |
|
| 596 | + 'company_id' => __( 'Company ID', 'invoicing' ), |
|
| 597 | + 'invoices' => __( 'Invoices', 'invoicing' ), |
|
| 598 | + 'total_raw' => __( 'Total Spend', 'invoicing' ), |
|
| 599 | + 'signup' => __( 'Date created', 'invoicing' ), |
|
| 600 | + ); |
|
| 601 | 601 | |
| 602 | - // Output the csv column headers. |
|
| 603 | - fputcsv( $output, array_values( $columns ) ); |
|
| 602 | + // Output the csv column headers. |
|
| 603 | + fputcsv( $output, array_values( $columns ) ); |
|
| 604 | 604 | |
| 605 | - // Loop through |
|
| 606 | - $table = new WPInv_Customers_Table(); |
|
| 607 | - foreach ( $customers as $customer_id ) { |
|
| 605 | + // Loop through |
|
| 606 | + $table = new WPInv_Customers_Table(); |
|
| 607 | + foreach ( $customers as $customer_id ) { |
|
| 608 | 608 | |
| 609 | - $user = get_user_by( 'id', $customer_id ); |
|
| 610 | - $row = array(); |
|
| 611 | - if ( empty( $user ) ) { |
|
| 612 | - continue; |
|
| 613 | - } |
|
| 609 | + $user = get_user_by( 'id', $customer_id ); |
|
| 610 | + $row = array(); |
|
| 611 | + if ( empty( $user ) ) { |
|
| 612 | + continue; |
|
| 613 | + } |
|
| 614 | 614 | |
| 615 | - foreach ( array_keys( $columns ) as $column ) { |
|
| 615 | + foreach ( array_keys( $columns ) as $column ) { |
|
| 616 | 616 | |
| 617 | - $method = 'column_' . $column; |
|
| 617 | + $method = 'column_' . $column; |
|
| 618 | 618 | |
| 619 | - if ( 'name' == $column ) { |
|
| 620 | - $value = esc_html( $user->display_name ); |
|
| 621 | - } else if( 'email' == $column ) { |
|
| 622 | - $value = sanitize_email( $user->user_email ); |
|
| 623 | - } else if ( is_callable( array( $table, $method ) ) ) { |
|
| 624 | - $value = strip_tags( $table->$method( $user ) ); |
|
| 625 | - } |
|
| 619 | + if ( 'name' == $column ) { |
|
| 620 | + $value = esc_html( $user->display_name ); |
|
| 621 | + } else if( 'email' == $column ) { |
|
| 622 | + $value = sanitize_email( $user->user_email ); |
|
| 623 | + } else if ( is_callable( array( $table, $method ) ) ) { |
|
| 624 | + $value = strip_tags( $table->$method( $user ) ); |
|
| 625 | + } |
|
| 626 | 626 | |
| 627 | - if ( empty( $value ) ) { |
|
| 628 | - $value = esc_html( get_user_meta( $user->ID, '_wpinv_' . $column, true ) ); |
|
| 629 | - } |
|
| 627 | + if ( empty( $value ) ) { |
|
| 628 | + $value = esc_html( get_user_meta( $user->ID, '_wpinv_' . $column, true ) ); |
|
| 629 | + } |
|
| 630 | 630 | |
| 631 | - $row[] = $value; |
|
| 631 | + $row[] = $value; |
|
| 632 | 632 | |
| 633 | - } |
|
| 633 | + } |
|
| 634 | 634 | |
| 635 | - fputcsv( $output, $row ); |
|
| 636 | - } |
|
| 635 | + fputcsv( $output, $row ); |
|
| 636 | + } |
|
| 637 | 637 | |
| 638 | - fclose( $output ); |
|
| 639 | - exit; |
|
| 638 | + fclose( $output ); |
|
| 639 | + exit; |
|
| 640 | 640 | |
| 641 | - } |
|
| 641 | + } |
|
| 642 | 642 | |
| 643 | - /** |
|
| 643 | + /** |
|
| 644 | 644 | * Installs a plugin. |
| 645 | - * |
|
| 646 | - * @param array $data |
|
| 645 | + * |
|
| 646 | + * @param array $data |
|
| 647 | 647 | */ |
| 648 | 648 | public function admin_install_plugin( $data ) { |
| 649 | 649 | |
| 650 | - if ( ! empty( $data['plugins'] ) ) { |
|
| 651 | - include_once ABSPATH . 'wp-admin/includes/class-wp-upgrader.php'; |
|
| 652 | - wp_cache_flush(); |
|
| 650 | + if ( ! empty( $data['plugins'] ) ) { |
|
| 651 | + include_once ABSPATH . 'wp-admin/includes/class-wp-upgrader.php'; |
|
| 652 | + wp_cache_flush(); |
|
| 653 | 653 | |
| 654 | - foreach ( $data['plugins'] as $slug => $file ) { |
|
| 655 | - $plugin_zip = esc_url( 'https://downloads.wordpress.org/plugin/' . $slug . '.latest-stable.zip' ); |
|
| 656 | - $upgrader = new Plugin_Upgrader( new Automatic_Upgrader_Skin() ); |
|
| 657 | - $installed = $upgrader->install( $plugin_zip ); |
|
| 654 | + foreach ( $data['plugins'] as $slug => $file ) { |
|
| 655 | + $plugin_zip = esc_url( 'https://downloads.wordpress.org/plugin/' . $slug . '.latest-stable.zip' ); |
|
| 656 | + $upgrader = new Plugin_Upgrader( new Automatic_Upgrader_Skin() ); |
|
| 657 | + $installed = $upgrader->install( $plugin_zip ); |
|
| 658 | 658 | |
| 659 | - if ( ! is_wp_error( $installed ) && $installed ) { |
|
| 660 | - activate_plugin( $file, '', false, true ); |
|
| 661 | - } else { |
|
| 662 | - wpinv_error_log( $upgrader->skin->get_upgrade_messages(), false ); |
|
| 663 | - } |
|
| 659 | + if ( ! is_wp_error( $installed ) && $installed ) { |
|
| 660 | + activate_plugin( $file, '', false, true ); |
|
| 661 | + } else { |
|
| 662 | + wpinv_error_log( $upgrader->skin->get_upgrade_messages(), false ); |
|
| 663 | + } |
|
| 664 | 664 | |
| 665 | - } |
|
| 665 | + } |
|
| 666 | 666 | |
| 667 | - } |
|
| 667 | + } |
|
| 668 | 668 | |
| 669 | - $redirect = isset( $data['redirect'] ) ? esc_url_raw( $data['redirect'] ) : admin_url( 'plugins.php' ); |
|
| 670 | - wp_safe_redirect( $redirect ); |
|
| 671 | - exit; |
|
| 669 | + $redirect = isset( $data['redirect'] ) ? esc_url_raw( $data['redirect'] ) : admin_url( 'plugins.php' ); |
|
| 670 | + wp_safe_redirect( $redirect ); |
|
| 671 | + exit; |
|
| 672 | 672 | |
| 673 | - } |
|
| 673 | + } |
|
| 674 | 674 | |
| 675 | - /** |
|
| 675 | + /** |
|
| 676 | 676 | * Connects a gateway. |
| 677 | - * |
|
| 678 | - * @param array $data |
|
| 677 | + * |
|
| 678 | + * @param array $data |
|
| 679 | 679 | */ |
| 680 | 680 | public function admin_connect_gateway( $data ) { |
| 681 | 681 | |
| 682 | - if ( ! empty( $data['plugin'] ) ) { |
|
| 682 | + if ( ! empty( $data['plugin'] ) ) { |
|
| 683 | 683 | |
| 684 | - $gateway = sanitize_key( $data['plugin'] ); |
|
| 685 | - $connect_url = apply_filters( "getpaid_get_{$gateway}_connect_url", false, $data ); |
|
| 684 | + $gateway = sanitize_key( $data['plugin'] ); |
|
| 685 | + $connect_url = apply_filters( "getpaid_get_{$gateway}_connect_url", false, $data ); |
|
| 686 | 686 | |
| 687 | - if ( ! empty( $connect_url ) ) { |
|
| 688 | - wp_redirect( $connect_url ); |
|
| 689 | - exit; |
|
| 690 | - } |
|
| 687 | + if ( ! empty( $connect_url ) ) { |
|
| 688 | + wp_redirect( $connect_url ); |
|
| 689 | + exit; |
|
| 690 | + } |
|
| 691 | 691 | |
| 692 | - if ( 'stripe' == $data['plugin'] ) { |
|
| 693 | - require_once ABSPATH . 'wp-admin/includes/plugin.php'; |
|
| 694 | - include_once ABSPATH . 'wp-admin/includes/class-wp-upgrader.php'; |
|
| 695 | - wp_cache_flush(); |
|
| 692 | + if ( 'stripe' == $data['plugin'] ) { |
|
| 693 | + require_once ABSPATH . 'wp-admin/includes/plugin.php'; |
|
| 694 | + include_once ABSPATH . 'wp-admin/includes/class-wp-upgrader.php'; |
|
| 695 | + wp_cache_flush(); |
|
| 696 | 696 | |
| 697 | - if ( ! array_key_exists( 'getpaid-stripe-payments/getpaid-stripe-payments.php', get_plugins() ) ) { |
|
| 698 | - $plugin_zip = esc_url( 'https://downloads.wordpress.org/plugin/getpaid-stripe-payments.latest-stable.zip' ); |
|
| 699 | - $upgrader = new Plugin_Upgrader( new Automatic_Upgrader_Skin() ); |
|
| 700 | - $upgrader->install( $plugin_zip ); |
|
| 701 | - } |
|
| 697 | + if ( ! array_key_exists( 'getpaid-stripe-payments/getpaid-stripe-payments.php', get_plugins() ) ) { |
|
| 698 | + $plugin_zip = esc_url( 'https://downloads.wordpress.org/plugin/getpaid-stripe-payments.latest-stable.zip' ); |
|
| 699 | + $upgrader = new Plugin_Upgrader( new Automatic_Upgrader_Skin() ); |
|
| 700 | + $upgrader->install( $plugin_zip ); |
|
| 701 | + } |
|
| 702 | 702 | |
| 703 | - activate_plugin( 'getpaid-stripe-payments/getpaid-stripe-payments.php', '', false, true ); |
|
| 704 | - } |
|
| 703 | + activate_plugin( 'getpaid-stripe-payments/getpaid-stripe-payments.php', '', false, true ); |
|
| 704 | + } |
|
| 705 | 705 | |
| 706 | - $connect_url = apply_filters( "getpaid_get_{$gateway}_connect_url", false, $data ); |
|
| 707 | - if ( ! empty( $connect_url ) ) { |
|
| 708 | - wp_redirect( $connect_url ); |
|
| 709 | - exit; |
|
| 710 | - } |
|
| 706 | + $connect_url = apply_filters( "getpaid_get_{$gateway}_connect_url", false, $data ); |
|
| 707 | + if ( ! empty( $connect_url ) ) { |
|
| 708 | + wp_redirect( $connect_url ); |
|
| 709 | + exit; |
|
| 710 | + } |
|
| 711 | 711 | |
| 712 | - } |
|
| 712 | + } |
|
| 713 | 713 | |
| 714 | - $redirect = isset( $data['redirect'] ) ? esc_url_raw( urldecode( $data['redirect'] ) ) : admin_url( 'admin.php?page=wpinv-settings&tab=gateways' ); |
|
| 715 | - wp_safe_redirect( $redirect ); |
|
| 716 | - exit; |
|
| 714 | + $redirect = isset( $data['redirect'] ) ? esc_url_raw( urldecode( $data['redirect'] ) ) : admin_url( 'admin.php?page=wpinv-settings&tab=gateways' ); |
|
| 715 | + wp_safe_redirect( $redirect ); |
|
| 716 | + exit; |
|
| 717 | 717 | |
| 718 | - } |
|
| 718 | + } |
|
| 719 | 719 | |
| 720 | - /** |
|
| 720 | + /** |
|
| 721 | 721 | * Recalculates discounts. |
| 722 | - * |
|
| 722 | + * |
|
| 723 | 723 | */ |
| 724 | 724 | public function admin_recalculate_discounts() { |
| 725 | - global $wpdb; |
|
| 725 | + global $wpdb; |
|
| 726 | 726 | |
| 727 | - // Fetch all invoices that have discount codes. |
|
| 728 | - $table = $wpdb->prefix . 'getpaid_invoices'; |
|
| 729 | - $invoices = $wpdb->get_col( "SELECT `post_id` FROM `$table` WHERE `discount` = 0 && `discount_code` <> ''" ); |
|
| 727 | + // Fetch all invoices that have discount codes. |
|
| 728 | + $table = $wpdb->prefix . 'getpaid_invoices'; |
|
| 729 | + $invoices = $wpdb->get_col( "SELECT `post_id` FROM `$table` WHERE `discount` = 0 && `discount_code` <> ''" ); |
|
| 730 | 730 | |
| 731 | - foreach ( $invoices as $invoice ) { |
|
| 731 | + foreach ( $invoices as $invoice ) { |
|
| 732 | 732 | |
| 733 | - $invoice = new WPInv_Invoice( $invoice ); |
|
| 733 | + $invoice = new WPInv_Invoice( $invoice ); |
|
| 734 | 734 | |
| 735 | - if ( ! $invoice->exists() ) { |
|
| 736 | - continue; |
|
| 737 | - } |
|
| 735 | + if ( ! $invoice->exists() ) { |
|
| 736 | + continue; |
|
| 737 | + } |
|
| 738 | 738 | |
| 739 | - // Abort if the discount does not exist or does not apply here. |
|
| 740 | - $discount = new WPInv_Discount( $invoice->get_discount_code() ); |
|
| 741 | - if ( ! $discount->exists() ) { |
|
| 742 | - continue; |
|
| 743 | - } |
|
| 739 | + // Abort if the discount does not exist or does not apply here. |
|
| 740 | + $discount = new WPInv_Discount( $invoice->get_discount_code() ); |
|
| 741 | + if ( ! $discount->exists() ) { |
|
| 742 | + continue; |
|
| 743 | + } |
|
| 744 | 744 | |
| 745 | - $invoice->add_discount( getpaid_calculate_invoice_discount( $invoice, $discount ) ); |
|
| 746 | - $invoice->recalculate_total(); |
|
| 745 | + $invoice->add_discount( getpaid_calculate_invoice_discount( $invoice, $discount ) ); |
|
| 746 | + $invoice->recalculate_total(); |
|
| 747 | 747 | |
| 748 | - if ( $invoice->get_total_discount() > 0 ) { |
|
| 749 | - $invoice->save(); |
|
| 750 | - } |
|
| 748 | + if ( $invoice->get_total_discount() > 0 ) { |
|
| 749 | + $invoice->save(); |
|
| 750 | + } |
|
| 751 | 751 | |
| 752 | - } |
|
| 752 | + } |
|
| 753 | 753 | |
| 754 | - // Show an admin message. |
|
| 755 | - $this->show_success( __( 'Discounts have been recalculated.', 'invoicing' ) ); |
|
| 754 | + // Show an admin message. |
|
| 755 | + $this->show_success( __( 'Discounts have been recalculated.', 'invoicing' ) ); |
|
| 756 | 756 | |
| 757 | - // Redirect the admin. |
|
| 758 | - wp_safe_redirect( remove_query_arg( array( 'getpaid-admin-action', 'getpaid-nonce' ) ) ); |
|
| 759 | - exit; |
|
| 757 | + // Redirect the admin. |
|
| 758 | + wp_safe_redirect( remove_query_arg( array( 'getpaid-admin-action', 'getpaid-nonce' ) ) ); |
|
| 759 | + exit; |
|
| 760 | 760 | |
| 761 | - } |
|
| 761 | + } |
|
| 762 | 762 | |
| 763 | 763 | /** |
| 764 | - * Returns an array of admin notices. |
|
| 765 | - * |
|
| 766 | - * @since 1.0.19 |
|
| 764 | + * Returns an array of admin notices. |
|
| 765 | + * |
|
| 766 | + * @since 1.0.19 |
|
| 767 | 767 | * @return array |
| 768 | - */ |
|
| 769 | - public function get_notices() { |
|
| 770 | - $notices = get_option( 'wpinv_admin_notices' ); |
|
| 768 | + */ |
|
| 769 | + public function get_notices() { |
|
| 770 | + $notices = get_option( 'wpinv_admin_notices' ); |
|
| 771 | 771 | return is_array( $notices ) ? $notices : array(); |
| 772 | - } |
|
| 772 | + } |
|
| 773 | 773 | |
| 774 | - /** |
|
| 775 | - * Checks if we have any admin notices. |
|
| 776 | - * |
|
| 777 | - * @since 2.0.4 |
|
| 774 | + /** |
|
| 775 | + * Checks if we have any admin notices. |
|
| 776 | + * |
|
| 777 | + * @since 2.0.4 |
|
| 778 | 778 | * @return array |
| 779 | - */ |
|
| 780 | - public function has_notices() { |
|
| 781 | - return count( $this->get_notices() ) > 0; |
|
| 782 | - } |
|
| 783 | - |
|
| 784 | - /** |
|
| 785 | - * Clears all admin notices |
|
| 786 | - * |
|
| 787 | - * @access public |
|
| 788 | - * @since 1.0.19 |
|
| 789 | - */ |
|
| 790 | - public function clear_notices() { |
|
| 791 | - delete_option( 'wpinv_admin_notices' ); |
|
| 792 | - } |
|
| 793 | - |
|
| 794 | - /** |
|
| 795 | - * Saves a new admin notice |
|
| 796 | - * |
|
| 797 | - * @access public |
|
| 798 | - * @since 1.0.19 |
|
| 799 | - */ |
|
| 800 | - public function save_notice( $type, $message ) { |
|
| 801 | - $notices = $this->get_notices(); |
|
| 802 | - |
|
| 803 | - if ( empty( $notices[ $type ] ) || ! is_array( $notices[ $type ]) ) { |
|
| 804 | - $notices[ $type ] = array(); |
|
| 805 | - } |
|
| 806 | - |
|
| 807 | - $notices[ $type ][] = $message; |
|
| 808 | - |
|
| 809 | - update_option( 'wpinv_admin_notices', $notices ); |
|
| 810 | - } |
|
| 811 | - |
|
| 812 | - /** |
|
| 813 | - * Displays a success notice |
|
| 814 | - * |
|
| 815 | - * @param string $msg The message to qeue. |
|
| 816 | - * @access public |
|
| 817 | - * @since 1.0.19 |
|
| 818 | - */ |
|
| 819 | - public function show_success( $msg ) { |
|
| 820 | - $this->save_notice( 'success', $msg ); |
|
| 821 | - } |
|
| 822 | - |
|
| 823 | - /** |
|
| 824 | - * Displays a error notice |
|
| 825 | - * |
|
| 826 | - * @access public |
|
| 827 | - * @param string $msg The message to qeue. |
|
| 828 | - * @since 1.0.19 |
|
| 829 | - */ |
|
| 830 | - public function show_error( $msg ) { |
|
| 831 | - $this->save_notice( 'error', $msg ); |
|
| 832 | - } |
|
| 833 | - |
|
| 834 | - /** |
|
| 835 | - * Displays a warning notice |
|
| 836 | - * |
|
| 837 | - * @access public |
|
| 838 | - * @param string $msg The message to qeue. |
|
| 839 | - * @since 1.0.19 |
|
| 840 | - */ |
|
| 841 | - public function show_warning( $msg ) { |
|
| 842 | - $this->save_notice( 'warning', $msg ); |
|
| 843 | - } |
|
| 844 | - |
|
| 845 | - /** |
|
| 846 | - * Displays a info notice |
|
| 847 | - * |
|
| 848 | - * @access public |
|
| 849 | - * @param string $msg The message to qeue. |
|
| 850 | - * @since 1.0.19 |
|
| 851 | - */ |
|
| 852 | - public function show_info( $msg ) { |
|
| 853 | - $this->save_notice( 'info', $msg ); |
|
| 854 | - } |
|
| 855 | - |
|
| 856 | - /** |
|
| 857 | - * Show notices |
|
| 858 | - * |
|
| 859 | - * @access public |
|
| 860 | - * @since 1.0.19 |
|
| 861 | - */ |
|
| 862 | - public function show_notices() { |
|
| 779 | + */ |
|
| 780 | + public function has_notices() { |
|
| 781 | + return count( $this->get_notices() ) > 0; |
|
| 782 | + } |
|
| 783 | + |
|
| 784 | + /** |
|
| 785 | + * Clears all admin notices |
|
| 786 | + * |
|
| 787 | + * @access public |
|
| 788 | + * @since 1.0.19 |
|
| 789 | + */ |
|
| 790 | + public function clear_notices() { |
|
| 791 | + delete_option( 'wpinv_admin_notices' ); |
|
| 792 | + } |
|
| 793 | + |
|
| 794 | + /** |
|
| 795 | + * Saves a new admin notice |
|
| 796 | + * |
|
| 797 | + * @access public |
|
| 798 | + * @since 1.0.19 |
|
| 799 | + */ |
|
| 800 | + public function save_notice( $type, $message ) { |
|
| 801 | + $notices = $this->get_notices(); |
|
| 802 | + |
|
| 803 | + if ( empty( $notices[ $type ] ) || ! is_array( $notices[ $type ]) ) { |
|
| 804 | + $notices[ $type ] = array(); |
|
| 805 | + } |
|
| 806 | + |
|
| 807 | + $notices[ $type ][] = $message; |
|
| 808 | + |
|
| 809 | + update_option( 'wpinv_admin_notices', $notices ); |
|
| 810 | + } |
|
| 811 | + |
|
| 812 | + /** |
|
| 813 | + * Displays a success notice |
|
| 814 | + * |
|
| 815 | + * @param string $msg The message to qeue. |
|
| 816 | + * @access public |
|
| 817 | + * @since 1.0.19 |
|
| 818 | + */ |
|
| 819 | + public function show_success( $msg ) { |
|
| 820 | + $this->save_notice( 'success', $msg ); |
|
| 821 | + } |
|
| 822 | + |
|
| 823 | + /** |
|
| 824 | + * Displays a error notice |
|
| 825 | + * |
|
| 826 | + * @access public |
|
| 827 | + * @param string $msg The message to qeue. |
|
| 828 | + * @since 1.0.19 |
|
| 829 | + */ |
|
| 830 | + public function show_error( $msg ) { |
|
| 831 | + $this->save_notice( 'error', $msg ); |
|
| 832 | + } |
|
| 833 | + |
|
| 834 | + /** |
|
| 835 | + * Displays a warning notice |
|
| 836 | + * |
|
| 837 | + * @access public |
|
| 838 | + * @param string $msg The message to qeue. |
|
| 839 | + * @since 1.0.19 |
|
| 840 | + */ |
|
| 841 | + public function show_warning( $msg ) { |
|
| 842 | + $this->save_notice( 'warning', $msg ); |
|
| 843 | + } |
|
| 844 | + |
|
| 845 | + /** |
|
| 846 | + * Displays a info notice |
|
| 847 | + * |
|
| 848 | + * @access public |
|
| 849 | + * @param string $msg The message to qeue. |
|
| 850 | + * @since 1.0.19 |
|
| 851 | + */ |
|
| 852 | + public function show_info( $msg ) { |
|
| 853 | + $this->save_notice( 'info', $msg ); |
|
| 854 | + } |
|
| 855 | + |
|
| 856 | + /** |
|
| 857 | + * Show notices |
|
| 858 | + * |
|
| 859 | + * @access public |
|
| 860 | + * @since 1.0.19 |
|
| 861 | + */ |
|
| 862 | + public function show_notices() { |
|
| 863 | 863 | |
| 864 | 864 | $notices = $this->get_notices(); |
| 865 | 865 | $this->clear_notices(); |
| 866 | 866 | |
| 867 | - foreach ( $notices as $type => $messages ) { |
|
| 867 | + foreach ( $notices as $type => $messages ) { |
|
| 868 | 868 | |
| 869 | - if ( ! is_array( $messages ) ) { |
|
| 870 | - continue; |
|
| 871 | - } |
|
| 869 | + if ( ! is_array( $messages ) ) { |
|
| 870 | + continue; |
|
| 871 | + } |
|
| 872 | 872 | |
| 873 | 873 | $type = sanitize_key( $type ); |
| 874 | - foreach ( $messages as $message ) { |
|
| 874 | + foreach ( $messages as $message ) { |
|
| 875 | 875 | $message = wp_kses_post( $message ); |
| 876 | - echo "<div class='notice notice-$type is-dismissible'><p>$message</p></div>"; |
|
| 876 | + echo "<div class='notice notice-$type is-dismissible'><p>$message</p></div>"; |
|
| 877 | 877 | } |
| 878 | 878 | |
| 879 | 879 | } |
| 880 | 880 | |
| 881 | - foreach ( array( 'checkout_page', 'invoice_history_page', 'success_page', 'failure_page', 'invoice_subscription_page' ) as $page ) { |
|
| 882 | - |
|
| 883 | - if ( ! is_numeric( wpinv_get_option( $page, false ) ) ) { |
|
| 884 | - $url = wp_nonce_url( |
|
| 885 | - add_query_arg( 'getpaid-admin-action', 'create_missing_pages' ), |
|
| 886 | - 'getpaid-nonce', |
|
| 887 | - 'getpaid-nonce' |
|
| 888 | - ); |
|
| 889 | - $message = __( 'Some GetPaid pages are missing. To use GetPaid without any issues, click the button below to generate the missing pages.', 'invoicing' ); |
|
| 890 | - $message2 = __( 'Generate Pages', 'invoicing' ); |
|
| 891 | - echo "<div class='notice notice-warning is-dismissible'><p>$message<br><br><a href='$url' class='button button-primary'>$message2</a></p></div>"; |
|
| 892 | - break; |
|
| 893 | - } |
|
| 881 | + foreach ( array( 'checkout_page', 'invoice_history_page', 'success_page', 'failure_page', 'invoice_subscription_page' ) as $page ) { |
|
| 882 | + |
|
| 883 | + if ( ! is_numeric( wpinv_get_option( $page, false ) ) ) { |
|
| 884 | + $url = wp_nonce_url( |
|
| 885 | + add_query_arg( 'getpaid-admin-action', 'create_missing_pages' ), |
|
| 886 | + 'getpaid-nonce', |
|
| 887 | + 'getpaid-nonce' |
|
| 888 | + ); |
|
| 889 | + $message = __( 'Some GetPaid pages are missing. To use GetPaid without any issues, click the button below to generate the missing pages.', 'invoicing' ); |
|
| 890 | + $message2 = __( 'Generate Pages', 'invoicing' ); |
|
| 891 | + echo "<div class='notice notice-warning is-dismissible'><p>$message<br><br><a href='$url' class='button button-primary'>$message2</a></p></div>"; |
|
| 892 | + break; |
|
| 893 | + } |
|
| 894 | 894 | |
| 895 | - } |
|
| 895 | + } |
|
| 896 | 896 | |
| 897 | - } |
|
| 897 | + } |
|
| 898 | 898 | |
| 899 | 899 | } |
@@ -1,103 +1,103 @@ |
||
| 1 | 1 | <?php |
| 2 | 2 | |
| 3 | 3 | if ( ! defined( 'ABSPATH' ) ) { |
| 4 | - exit; |
|
| 4 | + exit; |
|
| 5 | 5 | } |
| 6 | 6 | |
| 7 | 7 | if ( ! class_exists( 'AyeCode_Deactivation_Survey' ) ) { |
| 8 | 8 | |
| 9 | - class AyeCode_Deactivation_Survey { |
|
| 9 | + class AyeCode_Deactivation_Survey { |
|
| 10 | 10 | |
| 11 | - /** |
|
| 12 | - * AyeCode_Deactivation_Survey instance. |
|
| 13 | - * |
|
| 14 | - * @access private |
|
| 15 | - * @since 1.0.0 |
|
| 16 | - * @var AyeCode_Deactivation_Survey There can be only one! |
|
| 17 | - */ |
|
| 18 | - private static $instance = null; |
|
| 11 | + /** |
|
| 12 | + * AyeCode_Deactivation_Survey instance. |
|
| 13 | + * |
|
| 14 | + * @access private |
|
| 15 | + * @since 1.0.0 |
|
| 16 | + * @var AyeCode_Deactivation_Survey There can be only one! |
|
| 17 | + */ |
|
| 18 | + private static $instance = null; |
|
| 19 | 19 | |
| 20 | - public static $plugins; |
|
| 20 | + public static $plugins; |
|
| 21 | 21 | |
| 22 | - public $version = "1.0.4"; |
|
| 22 | + public $version = "1.0.4"; |
|
| 23 | 23 | |
| 24 | - public static function instance( $plugin = array() ) { |
|
| 25 | - if ( ! isset( self::$instance ) && ! ( self::$instance instanceof AyeCode_Deactivation_Survey ) ) { |
|
| 26 | - self::$instance = new AyeCode_Deactivation_Survey; |
|
| 27 | - self::$plugins = array(); |
|
| 24 | + public static function instance( $plugin = array() ) { |
|
| 25 | + if ( ! isset( self::$instance ) && ! ( self::$instance instanceof AyeCode_Deactivation_Survey ) ) { |
|
| 26 | + self::$instance = new AyeCode_Deactivation_Survey; |
|
| 27 | + self::$plugins = array(); |
|
| 28 | 28 | |
| 29 | - add_action( 'admin_enqueue_scripts', array( self::$instance, 'scripts' ) ); |
|
| 29 | + add_action( 'admin_enqueue_scripts', array( self::$instance, 'scripts' ) ); |
|
| 30 | 30 | |
| 31 | - do_action( 'ayecode_deactivation_survey_loaded' ); |
|
| 32 | - } |
|
| 31 | + do_action( 'ayecode_deactivation_survey_loaded' ); |
|
| 32 | + } |
|
| 33 | 33 | |
| 34 | - if(!empty($plugin)){ |
|
| 35 | - self::$plugins[] = (object)$plugin; |
|
| 36 | - } |
|
| 34 | + if(!empty($plugin)){ |
|
| 35 | + self::$plugins[] = (object)$plugin; |
|
| 36 | + } |
|
| 37 | 37 | |
| 38 | - return self::$instance; |
|
| 39 | - } |
|
| 38 | + return self::$instance; |
|
| 39 | + } |
|
| 40 | 40 | |
| 41 | - public function scripts() { |
|
| 42 | - global $pagenow; |
|
| 41 | + public function scripts() { |
|
| 42 | + global $pagenow; |
|
| 43 | 43 | |
| 44 | - // Bail if we are not on the plugins page |
|
| 45 | - if ( $pagenow != "plugins.php" ) { |
|
| 46 | - return; |
|
| 47 | - } |
|
| 44 | + // Bail if we are not on the plugins page |
|
| 45 | + if ( $pagenow != "plugins.php" ) { |
|
| 46 | + return; |
|
| 47 | + } |
|
| 48 | 48 | |
| 49 | - // Enqueue scripts |
|
| 50 | - add_thickbox(); |
|
| 51 | - wp_enqueue_script('ayecode-deactivation-survey', plugin_dir_url(__FILE__) . 'ayecode-ds.js'); |
|
| 49 | + // Enqueue scripts |
|
| 50 | + add_thickbox(); |
|
| 51 | + wp_enqueue_script('ayecode-deactivation-survey', plugin_dir_url(__FILE__) . 'ayecode-ds.js'); |
|
| 52 | 52 | |
| 53 | - /* |
|
| 53 | + /* |
|
| 54 | 54 | * Localized strings. Strings can be localised by plugins using this class. |
| 55 | 55 | * We deliberately don't add textdomains here so that double textdomain warning is not given in theme review. |
| 56 | 56 | */ |
| 57 | - wp_localize_script('ayecode-deactivation-survey', 'ayecodeds_deactivate_feedback_form_strings', array( |
|
| 58 | - 'quick_feedback' => 'Quick Feedback', |
|
| 59 | - 'foreword' => 'If you would be kind enough, please tell us why you\'re deactivating?', |
|
| 60 | - 'better_plugins_name' => 'Please tell us which plugin?', |
|
| 61 | - 'please_tell_us' => 'Please tell us the reason so we can improve the plugin', |
|
| 62 | - 'do_not_attach_email' => 'Do not send my e-mail address with this feedback', |
|
| 63 | - 'brief_description' => 'Please give us any feedback that could help us improve', |
|
| 64 | - 'cancel' => 'Cancel', |
|
| 65 | - 'skip_and_deactivate' => 'Skip & Deactivate', |
|
| 66 | - 'submit_and_deactivate' => 'Submit & Deactivate', |
|
| 67 | - 'please_wait' => 'Please wait', |
|
| 68 | - 'get_support' => 'Get Support', |
|
| 69 | - 'documentation' => 'Documentation', |
|
| 70 | - 'thank_you' => 'Thank you!', |
|
| 71 | - )); |
|
| 72 | - |
|
| 73 | - // Plugins |
|
| 74 | - $plugins = apply_filters('ayecode_deactivation_survey_plugins', self::$plugins); |
|
| 75 | - |
|
| 76 | - // Reasons |
|
| 77 | - $defaultReasons = array( |
|
| 78 | - 'suddenly-stopped-working' => 'The plugin suddenly stopped working', |
|
| 79 | - 'plugin-broke-site' => 'The plugin broke my site', |
|
| 80 | - 'plugin-setup-difficult' => 'Too difficult to setup', |
|
| 81 | - 'plugin-design-difficult' => 'Too difficult to get the design i want', |
|
| 82 | - 'no-longer-needed' => 'I don\'t need this plugin any more', |
|
| 83 | - 'found-better-plugin' => 'I found a better plugin', |
|
| 84 | - 'temporary-deactivation' => 'It\'s a temporary deactivation, I\'m troubleshooting', |
|
| 85 | - 'other' => 'Other', |
|
| 86 | - ); |
|
| 87 | - |
|
| 88 | - foreach($plugins as $plugin) |
|
| 89 | - { |
|
| 90 | - $plugin->reasons = apply_filters('ayecode_deactivation_survey_reasons', $defaultReasons, $plugin); |
|
| 91 | - $plugin->url = home_url(); |
|
| 92 | - $plugin->activated = 0; |
|
| 93 | - } |
|
| 94 | - |
|
| 95 | - // Send plugin data |
|
| 96 | - wp_localize_script('ayecode-deactivation-survey', 'ayecodeds_deactivate_feedback_form_plugins', $plugins); |
|
| 97 | - |
|
| 98 | - } |
|
| 57 | + wp_localize_script('ayecode-deactivation-survey', 'ayecodeds_deactivate_feedback_form_strings', array( |
|
| 58 | + 'quick_feedback' => 'Quick Feedback', |
|
| 59 | + 'foreword' => 'If you would be kind enough, please tell us why you\'re deactivating?', |
|
| 60 | + 'better_plugins_name' => 'Please tell us which plugin?', |
|
| 61 | + 'please_tell_us' => 'Please tell us the reason so we can improve the plugin', |
|
| 62 | + 'do_not_attach_email' => 'Do not send my e-mail address with this feedback', |
|
| 63 | + 'brief_description' => 'Please give us any feedback that could help us improve', |
|
| 64 | + 'cancel' => 'Cancel', |
|
| 65 | + 'skip_and_deactivate' => 'Skip & Deactivate', |
|
| 66 | + 'submit_and_deactivate' => 'Submit & Deactivate', |
|
| 67 | + 'please_wait' => 'Please wait', |
|
| 68 | + 'get_support' => 'Get Support', |
|
| 69 | + 'documentation' => 'Documentation', |
|
| 70 | + 'thank_you' => 'Thank you!', |
|
| 71 | + )); |
|
| 72 | + |
|
| 73 | + // Plugins |
|
| 74 | + $plugins = apply_filters('ayecode_deactivation_survey_plugins', self::$plugins); |
|
| 75 | + |
|
| 76 | + // Reasons |
|
| 77 | + $defaultReasons = array( |
|
| 78 | + 'suddenly-stopped-working' => 'The plugin suddenly stopped working', |
|
| 79 | + 'plugin-broke-site' => 'The plugin broke my site', |
|
| 80 | + 'plugin-setup-difficult' => 'Too difficult to setup', |
|
| 81 | + 'plugin-design-difficult' => 'Too difficult to get the design i want', |
|
| 82 | + 'no-longer-needed' => 'I don\'t need this plugin any more', |
|
| 83 | + 'found-better-plugin' => 'I found a better plugin', |
|
| 84 | + 'temporary-deactivation' => 'It\'s a temporary deactivation, I\'m troubleshooting', |
|
| 85 | + 'other' => 'Other', |
|
| 86 | + ); |
|
| 87 | + |
|
| 88 | + foreach($plugins as $plugin) |
|
| 89 | + { |
|
| 90 | + $plugin->reasons = apply_filters('ayecode_deactivation_survey_reasons', $defaultReasons, $plugin); |
|
| 91 | + $plugin->url = home_url(); |
|
| 92 | + $plugin->activated = 0; |
|
| 93 | + } |
|
| 94 | + |
|
| 95 | + // Send plugin data |
|
| 96 | + wp_localize_script('ayecode-deactivation-survey', 'ayecodeds_deactivate_feedback_form_plugins', $plugins); |
|
| 97 | + |
|
| 98 | + } |
|
| 99 | 99 | |
| 100 | 100 | |
| 101 | - } |
|
| 101 | + } |
|
| 102 | 102 | |
| 103 | 103 | } |
| 104 | 104 | \ No newline at end of file |
@@ -1,6 +1,6 @@ discard block |
||
| 1 | 1 | <?php |
| 2 | 2 | if ( ! defined( 'ABSPATH' ) ) { |
| 3 | - exit; |
|
| 3 | + exit; |
|
| 4 | 4 | } |
| 5 | 5 | |
| 6 | 6 | /** |
@@ -10,67 +10,67 @@ discard block |
||
| 10 | 10 | class GetPaid_Form_Item extends WPInv_Item { |
| 11 | 11 | |
| 12 | 12 | /** |
| 13 | - * Stores a custom description for the item. |
|
| 14 | - * |
|
| 15 | - * @var string |
|
| 16 | - */ |
|
| 17 | - protected $custom_description = null; |
|
| 18 | - |
|
| 19 | - /** |
|
| 20 | - * Stores the item quantity. |
|
| 21 | - * |
|
| 22 | - * @var float |
|
| 23 | - */ |
|
| 24 | - protected $quantity = 1; |
|
| 25 | - |
|
| 26 | - /** |
|
| 27 | - * Stores the item meta. |
|
| 28 | - * |
|
| 29 | - * @var array |
|
| 30 | - */ |
|
| 31 | - protected $meta = array(); |
|
| 32 | - |
|
| 33 | - /** |
|
| 34 | - * Is this item required? |
|
| 35 | - * |
|
| 36 | - * @var int |
|
| 37 | - */ |
|
| 38 | - protected $is_required = true; |
|
| 39 | - |
|
| 40 | - /** |
|
| 41 | - * Are quantities allowed? |
|
| 42 | - * |
|
| 43 | - * @var int |
|
| 44 | - */ |
|
| 45 | - protected $allow_quantities = false; |
|
| 46 | - |
|
| 47 | - /** |
|
| 48 | - * Associated invoice. |
|
| 49 | - * |
|
| 50 | - * @var int |
|
| 51 | - */ |
|
| 52 | - public $invoice_id = 0; |
|
| 53 | - |
|
| 54 | - /** |
|
| 55 | - * Item discount. |
|
| 56 | - * |
|
| 57 | - * @var float |
|
| 58 | - */ |
|
| 59 | - public $item_discount = 0; |
|
| 60 | - |
|
| 61 | - /** |
|
| 62 | - * Recurring item discount. |
|
| 63 | - * |
|
| 64 | - * @var float |
|
| 65 | - */ |
|
| 66 | - public $recurring_item_discount = 0; |
|
| 67 | - |
|
| 68 | - /** |
|
| 69 | - * Item tax. |
|
| 70 | - * |
|
| 71 | - * @var float |
|
| 72 | - */ |
|
| 73 | - public $item_tax = 0; |
|
| 13 | + * Stores a custom description for the item. |
|
| 14 | + * |
|
| 15 | + * @var string |
|
| 16 | + */ |
|
| 17 | + protected $custom_description = null; |
|
| 18 | + |
|
| 19 | + /** |
|
| 20 | + * Stores the item quantity. |
|
| 21 | + * |
|
| 22 | + * @var float |
|
| 23 | + */ |
|
| 24 | + protected $quantity = 1; |
|
| 25 | + |
|
| 26 | + /** |
|
| 27 | + * Stores the item meta. |
|
| 28 | + * |
|
| 29 | + * @var array |
|
| 30 | + */ |
|
| 31 | + protected $meta = array(); |
|
| 32 | + |
|
| 33 | + /** |
|
| 34 | + * Is this item required? |
|
| 35 | + * |
|
| 36 | + * @var int |
|
| 37 | + */ |
|
| 38 | + protected $is_required = true; |
|
| 39 | + |
|
| 40 | + /** |
|
| 41 | + * Are quantities allowed? |
|
| 42 | + * |
|
| 43 | + * @var int |
|
| 44 | + */ |
|
| 45 | + protected $allow_quantities = false; |
|
| 46 | + |
|
| 47 | + /** |
|
| 48 | + * Associated invoice. |
|
| 49 | + * |
|
| 50 | + * @var int |
|
| 51 | + */ |
|
| 52 | + public $invoice_id = 0; |
|
| 53 | + |
|
| 54 | + /** |
|
| 55 | + * Item discount. |
|
| 56 | + * |
|
| 57 | + * @var float |
|
| 58 | + */ |
|
| 59 | + public $item_discount = 0; |
|
| 60 | + |
|
| 61 | + /** |
|
| 62 | + * Recurring item discount. |
|
| 63 | + * |
|
| 64 | + * @var float |
|
| 65 | + */ |
|
| 66 | + public $recurring_item_discount = 0; |
|
| 67 | + |
|
| 68 | + /** |
|
| 69 | + * Item tax. |
|
| 70 | + * |
|
| 71 | + * @var float |
|
| 72 | + */ |
|
| 73 | + public $item_tax = 0; |
|
| 74 | 74 | |
| 75 | 75 | /* |
| 76 | 76 | |-------------------------------------------------------------------------- |
@@ -88,230 +88,230 @@ discard block |
||
| 88 | 88 | */ |
| 89 | 89 | |
| 90 | 90 | /** |
| 91 | - * Get the item name. |
|
| 92 | - * |
|
| 93 | - * @since 1.0.19 |
|
| 94 | - * @param string $context View or edit context. |
|
| 95 | - * @return string |
|
| 96 | - */ |
|
| 97 | - public function get_name( $context = 'view' ) { |
|
| 98 | - $name = parent::get_name( $context ); |
|
| 99 | - return $name . wpinv_get_item_suffix( $this ); |
|
| 100 | - } |
|
| 101 | - |
|
| 102 | - /** |
|
| 103 | - * Get the item name without a suffix. |
|
| 104 | - * |
|
| 105 | - * @since 1.0.19 |
|
| 106 | - * @param string $context View or edit context. |
|
| 107 | - * @return string |
|
| 108 | - */ |
|
| 109 | - public function get_raw_name( $context = 'view' ) { |
|
| 110 | - return parent::get_name( $context ); |
|
| 111 | - } |
|
| 112 | - |
|
| 113 | - /** |
|
| 114 | - * Get the item description. |
|
| 115 | - * |
|
| 116 | - * @since 1.0.19 |
|
| 117 | - * @param string $context View or edit context. |
|
| 118 | - * @return string |
|
| 119 | - */ |
|
| 120 | - public function get_description( $context = 'view' ) { |
|
| 121 | - |
|
| 122 | - if ( isset( $this->custom_description ) ) { |
|
| 123 | - return $this->custom_description; |
|
| 124 | - } |
|
| 125 | - |
|
| 126 | - return parent::get_description( $context ); |
|
| 127 | - } |
|
| 128 | - |
|
| 129 | - /** |
|
| 130 | - * Returns the sub total. |
|
| 131 | - * |
|
| 132 | - * @since 1.0.19 |
|
| 133 | - * @param string $context View or edit context. |
|
| 134 | - * @return float |
|
| 135 | - */ |
|
| 136 | - public function get_sub_total( $context = 'view' ) { |
|
| 137 | - return $this->get_quantity( $context ) * $this->get_initial_price( $context ); |
|
| 138 | - } |
|
| 139 | - |
|
| 140 | - /** |
|
| 141 | - * Returns the recurring sub total. |
|
| 142 | - * |
|
| 143 | - * @since 1.0.19 |
|
| 144 | - * @param string $context View or edit context. |
|
| 145 | - * @return float |
|
| 146 | - */ |
|
| 147 | - public function get_recurring_sub_total( $context = 'view' ) { |
|
| 148 | - |
|
| 149 | - if ( $this->is_recurring() ) { |
|
| 150 | - return $this->get_quantity( $context ) * $this->get_price( $context ); |
|
| 151 | - } |
|
| 152 | - |
|
| 153 | - return 0; |
|
| 154 | - } |
|
| 155 | - |
|
| 156 | - /** |
|
| 157 | - * @deprecated |
|
| 158 | - */ |
|
| 159 | - public function get_qantity( $context = 'view' ) { |
|
| 160 | - return $this->get_quantity( $context ); |
|
| 161 | - } |
|
| 162 | - |
|
| 163 | - /** |
|
| 164 | - * Get the item quantity. |
|
| 165 | - * |
|
| 166 | - * @since 1.0.19 |
|
| 167 | - * @param string $context View or edit context. |
|
| 168 | - * @return float |
|
| 169 | - */ |
|
| 170 | - public function get_quantity( $context = 'view' ) { |
|
| 171 | - $quantity = (float) $this->quantity; |
|
| 172 | - |
|
| 173 | - if ( 'view' == $context ) { |
|
| 174 | - return apply_filters( 'getpaid_payment_form_item_quantity', $quantity, $this ); |
|
| 175 | - } |
|
| 176 | - |
|
| 177 | - return $quantity; |
|
| 178 | - |
|
| 179 | - } |
|
| 180 | - |
|
| 181 | - /** |
|
| 182 | - * Get the item meta data. |
|
| 183 | - * |
|
| 184 | - * @since 1.0.19 |
|
| 185 | - * @param string $context View or edit context. |
|
| 186 | - * @return meta |
|
| 187 | - */ |
|
| 188 | - public function get_item_meta( $context = 'view' ) { |
|
| 189 | - $meta = $this->meta; |
|
| 190 | - |
|
| 191 | - if ( 'view' == $context ) { |
|
| 192 | - return apply_filters( 'getpaid_payment_form_item_meta', $meta, $this ); |
|
| 193 | - } |
|
| 194 | - |
|
| 195 | - return $meta; |
|
| 196 | - |
|
| 197 | - } |
|
| 198 | - |
|
| 199 | - /** |
|
| 200 | - * Returns whether or not customers can update the item quantity. |
|
| 201 | - * |
|
| 202 | - * @since 1.0.19 |
|
| 203 | - * @param string $context View or edit context. |
|
| 204 | - * @return bool |
|
| 205 | - */ |
|
| 206 | - public function get_allow_quantities( $context = 'view' ) { |
|
| 207 | - $allow_quantities = (bool) $this->allow_quantities; |
|
| 208 | - |
|
| 209 | - if ( 'view' == $context ) { |
|
| 210 | - return apply_filters( 'getpaid_payment_form_item_allow_quantities', $allow_quantities, $this ); |
|
| 211 | - } |
|
| 212 | - |
|
| 213 | - return $allow_quantities; |
|
| 214 | - |
|
| 215 | - } |
|
| 216 | - |
|
| 217 | - /** |
|
| 218 | - * Returns whether or not the item is required. |
|
| 219 | - * |
|
| 220 | - * @since 1.0.19 |
|
| 221 | - * @param string $context View or edit context. |
|
| 222 | - * @return bool |
|
| 223 | - */ |
|
| 224 | - public function get_is_required( $context = 'view' ) { |
|
| 225 | - $is_required = (bool) $this->is_required; |
|
| 226 | - |
|
| 227 | - if ( 'view' == $context ) { |
|
| 228 | - return apply_filters( 'getpaid_payment_form_item_is_required', $is_required, $this ); |
|
| 229 | - } |
|
| 230 | - |
|
| 231 | - return $is_required; |
|
| 232 | - |
|
| 233 | - } |
|
| 234 | - |
|
| 235 | - /** |
|
| 236 | - * Prepares form data for use. |
|
| 237 | - * |
|
| 238 | - * @since 1.0.19 |
|
| 239 | - * @return array |
|
| 240 | - */ |
|
| 241 | - public function prepare_data_for_use( $required = null ) { |
|
| 242 | - |
|
| 243 | - $required = is_null( $required ) ? $this->is_required() : $required; |
|
| 244 | - return array( |
|
| 245 | - 'title' => strip_tags( $this->get_name() ), |
|
| 246 | - 'id' => $this->get_id(), |
|
| 247 | - 'price' => $this->get_price(), |
|
| 248 | - 'recurring' => $this->is_recurring(), |
|
| 249 | - 'description' => $this->get_description(), |
|
| 250 | - 'allow_quantities' => $this->allows_quantities(), |
|
| 251 | - 'required' => $required, |
|
| 252 | - ); |
|
| 253 | - |
|
| 254 | - } |
|
| 255 | - |
|
| 256 | - /** |
|
| 257 | - * Prepares form data for ajax use. |
|
| 258 | - * |
|
| 259 | - * @since 1.0.19 |
|
| 260 | - * @return array |
|
| 261 | - */ |
|
| 262 | - public function prepare_data_for_invoice_edit_ajax( $currency = '', $is_renewal = false ) { |
|
| 263 | - |
|
| 264 | - $description = getpaid_item_recurring_price_help_text( $this, $currency ); |
|
| 265 | - |
|
| 266 | - if ( $description ) { |
|
| 267 | - $description = "<div class='getpaid-subscription-help-text'>$description</div>"; |
|
| 268 | - } |
|
| 269 | - |
|
| 270 | - $price = ! $is_renewal ? $this->get_price() : $this->get_recurring_price(); |
|
| 271 | - $subtotal = ! $is_renewal ? $this->get_sub_total() : $this->get_recurring_sub_total(); |
|
| 272 | - return array( |
|
| 273 | - 'id' => $this->get_id(), |
|
| 274 | - 'texts' => array( |
|
| 275 | - 'item-name' => sanitize_text_field( $this->get_name() ), |
|
| 276 | - 'item-description' => wp_kses_post( $this->get_description() ) . $description, |
|
| 277 | - 'item-quantity' => floatval( $this->get_quantity() ), |
|
| 278 | - 'item-price' => wpinv_price( $price, $currency ), |
|
| 279 | - 'item-total' => wpinv_price( $subtotal, $currency ), |
|
| 280 | - ), |
|
| 281 | - 'inputs' => array( |
|
| 282 | - 'item-id' => $this->get_id(), |
|
| 283 | - 'item-name' => sanitize_text_field( $this->get_name() ), |
|
| 284 | - 'item-description' => wp_kses_post( $this->get_description() ), |
|
| 285 | - 'item-quantity' => floatval( $this->get_quantity() ), |
|
| 286 | - 'item-price' => $price, |
|
| 287 | - ) |
|
| 288 | - ); |
|
| 289 | - |
|
| 290 | - } |
|
| 291 | - |
|
| 292 | - /** |
|
| 293 | - * Prepares form data for saving (cart_details). |
|
| 294 | - * |
|
| 295 | - * @since 1.0.19 |
|
| 296 | - * @return array |
|
| 297 | - */ |
|
| 298 | - public function prepare_data_for_saving() { |
|
| 299 | - |
|
| 300 | - return array( |
|
| 301 | - 'post_id' => $this->invoice_id, |
|
| 302 | - 'item_id' => $this->get_id(), |
|
| 303 | - 'item_name' => sanitize_text_field( $this->get_raw_name( 'edit' ) ), |
|
| 304 | - 'item_description' => $this->get_description( 'edit' ), |
|
| 305 | - 'tax' => $this->item_tax, |
|
| 306 | - 'item_price' => $this->get_price( 'edit' ), |
|
| 307 | - 'quantity' => (float) $this->get_quantity( 'edit' ), |
|
| 308 | - 'discount' => $this->item_discount, |
|
| 309 | - 'subtotal' => $this->get_sub_total( 'edit' ), |
|
| 310 | - 'price' => $this->get_sub_total( 'edit' ) + $this->item_tax - $this->item_discount, |
|
| 311 | - 'meta' => $this->get_item_meta( 'edit' ), |
|
| 312 | - ); |
|
| 313 | - |
|
| 314 | - } |
|
| 91 | + * Get the item name. |
|
| 92 | + * |
|
| 93 | + * @since 1.0.19 |
|
| 94 | + * @param string $context View or edit context. |
|
| 95 | + * @return string |
|
| 96 | + */ |
|
| 97 | + public function get_name( $context = 'view' ) { |
|
| 98 | + $name = parent::get_name( $context ); |
|
| 99 | + return $name . wpinv_get_item_suffix( $this ); |
|
| 100 | + } |
|
| 101 | + |
|
| 102 | + /** |
|
| 103 | + * Get the item name without a suffix. |
|
| 104 | + * |
|
| 105 | + * @since 1.0.19 |
|
| 106 | + * @param string $context View or edit context. |
|
| 107 | + * @return string |
|
| 108 | + */ |
|
| 109 | + public function get_raw_name( $context = 'view' ) { |
|
| 110 | + return parent::get_name( $context ); |
|
| 111 | + } |
|
| 112 | + |
|
| 113 | + /** |
|
| 114 | + * Get the item description. |
|
| 115 | + * |
|
| 116 | + * @since 1.0.19 |
|
| 117 | + * @param string $context View or edit context. |
|
| 118 | + * @return string |
|
| 119 | + */ |
|
| 120 | + public function get_description( $context = 'view' ) { |
|
| 121 | + |
|
| 122 | + if ( isset( $this->custom_description ) ) { |
|
| 123 | + return $this->custom_description; |
|
| 124 | + } |
|
| 125 | + |
|
| 126 | + return parent::get_description( $context ); |
|
| 127 | + } |
|
| 128 | + |
|
| 129 | + /** |
|
| 130 | + * Returns the sub total. |
|
| 131 | + * |
|
| 132 | + * @since 1.0.19 |
|
| 133 | + * @param string $context View or edit context. |
|
| 134 | + * @return float |
|
| 135 | + */ |
|
| 136 | + public function get_sub_total( $context = 'view' ) { |
|
| 137 | + return $this->get_quantity( $context ) * $this->get_initial_price( $context ); |
|
| 138 | + } |
|
| 139 | + |
|
| 140 | + /** |
|
| 141 | + * Returns the recurring sub total. |
|
| 142 | + * |
|
| 143 | + * @since 1.0.19 |
|
| 144 | + * @param string $context View or edit context. |
|
| 145 | + * @return float |
|
| 146 | + */ |
|
| 147 | + public function get_recurring_sub_total( $context = 'view' ) { |
|
| 148 | + |
|
| 149 | + if ( $this->is_recurring() ) { |
|
| 150 | + return $this->get_quantity( $context ) * $this->get_price( $context ); |
|
| 151 | + } |
|
| 152 | + |
|
| 153 | + return 0; |
|
| 154 | + } |
|
| 155 | + |
|
| 156 | + /** |
|
| 157 | + * @deprecated |
|
| 158 | + */ |
|
| 159 | + public function get_qantity( $context = 'view' ) { |
|
| 160 | + return $this->get_quantity( $context ); |
|
| 161 | + } |
|
| 162 | + |
|
| 163 | + /** |
|
| 164 | + * Get the item quantity. |
|
| 165 | + * |
|
| 166 | + * @since 1.0.19 |
|
| 167 | + * @param string $context View or edit context. |
|
| 168 | + * @return float |
|
| 169 | + */ |
|
| 170 | + public function get_quantity( $context = 'view' ) { |
|
| 171 | + $quantity = (float) $this->quantity; |
|
| 172 | + |
|
| 173 | + if ( 'view' == $context ) { |
|
| 174 | + return apply_filters( 'getpaid_payment_form_item_quantity', $quantity, $this ); |
|
| 175 | + } |
|
| 176 | + |
|
| 177 | + return $quantity; |
|
| 178 | + |
|
| 179 | + } |
|
| 180 | + |
|
| 181 | + /** |
|
| 182 | + * Get the item meta data. |
|
| 183 | + * |
|
| 184 | + * @since 1.0.19 |
|
| 185 | + * @param string $context View or edit context. |
|
| 186 | + * @return meta |
|
| 187 | + */ |
|
| 188 | + public function get_item_meta( $context = 'view' ) { |
|
| 189 | + $meta = $this->meta; |
|
| 190 | + |
|
| 191 | + if ( 'view' == $context ) { |
|
| 192 | + return apply_filters( 'getpaid_payment_form_item_meta', $meta, $this ); |
|
| 193 | + } |
|
| 194 | + |
|
| 195 | + return $meta; |
|
| 196 | + |
|
| 197 | + } |
|
| 198 | + |
|
| 199 | + /** |
|
| 200 | + * Returns whether or not customers can update the item quantity. |
|
| 201 | + * |
|
| 202 | + * @since 1.0.19 |
|
| 203 | + * @param string $context View or edit context. |
|
| 204 | + * @return bool |
|
| 205 | + */ |
|
| 206 | + public function get_allow_quantities( $context = 'view' ) { |
|
| 207 | + $allow_quantities = (bool) $this->allow_quantities; |
|
| 208 | + |
|
| 209 | + if ( 'view' == $context ) { |
|
| 210 | + return apply_filters( 'getpaid_payment_form_item_allow_quantities', $allow_quantities, $this ); |
|
| 211 | + } |
|
| 212 | + |
|
| 213 | + return $allow_quantities; |
|
| 214 | + |
|
| 215 | + } |
|
| 216 | + |
|
| 217 | + /** |
|
| 218 | + * Returns whether or not the item is required. |
|
| 219 | + * |
|
| 220 | + * @since 1.0.19 |
|
| 221 | + * @param string $context View or edit context. |
|
| 222 | + * @return bool |
|
| 223 | + */ |
|
| 224 | + public function get_is_required( $context = 'view' ) { |
|
| 225 | + $is_required = (bool) $this->is_required; |
|
| 226 | + |
|
| 227 | + if ( 'view' == $context ) { |
|
| 228 | + return apply_filters( 'getpaid_payment_form_item_is_required', $is_required, $this ); |
|
| 229 | + } |
|
| 230 | + |
|
| 231 | + return $is_required; |
|
| 232 | + |
|
| 233 | + } |
|
| 234 | + |
|
| 235 | + /** |
|
| 236 | + * Prepares form data for use. |
|
| 237 | + * |
|
| 238 | + * @since 1.0.19 |
|
| 239 | + * @return array |
|
| 240 | + */ |
|
| 241 | + public function prepare_data_for_use( $required = null ) { |
|
| 242 | + |
|
| 243 | + $required = is_null( $required ) ? $this->is_required() : $required; |
|
| 244 | + return array( |
|
| 245 | + 'title' => strip_tags( $this->get_name() ), |
|
| 246 | + 'id' => $this->get_id(), |
|
| 247 | + 'price' => $this->get_price(), |
|
| 248 | + 'recurring' => $this->is_recurring(), |
|
| 249 | + 'description' => $this->get_description(), |
|
| 250 | + 'allow_quantities' => $this->allows_quantities(), |
|
| 251 | + 'required' => $required, |
|
| 252 | + ); |
|
| 253 | + |
|
| 254 | + } |
|
| 255 | + |
|
| 256 | + /** |
|
| 257 | + * Prepares form data for ajax use. |
|
| 258 | + * |
|
| 259 | + * @since 1.0.19 |
|
| 260 | + * @return array |
|
| 261 | + */ |
|
| 262 | + public function prepare_data_for_invoice_edit_ajax( $currency = '', $is_renewal = false ) { |
|
| 263 | + |
|
| 264 | + $description = getpaid_item_recurring_price_help_text( $this, $currency ); |
|
| 265 | + |
|
| 266 | + if ( $description ) { |
|
| 267 | + $description = "<div class='getpaid-subscription-help-text'>$description</div>"; |
|
| 268 | + } |
|
| 269 | + |
|
| 270 | + $price = ! $is_renewal ? $this->get_price() : $this->get_recurring_price(); |
|
| 271 | + $subtotal = ! $is_renewal ? $this->get_sub_total() : $this->get_recurring_sub_total(); |
|
| 272 | + return array( |
|
| 273 | + 'id' => $this->get_id(), |
|
| 274 | + 'texts' => array( |
|
| 275 | + 'item-name' => sanitize_text_field( $this->get_name() ), |
|
| 276 | + 'item-description' => wp_kses_post( $this->get_description() ) . $description, |
|
| 277 | + 'item-quantity' => floatval( $this->get_quantity() ), |
|
| 278 | + 'item-price' => wpinv_price( $price, $currency ), |
|
| 279 | + 'item-total' => wpinv_price( $subtotal, $currency ), |
|
| 280 | + ), |
|
| 281 | + 'inputs' => array( |
|
| 282 | + 'item-id' => $this->get_id(), |
|
| 283 | + 'item-name' => sanitize_text_field( $this->get_name() ), |
|
| 284 | + 'item-description' => wp_kses_post( $this->get_description() ), |
|
| 285 | + 'item-quantity' => floatval( $this->get_quantity() ), |
|
| 286 | + 'item-price' => $price, |
|
| 287 | + ) |
|
| 288 | + ); |
|
| 289 | + |
|
| 290 | + } |
|
| 291 | + |
|
| 292 | + /** |
|
| 293 | + * Prepares form data for saving (cart_details). |
|
| 294 | + * |
|
| 295 | + * @since 1.0.19 |
|
| 296 | + * @return array |
|
| 297 | + */ |
|
| 298 | + public function prepare_data_for_saving() { |
|
| 299 | + |
|
| 300 | + return array( |
|
| 301 | + 'post_id' => $this->invoice_id, |
|
| 302 | + 'item_id' => $this->get_id(), |
|
| 303 | + 'item_name' => sanitize_text_field( $this->get_raw_name( 'edit' ) ), |
|
| 304 | + 'item_description' => $this->get_description( 'edit' ), |
|
| 305 | + 'tax' => $this->item_tax, |
|
| 306 | + 'item_price' => $this->get_price( 'edit' ), |
|
| 307 | + 'quantity' => (float) $this->get_quantity( 'edit' ), |
|
| 308 | + 'discount' => $this->item_discount, |
|
| 309 | + 'subtotal' => $this->get_sub_total( 'edit' ), |
|
| 310 | + 'price' => $this->get_sub_total( 'edit' ) + $this->item_tax - $this->item_discount, |
|
| 311 | + 'meta' => $this->get_item_meta( 'edit' ), |
|
| 312 | + ); |
|
| 313 | + |
|
| 314 | + } |
|
| 315 | 315 | |
| 316 | 316 | /* |
| 317 | 317 | |-------------------------------------------------------------------------- |
@@ -323,70 +323,70 @@ discard block |
||
| 323 | 323 | | object. |
| 324 | 324 | */ |
| 325 | 325 | |
| 326 | - /** |
|
| 327 | - * Set the item qantity. |
|
| 328 | - * |
|
| 329 | - * @since 1.0.19 |
|
| 330 | - * @param float $quantity The item quantity. |
|
| 331 | - */ |
|
| 332 | - public function set_quantity( $quantity ) { |
|
| 333 | - |
|
| 334 | - if ( ! is_numeric( $quantity ) ) { |
|
| 335 | - $quantity = 1; |
|
| 336 | - } |
|
| 337 | - |
|
| 338 | - $this->quantity = (float) $quantity; |
|
| 339 | - |
|
| 340 | - } |
|
| 341 | - |
|
| 342 | - /** |
|
| 343 | - * Set the item meta data. |
|
| 344 | - * |
|
| 345 | - * @since 1.0.19 |
|
| 346 | - * @param array $meta The item meta data. |
|
| 347 | - */ |
|
| 348 | - public function set_item_meta( $meta ) { |
|
| 349 | - $this->meta = maybe_unserialize( $meta ); |
|
| 350 | - } |
|
| 351 | - |
|
| 352 | - /** |
|
| 353 | - * Set whether or not the quantities are allowed. |
|
| 354 | - * |
|
| 355 | - * @since 1.0.19 |
|
| 356 | - * @param bool $allow_quantities |
|
| 357 | - */ |
|
| 358 | - public function set_allow_quantities( $allow_quantities ) { |
|
| 359 | - $this->allow_quantities = (bool) $allow_quantities; |
|
| 360 | - } |
|
| 361 | - |
|
| 362 | - /** |
|
| 363 | - * Set whether or not the item is required. |
|
| 364 | - * |
|
| 365 | - * @since 1.0.19 |
|
| 366 | - * @param bool $is_required |
|
| 367 | - */ |
|
| 368 | - public function set_is_required( $is_required ) { |
|
| 369 | - $this->is_required = (bool) $is_required; |
|
| 370 | - } |
|
| 371 | - |
|
| 372 | - /** |
|
| 373 | - * Sets the custom item description. |
|
| 374 | - * |
|
| 375 | - * @since 1.0.19 |
|
| 376 | - * @param string $description |
|
| 377 | - */ |
|
| 378 | - public function set_custom_description( $description ) { |
|
| 379 | - $this->custom_description = $description; |
|
| 380 | - } |
|
| 326 | + /** |
|
| 327 | + * Set the item qantity. |
|
| 328 | + * |
|
| 329 | + * @since 1.0.19 |
|
| 330 | + * @param float $quantity The item quantity. |
|
| 331 | + */ |
|
| 332 | + public function set_quantity( $quantity ) { |
|
| 333 | + |
|
| 334 | + if ( ! is_numeric( $quantity ) ) { |
|
| 335 | + $quantity = 1; |
|
| 336 | + } |
|
| 337 | + |
|
| 338 | + $this->quantity = (float) $quantity; |
|
| 339 | + |
|
| 340 | + } |
|
| 341 | + |
|
| 342 | + /** |
|
| 343 | + * Set the item meta data. |
|
| 344 | + * |
|
| 345 | + * @since 1.0.19 |
|
| 346 | + * @param array $meta The item meta data. |
|
| 347 | + */ |
|
| 348 | + public function set_item_meta( $meta ) { |
|
| 349 | + $this->meta = maybe_unserialize( $meta ); |
|
| 350 | + } |
|
| 351 | + |
|
| 352 | + /** |
|
| 353 | + * Set whether or not the quantities are allowed. |
|
| 354 | + * |
|
| 355 | + * @since 1.0.19 |
|
| 356 | + * @param bool $allow_quantities |
|
| 357 | + */ |
|
| 358 | + public function set_allow_quantities( $allow_quantities ) { |
|
| 359 | + $this->allow_quantities = (bool) $allow_quantities; |
|
| 360 | + } |
|
| 361 | + |
|
| 362 | + /** |
|
| 363 | + * Set whether or not the item is required. |
|
| 364 | + * |
|
| 365 | + * @since 1.0.19 |
|
| 366 | + * @param bool $is_required |
|
| 367 | + */ |
|
| 368 | + public function set_is_required( $is_required ) { |
|
| 369 | + $this->is_required = (bool) $is_required; |
|
| 370 | + } |
|
| 371 | + |
|
| 372 | + /** |
|
| 373 | + * Sets the custom item description. |
|
| 374 | + * |
|
| 375 | + * @since 1.0.19 |
|
| 376 | + * @param string $description |
|
| 377 | + */ |
|
| 378 | + public function set_custom_description( $description ) { |
|
| 379 | + $this->custom_description = $description; |
|
| 380 | + } |
|
| 381 | 381 | |
| 382 | 382 | /** |
| 383 | 383 | * We do not want to save items to the database. |
| 384 | 384 | * |
| 385 | - * @return int item id |
|
| 385 | + * @return int item id |
|
| 386 | 386 | */ |
| 387 | 387 | public function save( $data = array() ) { |
| 388 | 388 | return $this->get_id(); |
| 389 | - } |
|
| 389 | + } |
|
| 390 | 390 | |
| 391 | 391 | /* |
| 392 | 392 | |-------------------------------------------------------------------------- |
@@ -398,23 +398,23 @@ discard block |
||
| 398 | 398 | */ |
| 399 | 399 | |
| 400 | 400 | /** |
| 401 | - * Checks whether the item has enabled dynamic pricing. |
|
| 402 | - * |
|
| 403 | - * @since 1.0.19 |
|
| 404 | - * @return bool |
|
| 405 | - */ |
|
| 406 | - public function is_required() { |
|
| 401 | + * Checks whether the item has enabled dynamic pricing. |
|
| 402 | + * |
|
| 403 | + * @since 1.0.19 |
|
| 404 | + * @return bool |
|
| 405 | + */ |
|
| 406 | + public function is_required() { |
|
| 407 | 407 | return (bool) $this->get_is_required(); |
| 408 | - } |
|
| 409 | - |
|
| 410 | - /** |
|
| 411 | - * Checks whether users can edit the quantities. |
|
| 412 | - * |
|
| 413 | - * @since 1.0.19 |
|
| 414 | - * @return bool |
|
| 415 | - */ |
|
| 416 | - public function allows_quantities() { |
|
| 408 | + } |
|
| 409 | + |
|
| 410 | + /** |
|
| 411 | + * Checks whether users can edit the quantities. |
|
| 412 | + * |
|
| 413 | + * @since 1.0.19 |
|
| 414 | + * @return bool |
|
| 415 | + */ |
|
| 416 | + public function allows_quantities() { |
|
| 417 | 417 | return (bool) $this->get_allow_quantities(); |
| 418 | - } |
|
| 418 | + } |
|
| 419 | 419 | |
| 420 | 420 | } |
@@ -21,22 +21,22 @@ |
||
| 21 | 21 | |
| 22 | 22 | foreach ( $file_types as $file_type ) { |
| 23 | 23 | |
| 24 | - if ( isset( $all_types[ $file_type ] ) ) { |
|
| 25 | - $types[] = $all_types[ $file_type ]; |
|
| 26 | - $file_type = explode( '|', $file_type ); |
|
| 24 | + if ( isset( $all_types[ $file_type ] ) ) { |
|
| 25 | + $types[] = $all_types[ $file_type ]; |
|
| 26 | + $file_type = explode( '|', $file_type ); |
|
| 27 | 27 | |
| 28 | - foreach ( $file_type as $type ) { |
|
| 29 | - $type = trim( $type ); |
|
| 30 | - $types[] = ".$type"; |
|
| 31 | - $_types[] = $type; |
|
| 32 | - } |
|
| 28 | + foreach ( $file_type as $type ) { |
|
| 29 | + $type = trim( $type ); |
|
| 30 | + $types[] = ".$type"; |
|
| 31 | + $_types[] = $type; |
|
| 32 | + } |
|
| 33 | 33 | |
| 34 | - } |
|
| 34 | + } |
|
| 35 | 35 | |
| 36 | 36 | } |
| 37 | 37 | |
| 38 | 38 | if ( ! empty( $required ) ) { |
| 39 | - $label .= "<span class='text-danger'> *</span>"; |
|
| 39 | + $label .= "<span class='text-danger'> *</span>"; |
|
| 40 | 40 | } |
| 41 | 41 | |
| 42 | 42 | ?> |