Completed
Push — master ( 26776f...d9604e )
by Michael
11:31
created

main.php ➔ mailEvents()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 22
Code Lines 14

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 14
nc 1
nop 0
dl 0
loc 22
rs 9.2
c 0
b 0
f 0
1
<?php
0 ignored issues
show
Coding Style Compatibility introduced by
For compatibility and reusability of your code, PSR1 recommends that a file should introduce either new symbols (like classes, functions, etc.) or have side-effects (like outputting something, or including other files), but not both at the same time. The first symbol is defined on line 6 and the first side effect is on line 3.

The PSR-1: Basic Coding Standard recommends that a file should either introduce new symbols, that is classes, functions, constants or similar, or have side effects. Side effects are anything that executes logic, like for example printing output, changing ini settings or writing to a file.

The idea behind this recommendation is that merely auto-loading a class should not change the state of an application. It also promotes a cleaner style of programming and makes your code less prone to errors, because the logic is not spread out all over the place.

To learn more about the PSR-1, please see the PHP-FIG site on the PSR-1.

Loading history...
2
//$Id: index.php,v 1.144 2005/11/29 17:48:12 ackbarr Exp $
3
include('../../../include/cp_header.php');
4
include_once('admin_header.php');
5
include_once(XOOPS_ROOT_PATH . '/class/pagenav.php');
6
define('MAX_STAFF_RESPONSETIME', 5);
7
define('MAX_STAFF_CALLSCLOSED', 5);
8
9
global $HTTP_GET_VARS, $xoopsModule;
0 ignored issues
show
Compatibility Best Practice introduced by
Use of global functionality is not recommended; it makes your code harder to test, and less reusable.

Instead of relying on global state, we recommend one of these alternatives:

1. Pass all data via parameters

function myFunction($a, $b) {
    // Do something
}

2. Create a class that maintains your state

class MyClass {
    private $a;
    private $b;

    public function __construct($a, $b) {
        $this->a = $a;
        $this->b = $b;
    }

    public function myFunction() {
        // Do something
    }
}
Loading history...
10
$module_id = $xoopsModule->getVar('mid');
11
12
$op = 'default';
13
14
if ( isset( $_REQUEST['op'] ) )
15
{
16
    $op = $_REQUEST['op'];
17
}
18
19
switch ( $op )
20
{
21
    case "about":
22
        about();
23
        break;
24
25
    case "mailEvents":
26
        mailEvents();
27
        break;
28
29
    case "searchMailEvents":
30
        searchMailEvents();
31
        break;
32
33
    case "blocks":
34
        require 'myblocksadmin.php';
35
        break;
36
37
    case "createdir":
38
        createdir();
39
        break;
40
41
    case "setperm":
42
        setperm();
43
        break;
44
45
    case "manageFields":
46
        manageFields();
47
        break;
48
         
49
    default:
50
        xhelp_default();
51
        break;
52
}
53
54
function modifyTicketFields()
55
{
56
    //xoops_cp_header();
57
    //echo "not created yet";
58
    xoops_cp_footer();
59
}
60
61
function displayEvents($mailEvents, $mailboxes)
62
{
63
    echo "<table width='100%' cellspacing='1' class='outer'>";
64
    if(count($mailEvents) > 0){
65
        echo "<tr><th colspan='4'>"._AM_XHELP_TEXT_MAIL_EVENTS."</th></tr>";
66
        echo "<tr class='head'><td>"._AM_XHELP_TEXT_MAILBOX."</td>
67
                              <td>"._AM_XHELP_TEXT_EVENT_CLASS."</td>
68
                              <td>"._AM_XHELP_TEXT_DESCRIPTION."</td>
69
                              <td>"._AM_XHELP_TEXT_TIME."</td>
70
             </tr>";
71
72
        $class = 'odd';
73
        foreach($mailEvents as $event){
74
            echo "<tr class='". $class ."'><td>".$mailboxes[$event->getVar('mbox_id')]->getVar('emailaddress')."</td>
75
                      <td>".xhelpGetEventClass($event->getVar('event_class'))."</td>
76
                      <td>".$event->getVar('event_desc')."</td>
77
                      <td>".$event->posted()."</td>
78
                  </tr>";
79
            $class = ($class == 'odd') ? 'even' : 'odd';
80
        }
81
82
    } else {
83
        echo "<tr><th>"._AM_XHELP_TEXT_MAIL_EVENTS."</th></tr>";
84
        echo "<tr><td class='odd'>"._AM_XHELP_NO_EVENTS."</td></tr>";
85
    }
86
    echo "</table><br />";
87
    echo "<a href='index.php?op=searchMailEvents'>"._AM_XHELP_SEARCH_EVENTS."</a>";
88
}
89
90
function mailEvents()
91
{
92
    // Will display the last 50 mail events
93
    $hMailEvent =& xhelpGetHandler('mailEvent');
94
    $hDeptMbox =& xhelpGetHandler('departmentMailBox');
95
    $mailboxes =& $hDeptMbox->getObjects(null, true);
96
97
    $crit = new Criteria('', '');
98
    $crit->setLimit(50);
99
    $crit->setOrder('DESC');
100
    $crit->setSort('posted');
101
    $mailEvents =& $hMailEvent->getObjects($crit);
102
103
    xoops_cp_header();
104
    //echo $oAdminButton->renderButtons('mailEvents');
105
    $indexAdmin = new ModuleAdmin();
106
    echo $indexAdmin->addNavigation('main.php');
107
108
    displayEvents($mailEvents, $mailboxes);
109
110
    include_once "admin_footer.php";
111
}
112
113
function searchMailEvents()
0 ignored issues
show
Coding Style introduced by
searchMailEvents uses the super-global variable $_POST which is generally not recommended.

