Plugin Directory


Ignore:
Timestamp:
09/29/2026 12:49:17 PM (3 weeks ago)
Author:
techjewel
Message:

releasing FluentCart version 1.7.0

File:
1 edited

Legend:

Unmodified
Added
Removed
  • fluent-cart/trunk/app/Models/Subscription.php

    r3711586 r3719064  
    10011001            Status::SUBSCRIPTION_EXPIRING,
    10021002            Status::SUBSCRIPTION_PAST_DUE,
    1003         ]);
     1003        ]) || (
     1004            in_array($this->status, [Status::SUBSCRIPTION_PENDING, Status::SUBSCRIPTION_INTENDED], true)
     1005            && $this->hasReactivationAttempt()
     1006            && ((int) $this->bill_times === 0 || (int) $this->bill_count < (int) $this->bill_times)
     1007        );
    10041008
    10051009        return (bool) apply_filters('fluent_cart/subscription/can_reactivate', $canReactivate, [
    10061010            'subscription' => $this
    10071011        ]);
     1012    }
     1013
     1014    /**
     1015     * Pro records `reactivation_order_id` before a reactivation checkout is paid. A first
     1016     * purchase awaiting gateway activation is also pending/intended and can already be
     1017     * billed, so only this marker separates a retryable reactivation from it.
     1018     */
     1019    public function hasReactivationAttempt(): bool
     1020    {
     1021        return (int) Arr::get($this->config, 'reactivation_order_id', 0) > 0;
     1022    }
     1023
     1024    public function isVisibleToCustomer(): bool
     1025    {
     1026        return !in_array($this->status, [Status::SUBSCRIPTION_PENDING, Status::SUBSCRIPTION_INTENDED], true)
     1027            || (int) $this->bill_count > 0
     1028            || $this->hasReactivationAttempt();
     1029    }
     1030
     1031    public function scopeVisibleToCustomer($query)
     1032    {
     1033        return $query->where(function ($query) {
     1034            $query->whereNotIn('status', [Status::SUBSCRIPTION_PENDING, Status::SUBSCRIPTION_INTENDED])
     1035                ->orWhere('bill_count', '>', 0)
     1036                ->orWhere('config', 'LIKE', '%"reactivation_order_id":%');
     1037        });
    10081038    }
    10091039
    … …  
    14151445        $invalidStatuses = [
    14161446            Status::SUBSCRIPTION_EXPIRED,
    1417             Status::SUBSCRIPTION_INTENDED,
    1418             Status::SUBSCRIPTION_PENDING
    14191447        ];
    14201448
    1421         if (in_array($this->status, $invalidStatuses)) {
     1449        if (in_array($this->status, $invalidStatuses)
     1450            || (in_array($this->status, [Status::SUBSCRIPTION_PENDING, Status::SUBSCRIPTION_INTENDED], true)
     1451                && !$this->hasReactivationAttempt())) {
    14221452            return false;
    14231453        }
Note: See TracChangeset for help on using the changeset viewer.