1<?php
2
3namespace WHMCS\Module\Widget;
4
5use WHMCS\Carbon;
6use WHMCS\Clients;
7use WHMCS\Module\AbstractWidget;
8use WHMCS\Module\Queue as ModuleQueue;
9use WHMCS\Orders;
10
11/**
12 * Badges Widget.
13 *
14 * @copyright Copyright (c) WHMCS Limited 2005-2021
15 * @license https://www.whmcs.com/eula/ WHMCS Eula
16 */
17class Badges extends AbstractWidget
18{
19 protected $title = 'Badges';
20 protected $description = '';
21 protected $columns = 3;
22 protected $weight = 0;
23 protected $wrapper = false;
24 protected $cache = true;
25 protected $cacheExpiry = 120;
26 protected $draggable = false;
27
28 public function getData()
29 {
30 $clients = new Clients();
31 $orders = new Orders();
32
33 $ticketCounts = localApi('GetTicketCounts', array());
34
35 return array(
36 'pendingOrders' => $orders->getPendingCount(),
37 'ticketsAwaitingReply' => $ticketCounts['awaitingReply'],
38 'cancellations' => $clients->getNumberOfOpenCancellationRequests(),
39 'moduleQueueCount' => ModuleQueue::incomplete()->count(),
40 );
41 }
42
43 public function generateOutput($data)
44 {
45 $pendingOrders = (int) $data['pendingOrders'];
46 $awaitingReply = (int) $data['ticketsAwaitingReply'];
47 $pendingCancellations = (int) $data['cancellations'];
48 $moduleQueueCount = (int) $data['moduleQueueCount'];
49
50 return <<<EOF
51<div class="row home-status-badge-row">
52 <div class="col-sm-3">
53
54 <div class="health-status-block status-badge-green clearfix">
55 <div class="icon">
56 <a href="orders.php">
57 <i class="fas fa-shopping-cart"></i>
58 </a>
59 </div>
60 <div class="detail">
61 <a href="orders.php?status=Pending">
62 <span class="count">{$pendingOrders}</span>
63 <span class="desc">Pending Orders</span>
64 </a>
65 </div>
66 </div>
67
68 </div>
69 <div class="col-sm-3">
70
71 <div class="health-status-block status-badge-pink clearfix">
72 <div class="icon">
73 <a href="supporttickets.php">
74 <i class="fas fa-comment"></i>
75 </a>
76 </div>
77 <div class="detail">
78 <a href="supporttickets.php">
79 <span class="count">{$awaitingReply}</span>
80 <span class="desc">Tickets Waiting</span>
81 </a>
82 </div>
83 </div>
84
85 </div>
86 <div class="col-sm-3">
87
88 <div class="health-status-block status-badge-orange clearfix">
89 <div class="icon">
90 <a href="cancelrequests.php">
91 <i class="fas fa-ban"></i>
92 </a>
93 </div>
94 <div class="detail">
95 <a href="cancelrequests.php">
96 <span class="count">{$pendingCancellations}</span>
97 <span class="desc">Pending Cancellations</span>
98 </a>
99 </div>
100 </div>
101
102 </div>
103 <div class="col-sm-3">
104
105 <div class="health-status-block status-badge-cyan clearfix">
106 <div class="icon">
107 <a href="modulequeue.php">
108 <i class="fas fa-exclamation-triangle"></i>
109 </a>
110 </div>
111 <div class="detail">
112 <a href="modulequeue.php">
113 <span class="count">{$moduleQueueCount}</span>
114 <span class="desc">Pending Module Actions</span>
115 </a>
116 </div>
117 </div>
118
119 </div>
120</div>
121EOF;
122 }
123}
124