Instead of super-globals, we recommend to explicitly inject the dependencies of your class. This makes your code less dependent on global state and it becomes generally more testable:

// Bad
class Router
{
    public function generate($path)
    {
        return $_SERVER['HOST'].$path;
    }
}

// Better
class Router
{
    private $host;

    public function __construct($host)
    {
        $this->host = $host;
    }

    public function generate($path)
    {
        return $this->host.$path;
    }
}

class Controller
{
    public function myAction(Request $request)
    {
        // Instead of
        $page = isset($_GET['page']) ? intval($_GET['page']) : 1;

        // Better (assuming you use the Symfony2 request)
        $page = $request->query->get('page', 1);
    }
}
Loading history...
114
{
115
    xoops_cp_header();
116
    //echo $oAdminButton->renderButtons('mailEvents');
117
    $indexAdmin = new ModuleAdmin();
118
    echo $indexAdmin->addNavigation('main.php');
119
120
    if(!isset($_POST['searchEvents'])){
121
122
        $stylePath = include_once XHELP_INCLUDE_PATH.'/calendar/calendarjs.php';
123
        echo '<link rel="stylesheet" type="text/css" media="all" href="'.$stylePath.'" /><!--[if gte IE 5.5000]><script src="iepngfix.js" language="JavaScript" type="text/javascript"></script><![endif]-->';
124
125
        echo "<form method='post' action='".XHELP_ADMIN_URL."/index.php?op=searchMailEvents'>";
126
127
        echo "<table width='100%' cellspacing='1' class='outer'>";
128
        echo "<tr><th colspan='2'>"._AM_XHELP_SEARCH_EVENTS."</th></tr>";
129
        echo "<tr><td width='20%' class='head'>"._AM_XHELP_TEXT_MAILBOX."</td>
130
                  <td class='even'><input type='text' size='55' name='email' class='formButton'></td></tr>";
131
        echo "<tr><td class='head'>"._AM_XHELP_TEXT_DESCRIPTION."</td>
132
                  <td class='even'><input type='text' size='55' name='description' class='formButton'></td></tr>";
133
        echo "<tr><td class='head'>"._AM_XHELP_SEARCH_BEGINEGINDATE."</td>
134
                  <td class='even'><input type='text' name='begin_date' id='begin_date' size='10' maxlength='10' value='".formatTimestamp(time(), 'mysql')."' />
135
                                  <a href='' onclick='return showCalendar(\"begin_date\");'><img src='".XHELP_IMAGE_URL."/calendar.png' alt='Calendar image' name='calendar' style='vertical-align:bottom;border:0;background:transparent' /></a>&nbsp;";
136
        xhelpDrawHourSelect("begin_hour", 12);
137
        xhelpDrawMinuteSelect("begin_minute");
138
        xhelpDrawModeSelect("begin_mode");
139
        echo "<tr><td class='head'>"._AM_XHELP_SEARCH_ENDDATE."</td>
140
                  <td class='even'><input type='text' name='end_date' id='end_date' size='10' maxlength='10' value='".formatTimestamp(time(), 'mysql')."' />
141
                                  <a href='' onclick='return showCalendar(\"end_date\");'><img src='".XHELP_IMAGE_URL."/calendar.png' alt='Calendar image' name='calendar' style='vertical-align:bottom;border:0;background:transparent' /></a>&nbsp;";
142
        xhelpDrawHourSelect("end_hour", 12);
143
        xhelpDrawMinuteSelect("end_minute");
144
        xhelpDrawModeSelect("end_mode");
145
        echo "<tr><td class='foot' colspan='2'><input type='submit' name='searchEvents' value='"._AM_XHELP_BUTTON_SEARCH."' /></td></tr>";
146
        echo "</table>";
147
        echo "</form>";
148
149
        include_once "admin_footer.php";
150
    } else {
151
        $hMailEvent =& xhelpGetHandler('mailEvent');
152
        $hDeptMbox =& xhelpGetHandler('departmentMailBox');
153
        $mailboxes =& $hDeptMbox->getObjects(null, true);
154
155
        $begin_date = explode( '-', $_POST['begin_date']);
156
        $end_date = explode('-', $_POST['end_date']);
157
        $begin_hour = xhelpChangeHour($_POST['begin_mode'], $_POST['begin_hour']);
158
        $end_hour = xhelpChangeHour($_POST['end_mode'], $_POST['end_hour']);
159
160
        // Get timestamps to search by
161
        $begin_time = mktime($begin_hour, $_POST['begin_minute'], 0, $begin_date[1], $begin_date[2], $begin_date[0]);
162
        $end_time = mktime($end_hour, $_POST['end_minute'], 0, $end_date[1], $end_date[2], $end_date[0]);
163
164
        $crit = new CriteriaCompo(new Criteria('posted', $begin_time, '>='));
165
        $crit->add(new Criteria('posted', $end_time, '<='));
166
        if($_POST['email'] != ''){
167
            $email = $_POST['email'];
168
            $crit->add(new Criteria('emailaddress', "%$email%", "LIKE", "d"));
169
        }
170
        if($_POST['description'] != ''){
171
            $description = $_POST['description'];
172
            $crit->add(new Criteria('event_desc', "%$description%", "LIKE"));
173
        }
174
        $crit->setOrder('DESC');
175
        $crit->setSort('posted');
176
        if(isset($email)){
177
            $mailEvents =& $hMailEvent->getObjectsJoin($crit);
178
        } else {
179
            $mailEvents =& $hMailEvent->getObjects($crit);
180
        }
181
182
        displayEvents($mailEvents, $mailboxes);
183
184
        include_once "admin_footer.php";
185
    }
186
}
187
188
/**
189
 * changes hour to am/pm
190
 *
191
 * @param int $mode, 1-am, 2-pm
0 ignored issues
show
Bug introduced by
There is no parameter named $mode,. Was it maybe removed?

This check looks for PHPDoc comments describing methods or function parameters that do not exist on the corresponding method or function.

Consider the following example. The parameter $italy is not defined by the method finale(...).

/**
 * @param array $germany
 * @param array $island
 * @param array $italy
 */
