Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion includes/enums/order/status.php
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@

class Status {
const PENDING = 'pending';
const PREPAID = 'prepaid';
const PAID = 'paid';
const FAILED = 'failed';
const CANCELLED = 'cancelled';
Expand All @@ -16,6 +17,7 @@ class Status {
public static function all() {
return [
self::PENDING,
self::PREPAID,
self::PAID,
self::FAILED,
self::CANCELLED,
Expand All @@ -24,4 +26,4 @@ public static function all() {
self::UNPAID,
];
}
}
}
1 change: 1 addition & 0 deletions includes/payments/functions.php
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@ function atbdp_get_payment_statuses() {
$statuses = [
'created' => __( "Created", 'directorist' ),
'pending' => __( "Pending", 'directorist' ),
'prepaid' => __( "Prepaid", 'directorist' ),
'completed' => __( "Completed", 'directorist' ),
'failed' => __( "Failed", 'directorist' ),
'cancelled' => __( "Cancelled", 'directorist' ),
Expand Down
3 changes: 2 additions & 1 deletion includes/repositories/order-repository.php
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
use Directorist\Helpers\DateTime;
use Directorist\DTO\Order\DTO;
use Directorist\Enums\Order\Status as OrderStatus;
use Directorist\Enums\Payment\Status as PaymentStatus;
use Directorist\Enums\Order\TaxType as OrderTaxType;
use Directorist\Enums\Order\DiscountType as OrderDiscountType;
use Directorist\DTO\Order\Read;
Expand Down Expand Up @@ -169,7 +170,7 @@ public function update( \Directorist\Utils\DTO $dto ) {

do_action( 'directorist_after_order_update', $this->to_dto( $updated_order ), $old_order );

if ( $dto->is_initialized( 'status' ) ) {
if ( $dto->is_initialized( 'status' ) && in_array( $dto->get_status(), PaymentStatus::all(), true ) ) {
( new PaymentRepository )->update_status_by_order_id( $dto->get_id(), $dto->get_status() );
}

Expand Down
2 changes: 2 additions & 0 deletions includes/rest-api/Version1/class-orders-controller.php
Original file line number Diff line number Diff line change
Expand Up @@ -305,6 +305,7 @@ protected function legacy_status_to_current_status( string $status ): string {
$map = array(
'created' => OrderStatus::PENDING,
'pending' => OrderStatus::PENDING,
'prepaid' => OrderStatus::PREPAID,
'completed' => OrderStatus::PAID,
'failed' => OrderStatus::FAILED,
'cancelled' => OrderStatus::CANCELLED,
Expand All @@ -317,6 +318,7 @@ protected function legacy_status_to_current_status( string $status ): string {
protected function current_status_to_legacy_status( string $status ): string {
$map = array(
OrderStatus::PENDING => 'pending',
OrderStatus::PREPAID => 'prepaid',
OrderStatus::PAID => 'completed',
OrderStatus::FAILED => 'failed',
OrderStatus::CANCELLED => 'cancelled',
Expand Down
24 changes: 23 additions & 1 deletion includes/setup/activation.php
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ public static function register_hooks() {
public static function run() {
// Run the activation tasks.
self::create_tables();
self::sync_order_status_enum();
}

public static function create_tables() {
Expand Down Expand Up @@ -77,4 +78,25 @@ public static function create_tables() {
}
);
}
}

private static function sync_order_status_enum() {
global $wpdb;

$table_name = $wpdb->prefix . 'directorist_orders';

if ( $wpdb->get_var( $wpdb->prepare( 'SHOW TABLES LIKE %s', $table_name ) ) !== $table_name ) {
return;
}

$statuses = array_map(
function( $status ) {
return "'" . esc_sql( $status ) . "'";
},
OrderStatus::all()
);

$wpdb->query(
"ALTER TABLE {$table_name} MODIFY status ENUM(" . implode( ',', $statuses ) . ") NOT NULL DEFAULT '" . esc_sql( OrderStatus::PENDING ) . "'"
);
}
}
Loading