-
Notifications
You must be signed in to change notification settings - Fork 2
/
moderators.php
93 lines (81 loc) · 3.02 KB
/
moderators.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
<?php
/**
* The Agora script to display a list of forums.
*
* Copyright 2003-2017 Horde LLC (http://www.horde.org/)
*
* See the enclosed file LICENSE for license information (GPL). If you
* did not receive this file, see http://www.horde.org/licenses/gpl.
*
* @author Jan Schneider <[email protected]>
* @author Marko Djukic <[email protected]>
*/
require_once __DIR__ . '/lib/Application.php';
Horde_Registry::appInit('agora');
if (!$registry->isAdmin()) {
Horde::url('forums.php', true)->redirect();
}
/* Set up the messages object. */
$scope = Horde_Util::getFormData('scope', 'agora');
$messages = $injector->getInstance('Agora_Factory_Driver')->create($scope);
if ($messages instanceof PEAR_Error) {
$notification->push($messages->getMessage(), 'horde.warning');
Horde::url('forums.php', true)->redirect();
}
/* Moderator action */
$action = Horde_Util::getFormData('action');
if ($action) {
$forum_id = Horde_Util::getFormData('forum_id');
$moderator = Horde_Util::getFormData('moderator');
$result = $messages->updateModerator($moderator, $forum_id, $action);
if ($result instanceof PEAR_Error) {
$notification->push($result->getMessage(), 'horde.error');
}
Horde::url('moderators.php', true)->redirect();
}
/* Get the list of forums. */
try {
$forums_list = $messages->getForums(0, true, 'forum_name');
} catch (Horde_Exception_NotFound $e) {
$notification->push($e->getMessage(), 'horde.error');
Horde::url('forums.php', true)->redirect();
}
/* Add delete links to moderators */
$url = Horde::url('moderators.php')->add('action', 'delete');
foreach ($forums_list as $key => $forum) {
if (!isset($forum['moderators'])) {
unset($forums_list[$key]);
continue;
}
foreach ($forum['moderators'] as $id => $moderator) {
$delete = $url->add(array('moderator' => $moderator, 'forum_id' => $forum['forum_id']));
$forums_list[$key]['moderators'][$id] = Horde::link($delete, _("Delete")) . $moderator . '</a>';
}
}
$title = _("Moderators");
$vars = Horde_Variables::getDefaultVariables();
$form = new Horde_Form($vars, $title);
$form->addHidden('', 'scope', 'text', false);
$form->addHidden('', 'action', 'text', false);
$vars->set('action', 'add');
$form->addVariable(_("Moderator"), 'moderator', 'text', true);
if ($messages->countForums() > 50) {
$form->addVariable(_("Forum"), 'forum_id', 'int', true);
} else {
$forums_enum = Agora::formatCategoryTree($messages->getForums(0, false, 'forum_name', 0, !$registry->isAdmin()));
$form->addVariable(_("Forum"), 'forum_id', 'enum', true, false, false, array($forums_enum));
}
/* Set up template data. */
$view = new Agora_View();
Horde::startBuffer();
$form->renderActive(null, null, Horde::url('moderators.php'), 'post');
$view->formbox = Horde::endBuffer();
Horde::startBuffer();
$notification->notify(array('listeners' => 'status'));
$view->notify = Horde::endBuffer();
$view->forums = $forums_list;
$page_output->header(array(
'title' => $title
));
echo $view->render('moderators');
$page_output->footer();