function finale($germany, $island) {
    return "2:1";
}

The most likely cause is that the parameter was removed, but the annotation was not.

Loading history...
192
 * @param int $hour hour of the day
193
 *
194
 * @return hour in 24 hour mode
0 ignored issues
show
Documentation introduced by
Should the return type not be integer?

This check compares the return type specified in the @return annotation of a function or method doc comment with the types returned by the function and raises an issue if they mismatch.

Loading history...
195
 */
196
function xhelpChangeHour($mode, $hour)
197
{
198
    $mode = intval($mode);
199
    $hour = intval($hour);
200
201
    if($mode == 2){
202
        $hour = $hour + 12;
203
204
        return $hour;
205
    }
206
207
    return $hour;
208
}
209
210
function xhelpDrawHourSelect($name, $lSelect="-1")
211
{
212
    echo "<select name='".$name."'>";
213
    for($i = 1; $i <= 12; $i++){
214
        if($lSelect == $i){
215
            $selected = "selected='selected'";
216
        } else {
217
            $selected = '';
218
        }
219
        echo "<option value='".$i."'".$selected.">".$i."</option>";
220
    }
221
    echo "</select>";
222
}
223
224
function xhelpDrawMinuteSelect($name)
225
{
226
    $lSum = 0;
227
228
    echo "<select name='".$name."'>";
229
    for($i = 0; $lSum <= 50; $i++){
230
        if($i == 0){
231
            echo "<option value='00' selected='selected'>00</option>";
232
        } else {
233
            $lSum = $lSum + 5;
234
            echo "<option value='".$lSum."'>".$lSum."</option>";
235
        }
236
    }
237
    echo "</select>";
238
}
239
240
function xhelpDrawModeSelect($name, $sSelect='AM')
241
{
242
    echo "<select name='".$name."'>";
243
    if($sSelect == 'AM'){
244
        echo "<option value='1' selected='selected'>AM</option>";
245
        echo "<option value='2'>PM</option>";
246
    } else {
247
        echo "<option value='1'>AM</option>";
248
        echo "<option value='2' selected='selected'>PM</option>";
249
    }
250
}
251
252
function xhelp_default()
253
{
254
    global $xoopsModuleConfig;
0 ignored issues
show
Compatibility Best Practice introduced by
Use of global functionality is not recommended; it makes your code harder to test, and less reusable.

Instead of relying on global state, we recommend one of these alternatives:

1. Pass all data via parameters

function myFunction($a, $b) {
    // Do something
}

2. Create a class that maintains your state

class MyClass {
    private $a;
    private $b;

    public function __construct($a, $b) {
        $this->a = $a;
        $this->b = $b;
    }

    public function myFunction() {
        // Do something
    }
}
Loading history...
255
    xoops_cp_header();
256
    //echo $oAdminButton->renderButtons('index');
257
    $indexAdmin = new ModuleAdmin();
258
    echo $indexAdmin->addNavigation('main.php');
259
260
    $displayName =& $xoopsModuleConfig['xhelp_displayName'];    // Determines if username or real name is displayed
261
262
    $stylePath = XHELP_BASE_URL.'/styles/xhelp.css';
263
    echo '<link rel="stylesheet" type="text/css" media="all" href="'.$stylePath.'" /><!--[if gte IE 5.5000]><script src="iepngfix.js" language="JavaScript" type="text/javascript"></script><![endif]-->';
264
265
    global $xoopsUser, $xoopsDB;
0 ignored issues
show
Compatibility Best Practice introduced by
Use of global functionality is not recommended; it makes your code harder to test, and less reusable.

Instead of relying on global state, we recommend one of these alternatives:

1. Pass all data via parameters

function myFunction($a, $b) {
    // Do something
}

2. Create a class that maintains your state

class MyClass {
    private $a;
    private $b;

    public function __construct($a, $b) {
        $this->a = $a;
        $this->b = $b;
    }

    public function myFunction() {
        // Do something
    }
}
Loading history...
266
    $hTickets =& xhelpGetHandler('ticket');
267
    $hStatus =& xhelpGetHandler('status');
268
269
    $crit = new Criteria('', '');
270
    $crit->setSort('description');
271
    $crit->setOrder('ASC');
272
    $statuses =& $hStatus->getObjects($crit);
273
    $table_class = array('odd', 'even');
274
    echo "<table border='0' width='100%'>";
275
    echo "<tr><td width='50%' valign='top'>";
276
    echo "<div id='ticketInfo'>";
277
    echo "<table border='0' width='95%' cellspacing='1' class='outer'>
278
          <tr><th colspan='2'>". _AM_XHELP_TEXT_TICKET_INFO ."</th></tr>";
279
    $class = "odd";
280
    $totalTickets = 0;
281
    foreach($statuses as $status){
282
        $crit = new Criteria('status', $status->getVar('id'));
283
        $numTickets =& $hTickets->getCount($crit);
284
        $totalTickets += $numTickets;
285
286
        echo "<tr class='".$class."'><td>".$status->getVar('description')."</td><td>".$numTickets."</td></tr>";
287
        if($class == "odd"){
288
            $class = "even";
289
        } else {
290
            $class = "odd";
291
        }
292
    }
293
    echo "<tr class='foot'><td>"._AM_XHELP_TEXT_TOTAL_TICKETS."</td><td>".$totalTickets."</td></tr>";
294
    echo "</table></div><br />";
295
296
    $hStaff =& xhelpGetHandler('staff');
297
    $hResponses =& xhelpGetHandler('responses');
298
    echo "</td><td valign='top'>";    // Outer table
299
    echo "<div id='timeSpent'>";    // Start inner top-left cell
300
    echo "<table border='0' width='100%' cellspacing='1' class='outer'>
301
          <tr><th colspan='2'>". _AM_XHELP_TEXT_RESPONSE_TIME ."</th></tr>";
302
303
    $sql = sprintf('SELECT u.uid, u.uname, u.name, (s.responseTime / s.ticketsResponded) as AvgResponseTime FROM %s u INNER JOIN %s s ON u.uid = s.uid WHERE ticketsResponded > 0 ORDER BY AvgResponseTime', $xoopsDB->prefix('users'), $xoopsDB->prefix('xhelp_staff'));
304
    $ret = $xoopsDB->query($sql, MAX_STAFF_RESPONSETIME);
305
    $i = 0;
306 View Code Duplication
    while (list($uid, $uname, $name, $avgResponseTime) = $xoopsDB->fetchRow($ret)) {
0 ignored issues
show
Unused Code introduced by
The assignment to $uid is unused. Consider omitting it like so list($first,,$third).

This checks looks for assignemnts to variables using the list(...) function, where not all assigned variables are subsequently used.

Consider the following code example.

<?php

function returnThreeValues() {
    return array('a', 'b', 'c');
}

list($a, $b, $c) = returnThreeValues();

print $a . " - " . $c;

Only the variables $a and $c are used. There was no need to assign $b.

Instead, the list call could have been.

list($a,, $c) = returnThreeValues();
Loading history...
307
        $class = $table_class[$i % 2];
308
        echo "<tr class='$class'><td>". xhelpGetDisplayName($displayName, $name,$uname) ."</td><td align='right'>". xhelpFormatTime($avgResponseTime) ."</td></tr>";
309
        $i++;
310
    }
311
    echo "</table></div><br />"; // End inner top-left cell
312
    echo "</td></tr><tr><td valign='top'>"; // End first, start second cell
313
314
    //Get Calls Closed block
315
    $sql = sprintf('SELECT SUM(callsClosed) FROM %s', $xoopsDB->prefix('xhelp_staff'));
316
    $ret = $xoopsDB->query($sql);
317
    if (list($totalStaffClosed) = $xoopsDB->fetchRow($ret)) {
318
        if ($totalStaffClosed) {
319
            $sql = sprintf('SELECT u.uid, u.uname, u.name, s.callsClosed FROM %s u INNER JOIN %s s ON u.uid = s.uid WHERE s.callsClosed > 0 ORDER BY s.callsClosed DESC', $xoopsDB->prefix('users'), $xoopsDB->prefix('xhelp_staff'));
320
            $ret = $xoopsDB->query($sql, MAX_STAFF_CALLSCLOSED);
321
            echo "<div id='callsClosed'>";
322
            echo "<table border='0' width='95%' cellspacing='1' class='outer'>
323
                  <tr><th colspan='2'>". _AM_XHELP_TEXT_TOP_CLOSERS ."</th></tr>";
324
            $i = 0;
325
            while (list($uid, $uname, $name, $callsClosed) = $xoopsDB->fetchRow($ret)) {
0 ignored issues
show
Unused Code introduced by
The assignment to $uid is unused. Consider omitting it like so list($first,,$third).

This checks looks for assignemnts to variables using the list(...) function, where not all assigned variables are subsequently used.

Consider the following code example.

<?php

function returnThreeValues() {
    return array('a', 'b', 'c');
}

list($a, $b, $c) = returnThreeValues();

print $a . " - " . $c;

Only the variables $a and $c are used. There was no need to assign $b.

Instead, the list call could have been.

list($a,, $c) = returnThreeValues();
Loading history...
326
                $class = $table_class[$i % 2];
327
                echo "<tr class='$class'><td>". xhelpGetDisplayName($displayName, $name,$uname) ."</td><td align='right'>". $callsClosed. ' ('.round(($callsClosed/$totalStaffClosed)*100, 2) ."%)</td></tr>";
328
                $i++;
329
            }
330
            echo "</table></div><br />"; // End inner table top row
331
            echo "</td><td valign='top'>"; // End top row of outer table
332
333
            $sql = sprintf('SELECT u.uid, u.uname, u.name, (s.responseTime / s.ticketsResponded) as AvgResponseTime FROM %s u INNER JOIN %s s ON u.uid = s.uid WHERE ticketsResponded > 0 ORDER BY AvgResponseTime DESC', $xoopsDB->prefix('users'), $xoopsDB->prefix('xhelp_staff'));
334
            $ret = $xoopsDB->query($sql, MAX_STAFF_RESPONSETIME);
335
            echo "<div id='leastCallsClosed'>";
336
            echo "<table border='0' width='100%' cellspacing='1' class='outer'>
337
                  <tr><th colspan='2'>". _AM_XHELP_TEXT_RESPONSE_TIME_SLOW ."</th></tr>";
338
            $i = 0;
339 View Code Duplication
            while (list($uid, $uname, $name, $avgResponseTime) = $xoopsDB->fetchRow($ret)) {
0 ignored issues
show
Unused Code introduced by
The assignment to $uid is unused. Consider omitting it like so list($first,,$third).

This checks looks for assignemnts to variables using the list(...) function, where not all assigned variables are subsequently used.

Consider the following code example.

<?php

function returnThreeValues() {
    return array('a', 'b', 'c');
}

list($a, $b, $c) = returnThreeValues();

print $a . " - " . $c;

Only the variables $a and $c are used. There was no need to assign $b.

Instead, the list call could have been.

list($a,, $c) = returnThreeValues();
Loading history...
340
                $class = $table_class[$i % 2];
341
                echo "<tr class='$class'><td>". xhelpGetDisplayName($displayName, $name,$uname) ."</td><td align='right'>". xhelpFormatTime($avgResponseTime) ."</td></tr>";
342
                $i++;
343
            }
344
            echo "</table></div>";  // End first cell, second row of inner table
345
        }
346
    }
347
    echo "</td></tr></table><br />";   // End second cell, second row of inner table
348
349
    $crit = new Criteria('state', '2', '<>', 's');
350
    $crit->setSort('priority');
351
    $crit->setOrder('ASC');
352
    $crit->setLimit(10);
353
    $highPriority =& $hTickets->getObjects($crit);
354
    $has_highPriority = (count($highPriority) > 0);
355
    if($has_highPriority){
356
        echo "<div id='highPriority'>";
357
        echo "<table border='0' width='100%' cellspacing='1' class='outer'>
358
              <tr><th colspan='8'>". _AM_XHELP_TEXT_HIGH_PRIORITY ."</th></tr>";
359
        echo "<tr class='head'><td>". _AM_XHELP_TEXT_PRIORITY ."</td><td>". _AM_XHELP_TEXT_ELAPSED ."</td><td>". _AM_XHELP_TEXT_STATUS ."</td><td>". _AM_XHELP_TEXT_SUBJECT ."</td><td>". _AM_XHELP_TEXT_DEPARTMENT ."</td><td>". _AM_XHELP_TEXT_OWNER ."</td><td>". _AM_XHELP_TEXT_LAST_UPDATED ."</td><td>". _AM_XHELP_TEXT_LOGGED_BY ."</td></tr>";
360
        $i = 0;
361
        foreach($highPriority as $ticket){
362
            if($ticket->isOverdue()){
363
                $class = $table_class[$i % 2] . " overdue";
364
            } else {
365
                $class = $table_class[$i % 2];
366
            }
367
            $priority_url = "<img src='".XHELP_IMAGE_URL."/priority". $ticket->getVar('priority') .".png' alt='". $ticket->getVar('priority') ."' />";
368
            $subject_url = sprintf("<a href='".XHELP_BASE_URL."/ticket.php?id=". $ticket->getVar('id') ."' target='_BLANK'>%s</a>", $ticket->getVar('subject'));
369
            if($dept = $ticket->getDepartment()){
370
                $dept_url = sprintf("<a href='".XHELP_BASE_URL."/index.php?op=staffViewAll&amp;dept=". $dept->getVar('id') ."' target='_BLANK'>%s</a>", $dept->getVar('department'));
371
            } else {
372
                $dept_url = _AM_XHELP_TEXT_NO_DEPT;
373
            }
374
            if($ticket->getVar('ownership') <> 0){
375
                $owner_url = sprintf("<a href='".XOOPS_URL."/userinfo.php?uid=". $ticket->getVar('uid') ."' target='_BLANK'>%s</a>", xhelpGetUsername($ticket->getVar('ownership'), $displayName));
376
            } else {
377
                $owner_url = _AM_XHELP_TEXT_NO_OWNER;
378
            }
379
            $user_url = sprintf("<a href='".XOOPS_URL."/userinfo.php?uid=". $ticket->getVar('uid') ."' target='_BLANK'>%s</a>", xhelpGetUsername($ticket->getVar('uid'), $displayName));
380
            echo "<tr class='$class'><td>". $priority_url ."</td>
381
                         <td>". $ticket->elapsed() ."</td>
382
                         <td>". xhelpGetStatus($ticket->getVar('status')) ."</td>
383
                         <td>". $subject_url ."</td>
384
                         <td>". $dept_url ."</td>
385
                         <td>". $owner_url ." </td>
386
                         <td>". $ticket->lastUpdated() ."</td>
387
                         <td>". $user_url ."</td>
388
                     </tr>";
389
            $i++;
390
        }
391
        echo "</table></div>";
392
    }
393
394
    pathConfiguration();
395
396
    include_once "admin_footer.php";
397
}
398
399
function pathConfiguration()
400
{
401
    global $xoopsModule, $xoopsConfig;
0 ignored issues
show
Compatibility Best Practice introduced by
Use of global functionality is not recommended; it makes your code harder to test, and less reusable.

Instead of relying on global state, we recommend one of these alternatives:

1. Pass all data via parameters

function myFunction($a, $b) {
    // Do something
}

2. Create a class that maintains your state

class MyClass {
    private $a;
    private $b;

    public function __construct($a, $b) {
        $this->a = $a;
        $this->b = $b;
    }

    public function myFunction() {
        // Do something
    }
}
Loading history...
402
403
    // Upload and Images Folders
404
405
    $paths = array();
406
    $paths[_AM_XHELP_PATH_TICKETATTACH] = XHELP_UPLOAD_PATH;
407
    $paths[_AM_XHELP_PATH_EMAILTPL] = XHELP_BASE_PATH."/language/{$xoopsConfig['language']}";
408
409
    echo "<h3>"._AM_XHELP_PATH_CONFIG."</h3>";
410
    echo "<table width='100%' class='outer' cellspacing='1' cellpadding='3' border='0' ><tr>";
411
    echo "<td class='bg3'><b>" . _AM_XHELP_TEXT_DESCRIPTION . "</b></td>";
412
    echo "<td class='bg3'><b>" . _AM_XHELP_TEXT_PATH . "</b></td>";
413
    echo "<td class='bg3' align='center'><b>" . _AM_XHELP_TEXT_STATUS . "</b></td></tr>";
414
415
    foreach($paths as $desc=>$path) {
416
        echo "<tr><td class='odd'>$desc</td>";
417
        echo "<td class='odd'>$path</td>";
418
        echo "<td class='even' style='text-align: center;'>" . xhelp_admin_getPathStatus($path) . "</td></tr>";
419
    }
420
421
    echo "</table>";
422
    echo "<br />";
423
424
    echo "</div>";
425
}
426
427
function about()
428
{
429
430
    xoops_cp_header();
431
    //echo $oAdminButton->renderButtons();
432
    $indexAdmin = new ModuleAdmin();
433
    echo $indexAdmin->addNavigation('main.php');
434
435
    require_once(XHELP_ADMIN_PATH."/about.php");
436
}
437
438
function createdir()
0 ignored issues
show
Coding Style introduced by
createdir uses the super-global variable $_GET which is generally not recommended.

