PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 3.16.2
GiveWP – Donation Plugin and Fundraising Platform v3.16.2
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 2 years ago IdColumn.php 2 years ago SalesAmountColumn.php 2 years ago SalesCountColumn.php 2 years ago TitleColumn.php 2 years ago
SalesAmountColumn.php
95 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.6.0
42 *
43 * @param Event $model
44 */
45 public function getCellValue($model, $locale = ''): string
46 {
47 $ticketTypes = [];
48 foreach ($model->ticketTypes()->getAll() ?? [] as $ticketType) {
49 $ticketTypes[$ticketType->id] = [
50 'price' => $ticketType->price,
51 'capacity' => $ticketType->capacity,
52 ];
53 }
54
55 $salesTotal = array_reduce(
56 $model->eventTickets()->getAll() ?? [],
57 function (Money $carry, $eventTicket) use ($ticketTypes) {
58 return $carry->add($ticketTypes[$eventTicket->ticketTypeId]['price']);
59 },
60 new Money(0, give_get_currency())
61 );
62 $maxCapacitySales = array_reduce($ticketTypes, function (Money $carry, $ticketType) {
63 return $carry->add($ticketType['price']->multiply($ticketType['capacity']));
64 }, new Money(0, give_get_currency()));
65
66 $salesPercentage = $maxCapacitySales->formatToMinorAmount() > 0 ? max(
67 min($salesTotal->formatToMinorAmount() / $maxCapacitySales->formatToMinorAmount(), 100),
68 0
69 ) : 0;
70
71 $template = '
72 <div
73 role="progressbar"
74 aria-labelledby="giveEventTicketsProgressBar-%1$d"
75 aria-valuenow="%2$s"
76 aria-valuemin="0"
77 aria-valuemax="100"
78 class="goalProgress"
79 >
80 <span style="width: %2$s%%"></span>
81 </div>
82 <div id="giveEventTicketsProgressBar-%1$d">%3$s %4$s %5$s</div>
83 ';
84
85 return sprintf(
86 $template,
87 $model->id,
88 $salesPercentage,
89 $salesTotal->formatToLocale($locale),
90 __('of', 'give'),
91 $maxCapacitySales->formatToLocale($locale)
92 );
93 }
94 }
95