PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / trunk
GiveWP – Donation Plugin and Fundraising Platform vtrunk
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 2.32.0 2.33.0 2.33.1 2.33.2 2.33.3 2.33.4 2.33.5 2.4.0 2.4.1 2.4.2 2.4.3 2.4.4 2.4.5 2.4.6 2.4.7 2.5.0 2.5.1 2.5.10 2.5.11 2.5.12 2.5.13 2.5.2 2.5.3 2.5.4 2.5.5 2.5.6 2.5.7 2.5.8 2.5.9 2.6.0 2.6.1 2.6.2 2.6.3 2.7.0 2.7.1 2.7.2 2.7.3 2.7.4 2.7.5 2.8.0 2.8.1 2.9.0 2.9.1 2.9.2 2.9.3 2.9.4 2.9.5 2.9.6 2.9.7 3.0.0 3.0.1 3.0.2 3.0.3 3.0.4 3.1.0 3.1.1 3.1.2 3.10.0 3.11.0 3.12.0 3.12.1 3.12.2 3.12.3 3.13.0 3.14.0 3.14.1 3.14.2 3.15.0 3.15.1 3.16.0 3.16.1 3.16.2 3.16.3 3.16.4 3.16.5 3.17.0 3.17.1 3.17.2 3.18.0 3.19.0 3.19.1 3.19.2 3.19.3 3.19.4 3.2.0 3.2.1 3.2.2 3.20.0 3.21.0 3.21.1 3.22.0 3.22.1 3.22.2 3.3.0 3.3.1 3.4.0 3.4.1 3.4.2 3.5.0 3.5.1 3.6.0 3.6.1 3.6.2 3.7.0 3.8.0 3.9.0 4.0.0 4.1.0 4.1.1 4.10.0 4.10.1 4.11.0 4.12.0 4.13.0 4.13.1 4.13.2 4.14.0 4.14.1 4.14.2 4.14.3 4.14.4 4.14.5 4.14.6 4.2.0 4.2.1 4.3.0 4.3.1 4.3.2 4.4.0 4.5.0 4.6.1 4.7.0 4.7.1 4.8.0 4.8.1 4.9.0 trunk 1.9.0 2.0.0 2.0.1 2.0.2 2.0.3 2.0.4 2.0.5 2.0.6 2.0.7 2.1.0 2.1.1 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 2.1.7 2.1.8 2.10.0 2.10.1 2.10.2 2.10.3 2.10.4 2.11.0 2.11.1 2.11.2 2.11.3 2.12.0 2.12.1 2.12.2 2.12.3 2.13.0 2.13.1 2.13.2 2.13.3 2.13.4 2.14.0 2.15.0 2.16.0 2.16.1 2.17.0 2.17.1 2.17.3 2.18.0 2.18.1 2.19.1 2.19.2 2.19.3 2.19.4 2.19.5 2.19.6 2.19.7 2.19.8 2.2.0 2.2.1 2.2.2 2.2.3 2.2.4 2.2.5 2.2.6 2.20.0 2.20.1 2.20.2 2.21.0 2.21.1 2.21.2 2.21.3 2.21.4 2.22.0 2.22.1 2.22.2 2.22.3 2.23.0 2.23.1 2.23.2 2.24.0 2.24.1 2.24.2 2.25.0 2.25.1 2.25.2 2.25.3 2.26.0 2.27.0 2.27.1 2.27.2 2.27.3 2.28.0 2.29.0 2.29.1 2.29.2
give / src / EventTickets / ListTable / Columns / SalesAmountColumn.php
give / src / EventTickets / ListTable / Columns Last commit date
DateColumn.php 2 years ago DescriptionColumn.php 1 year ago IdColumn.php 2 years ago SalesAmountColumn.php 1 year ago SalesCountColumn.php 2 years ago TitleColumn.php 2 years ago
SalesAmountColumn.php
100 lines
1 <?php
2
3 declare(strict_types=1);
4
5 namespace Give\EventTickets\ListTable\Columns;
6
7 use Give\EventTickets\Models\Event;
8 use Give\Framework\ListTable\ModelColumn;
9 use Give\Framework\Support\ValueObjects\Money;
10
11 /**
12 * @since 3.6.0
13 *
14 * @extends ModelColumn<Event>
15 */
16 class SalesAmountColumn extends ModelColumn
17 {
18 /**
19 * @inheritDoc
20 *
21 * @since 3.6.0
22 */
23 public static function getId(): string
24 {
25 return 'salesAmount';
26 }
27
28 /**
29 * @inheritDoc
30 *
31 * @since 3.6.0
32 */
33 public function getLabel(): string
34 {
35 return __('Ticket Sales', 'give');
36 }
37
38 /**
39 * @inheritDoc
40 *
41 * @since 3.20.0 Refactored to use event ticket amount instead of ticket type price
42 * @since 3.6.0
43 *
44 * @param Event $model
45 */
46 public function getCellValue($model, $locale = ''): string
47 {
48 $ticketTypes = [];
49 foreach ($model->ticketTypes()->getAll() ?? [] as $ticketType) {
50 $salesCount = $ticketType->eventTickets()->count();
51 $ticketsAvailable = $ticketType->capacity - $salesCount;
52
53 $ticketTypes[$ticketType->id] = [
54 'price' => $ticketType->price,
55 'capacity' => $ticketType->capacity,
56 'ticketsAvailable' => $ticketsAvailable,
57 ];
58 }
59
60 $salesTotal = array_reduce(
61 $model->eventTickets()->getAll() ?? [],
62 function (Money $carry, $eventTicket) {
63 return $carry->add($eventTicket->amount);
64 },
65 new Money(0, give_get_currency())
66 );
67 $maxCapacitySales = array_reduce($ticketTypes, function (Money $carry, $ticketType) {
68 return $carry->add($ticketType['price']->multiply($ticketType['ticketsAvailable']));
69 }, $salesTotal);
70
71 $salesPercentage = $maxCapacitySales->formatToMinorAmount() > 0 ? max(
72 min($salesTotal->formatToMinorAmount() / $maxCapacitySales->formatToMinorAmount(), 100),
73 0
74 ) : 0;
75
76 $template = '
77 <div
78 role="progressbar"
79 aria-labelledby="giveEventTicketsProgressBar-%1$d"
80 aria-valuenow="%2$s"
81 aria-valuemin="0"
82 aria-valuemax="100"
83 class="goalProgress"
84 >
85 <span style="width: %2$s%%"></span>
86 </div>
87 <div id="giveEventTicketsProgressBar-%1$d">%3$s %4$s %5$s</div>
88 ';
89
90 return sprintf(
91 $template,
92 $model->id,
93 $salesPercentage,
94 $salesTotal->formatToLocale($locale),
95 __('of', 'give'),
96 $maxCapacitySales->formatToLocale($locale)
97 );
98 }
99 }
100