Instead of super-globals, we recommend to explicitly inject the dependencies of your class. This makes your code less dependent on global state and it becomes generally more testable:

// Bad
class Router
{
    public function generate($path)
    {
        return $_SERVER['HOST'].$path;
    }
}

// Better
class Router
{
    private $host;

    public function __construct($host)
    {
        $this->host = $host;
    }

    public function generate($path)
    {
        return $this->host.$path;
    }
}

class Controller
{
    public function myAction(Request $request)
    {
        // Instead of
        $page = isset($_GET['page']) ? intval($_GET['page']) : 1;

        // Better (assuming you use the Symfony2 request)
        $page = $request->query->get('page', 1);
    }
}
Loading history...
439
{
440
    $path = $_GET['path'];
441
    $res = xhelp_admin_mkdir($path);
442
443
    $msg = ($res)?_AM_XHELP_PATH_CREATED:_AM_XHELP_PATH_NOTCREATED;
444
    redirect_header(XHELP_ADMIN_URL.'/index.php', 2, $msg . ': ' . $path);
445
    exit();
0 ignored issues
show
Coding Style Compatibility introduced by
The function createdir() contains an exit expression.

An exit expression should only be used in rare cases. For example, if you write a short command line script.

In most cases however, using an exit expression makes the code untestable and often causes incompatibilities with other libraries. Thus, unless you are absolutely sure it is required here, we recommend to refactor your code to avoid its usage.

Loading history...
446
}
447
448
function setperm()
0 ignored issues
show
Coding Style introduced by
setperm uses the super-global variable $_GET which is generally not recommended.

