PluginProbe
GiveWP – Donation Plugin and Fundraising Platform / 3.12.0
GiveWP – Donation Plugin and Fundraising Platform v3.12.0
4.16.8 4.16.7.2 4.16.7.1 4.16.7 4.16.6.1 4.16.6 4.16.5.1 4.16.5 4.16.4 4.16.3 4.16.2 4.16.1 4.16.0 4.15.5 4.15.4 4.15.3 4.15.2 4.15.1 4.15.0 2.3.0 2.3.1 2.3.2 2.30.0 2.31.0 2.31.1 All 253 releases
give / src / Subscriptions / ListTable / Columns / StatusColumn.php
StatusColumn.php
114 lines 3.2 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 declare(strict_types=1);
4
5 namespace Give\Subscriptions\ListTable\Columns;
6
7 use Give\Framework\ListTable\ModelColumn;
8 use Give\Subscriptions\Models\Subscription;
9
10 /**
11 * @since 2.24.0
12 *
13 * @extends ModelColumn<Subscription>
14 */
15 class StatusColumn extends ModelColumn
16 {
17 protected $sortColumn = 'status';
18
19 /**
20 * @since 2.24.0
21 *
22 * @inheritDoc
23 */
24 public static function getId(): string
25 {
26 return 'status';
27 }
28
29 /**
30 * @since 2.24.0
31 *
32 * @inheritDoc
33 */
34 public function getLabel(): string
35 {
36 return __('Status', 'give');
37 }
38
39 /**
40 * @since 2.24.0
41 *
42 * @inheritDoc
43 *
44 * @param Subscription $model
45 */
46 public function getCellValue($model): string
47 {
48 $template = '
49 <div class="subscriptionStatus">
50 <div class="statusBadge statusBadge--%1$s"><div>%2$s</div></div>
51 %3$s
52 </div>
53 ';
54
55 $extraTemplate = '
56 <div class="subscriptionStatus__container">
57 <img src="%1$s" alt="%2$s"/>
58 <div class="subscriptionStatus__message subscriptionStatus__message--%3$s">
59 <img src="%1$s" alt="%2$s"/>
60 <p>%4$s</p>
61 </div>
62 </div>
63 ';
64
65 if ($model->status->isFailing()) {
66 $extra = [
67 'label' => __('failed', 'give'),
68 'status' => 'failed',
69 'text' => __('This subscription has <strong>failed</strong>', 'give'),
70 ];
71 } elseif ($model->isIndefinite()) {
72 $extra = [
73 'label' => __('indefinite', 'give'),
74 'status' => 'indefinite',
75 'text' => __('This subscription continues <strong>indefinitely</strong>', 'give'),
76 ];
77 } elseif ($model->hasExceededTheMaxInstallments()) {
78 $extra = [
79 'label' => __('exceeded', 'give'),
80 'status' => 'exceeded',
81 'text' => __('This subscription has <strong>exceeded</strong> the expected donations. Try syncing with the gateway and cancelling if necessary.',
82 'give'),
83 ];
84 } elseif (0 < ($remainingInstallments = $model->remainingInstallments())) {
85 $extra = [
86 'label' => __('limited', 'give'),
87 'status' => 'limited',
88 'text' => sprintf(
89 _n(
90 'This subscription has <strong>%s</strong> remaining donation',
91 'This subscription has <strong>%s</strong> remaining donations',
92 $remainingInstallments,
93 'give'
94 ),
95 $remainingInstallments
96 ),
97 ];
98 }
99
100 return sprintf(
101 $template,
102 $model->status,
103 $model->status->label(),
104 isset($extra) ? sprintf(
105 $extraTemplate,
106 GIVE_PLUGIN_URL . 'assets/dist/images/list-table/' . $extra['status'] . '-subscription-icon.svg',
107 $extra['label'],
108 $extra['status'],
109 $extra['text']
110 ) : ''
111 );
112 }
113 }
114