Server IP : 192.158.238.246 / Your IP : 3.142.124.64 Web Server : LiteSpeed System : Linux uniform.iwebfusion.net 4.18.0-553.27.1.lve.1.el8.x86_64 #1 SMP Wed Nov 20 15:58:00 UTC 2024 x86_64 User : jenniferflocom ( 1321) PHP Version : 8.1.32 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : OFF | Pkexec : OFF Directory : /proc/7779/task/7779/cwd/plugins/give/src/Subscriptions/DataTransferObjects/ |
Upload File : |
<?php namespace Give\Subscriptions\DataTransferObjects; /** * Class SubscriptionArgs * @since 2.18.0 */ final class SubscriptionArgs { /** * @var string */ public $period; /** * @var string */ public $times; /** * @var string */ public $frequency; /** * @var string */ public $formTitle; /** * @var string */ public $formId; /** * @var string */ public $priceId; /** * @var string */ public $price; /** * @var string */ public $status; /** * @var float|int|string */ public $initialAmount; /** * @var float|int|string */ public $recurringAmount; /** * @var string */ public $periodInterval; /** * @var float|int */ public $frequencyIntervalCount; /** * @var int */ public $billTimes; /** * @var int|mixed */ public $recurringFeeAmount; /** * @var mixed|string */ public $profileId; /** * @var mixed|string */ public $transactionId; /** * Convert data from request into DTO * * @since 2.18.0 * * @return self */ public static function fromRequest(array $request) { $self = new static(); $self->period = $request['period']; $self->times = $request['times']; $self->frequency = $request['frequency']; $self->formTitle = $request['formTitle']; $self->formId = $request['formId']; $self->priceId = $request['priceId']; $self->price = $request['price']; $self->status = $request['status']; $self->initialAmount = give_sanitize_amount_for_db($self->price); $self->recurringAmount = give_sanitize_amount_for_db($self->price); $self->recurringFeeAmount = isset($request['recurringFeeAmount']) ? $request['recurringFeeAmount'] : 0; $self->profileId = isset($request['profileId']) ? $request['profileId'] : ''; $self->transactionId = isset($request['transactionId']) ? $request['transactionId'] : ''; $self->periodInterval = self::get_interval($self->period, $self->frequency); $self->frequencyIntervalCount = self::get_interval_count($self->period, $self->frequency); // @phpstan-ignore-next-line function is undefined in add-on. Also, the calling class, CreateSubscriptionAction, does not seem to be used... $self->billTimes = give_recurring_calculate_times($self->times, $self->frequency); return $self; } /** * @since 2.18.0 * * @return array */ public function toArray() { return [ 'name' => $this->formTitle, 'id' => $this->formId, // @TODO Deprecate w/ backwards compatiblity. 'form_id' => $this->formId, 'price_id' => $this->priceId, 'initial_amount' => $this->initialAmount, // add fee here in future. 'recurring_amount' => $this->recurringAmount, 'period' => $this->periodInterval, 'frequency' => $this->frequencyIntervalCount, // Passed interval. Example: charge every 3 weeks. 'bill_times' => $this->billTimes, 'profile_id' => '', // Profile ID for this subscription - This is set by the payment gateway. 'transaction_id' => '', // Transaction ID for this subscription - This is set by the payment gateway. 'status' => 'pending', ]; } /** * Gets interval length and interval unit for Authorize.net based on Give subscription period. * * @since 2.18.0 * * @param int $frequency * * @param string $period * * @return string */ private static function get_interval($period, $frequency) { $interval = $period; if ($period === 'quarter') { $interval = 'month'; } return $interval; } /** * Gets interval length and interval unit for Authorize.net based on Give subscription period. * * @since 2.18.0 * * @param int $frequency * * @param string $period * * @return float|int */ private static function get_interval_count($period, $frequency) { $interval_count = $frequency; if ($period === 'quarter') { $interval_count = 3 * $frequency; } return $interval_count; } }