1<?php
2
3namespace WHMCS\Module\Widget;
4
5use WHMCS\Carbon;
6use WHMCS\Module\AbstractWidget;
7
8/**
9 * Abstract Widget.
10 *
11 * @copyright Copyright (c) WHMCS Limited 2005-2021
12 * @license https://www.whmcs.com/eula/ WHMCS Eula
13 */
14class Support extends AbstractWidget
15{
16 protected $title = 'Support';
17 protected $description = 'An overview of support.';
18 protected $weight = 600;
19 protected $cache = true;
20 protected $cacheExpiry = 120;
21 protected $cachePerUser = true;
22 protected $requiredPermission = 'List Support Tickets';
23
24 public function getData()
25 {
26 $counts = localApi('GetTicketCounts', array());
27
28 $tickets = localApi('GetTickets', array('status' => 'Awaiting Reply', 'limitstart' => '0', 'limitnum' => '5'));
29
30 return array(
31 'tickets' => array(
32 'counts' => $counts,
33 'recent' => (isset($tickets['tickets']['ticket'])) ? $tickets['tickets']['ticket'] : [],
34 ),
35 );
36 }
37
38 public function generateOutput($data)
39 {
40 $ticketsAwaitingReply = $data['tickets']['counts']['awaitingReply'];
41 $ticketsAssigned = $data['tickets']['counts']['flaggedTickets'];
42
43 $recentTickets = '';
44 foreach ($data['tickets']['recent'] as $ticket) {
45 $recentTickets .= '<div class="ticket">
46 <div class="pull-right color-blue">' . Carbon::createFromFormat('Y-m-d H:i:s', $ticket['lastreply'])->diffForHumans() . '</div>
47 <a href="supporttickets.php?action=view&id=' . $ticket['id'] . '">#' . $ticket['tid'] . ' - ' . $ticket['subject'] . '</a>
48 </div>';
49 }
50
51 return <<<EOF
52<div class="icon-stats">
53 <div class="row">
54 <div class="col-sm-6">
55 <div class="item">
56 <div class="icon-holder text-center color-blue">
57 <a href="supporttickets.php">
58 <i class="pe-7s-ticket"></i>
59 </a>
60 </div>
61 <div class="data">
62 <div class="note">
63 <a href="supporttickets.php">Awaiting Reply</a>
64 </div>
65 <div class="number">
66 <a href="supporttickets.php">
67 <span class="color-blue">{$ticketsAwaitingReply}</span>
68 <span class="unit">Tickets</span>
69 </a>
70 </div>
71 </div>
72 </div>
73 </div>
74 <div class="col-sm-6">
75 <div class="item">
76 <div class="icon-holder text-center color-pink">
77 <a href="supporttickets.php?view=flagged">
78 <i class="pe-7s-flag"></i>
79 </a>
80 </div>
81 <div class="data">
82 <div class="note">
83 <a href="supporttickets.php?view=flagged">Assigned To You</a>
84 </div>
85 <div class="number">
86 <a href="supporttickets.php?view=flagged">
87 <span class="color-pink">{$ticketsAssigned}</span>
88 <span class="unit">Tickets</span>
89 </a>
90 </div>
91 </div>
92 </div>
93 </div>
94 </div>
95</div>
96
97<div class="tickets-list">
98 {$recentTickets}
99</div>
100
101<div class="footer">
102 <a href="supporttickets.php">View All Tickets</a>
103 <a href="supporttickets.php?view=flagged">View My Tickets</a>
104 <a href="supporttickets.php?action=open">Open New Ticket</a>
105</div>
106
107EOF;
108 }
109}
110