Instead of super-globals, we recommend to explicitly inject the dependencies of your class. This makes your code less dependent on global state and it becomes generally more testable:

// Bad
class Router
{
    public function generate($path)
    {
        return $_SERVER['HOST'].$path;
    }
}

// Better
class Router
{
    private $host;

    public function __construct($host)
    {
        $this->host = $host;
    }

    public function generate($path)
    {
        return $this->host.$path;
    }
}

class Controller
{
    public function myAction(Request $request)
    {
        // Instead of
        $page = isset($_GET['page']) ? intval($_GET['page']) : 1;

        // Better (assuming you use the Symfony2 request)
        $page = $request->query->get('page', 1);
    }
}
Loading history...
449
{
450
    $path = $_GET['path'];
451
    $res = xhelp_admin_chmod($path, 0777);
452
    $msg = ($res ? _AM_XHELP_PATH_PERMSET : _AM_XHELP_PATH_NOTPERMSET);
453
    redirect_header(XHELP_ADMIN_URL.'/index.php', 2, $msg . ': ' . $path);
454
    exit();
0 ignored issues
show
Coding Style Compatibility introduced by
The function setperm() contains an exit expression.

An exit expression should only be used in rare cases. For example, if you write a short command line script.

In most cases however, using an exit expression makes the code untestable and often causes incompatibilities with other libraries. Thus, unless you are absolutely sure it is required here, we recommend to refactor your code to avoid its usage.

Loading history...
455
}
456