This repository has been archived by the owner on Aug 3, 2019. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathfolders.php
87 lines (78 loc) · 2.79 KB
/
folders.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
<?php
include('./inc/_prepend.php');
if($oma->current_user->mbox != $oma->authenticated_user->mbox) {
error(txt('104'));
include('./inc/_append.php');
exit();
}
// we shall log in as the current user
$IMAP = $cfg['Servers']['IMAP'][$_SESSION['server']];
$IMAP['ADMIN'] = $oma->authenticated_user->mbox.$IMAP['VDOM'];
$IMAP['PASS'] = $oma->authenticated_user->password->get_plaintext();
if($cfg['Servers']['IMAP'][$_SESSION['server']]['TYPE'] != 'fake-imap') {
$imap = IMAP_get_instance($IMAP, $cfg['Servers']['IMAP'][$_SESSION['server']]['TYPE']);
$oma->imap = $imap;
}
// ACTION
if(isset($_POST['frm']) && $_POST['frm'] == 'ACL') {
if(!isset($_POST['action'])) {
error(txt('112'));
} else
switch($_POST['action']) {
case 'new':
if(isset($_GET['folder'])) {
$_GET['folder'] = trim($_GET['folder']);
$_POST['subname'] = trim($_POST['subname']);
if(preg_match('/[\w\s\d\+\-\_\.\:\~\=]{'.mb_strlen($_POST['subname'], 'UTF-8').'}/u', $_POST['subname'])) {
$to_be_created = addslashes($_GET['folder'].$imap->gethierarchyseparator().mb_convert_encoding($_POST['subname'], 'UTF7-IMAP', 'UTF-8'));
if(!$imap->createmb($to_be_created)) {
error($imap->error_msg);
}
} else {
error(txt('109'));
}
}
break;
case 'delete':
if(isset($_GET['folder'])) {
$imap->deletemb(addslashes(trim($_GET['folder'])));
$_GET['folder'] = 'INBOX';
}
break;
case 'rights':
if(!isset($_POST['moduser']) || trim($_POST['moduser']) == '') {
error(txt('111'));
} else if(isset($_GET['folder'])) {
if($_POST['modaclsel'] == 'above') {
if(isset($_POST['modacl']) && count($_POST['modacl']) > 0)
$imap->setacl(addslashes(trim($_GET['folder'])), $_POST['moduser'], implode('', $_POST['modacl']));
if($imap->error_msg != '')
error($imap->error_msg);
} else {
$imap->setacl(addslashes(trim($_GET['folder'])), $_POST['moduser'], addslashes($_POST['modaclsel']));
}
}
break;
}
}
// DATA
$raw_folder_list = $imap->getmailboxes();
// merge all steps
$mbox_arr = array();
for($i = 0; $i < count($raw_folder_list); $i++) {
$mailbox_list[] = $raw_folder_list[$i]['name'];
$mbox_arr = array_merge_recursive($mbox_arr, array_stepper($raw_folder_list[$i]['delimiter'], $raw_folder_list[$i]['name']));
}
// DISPLAY
include('./templates/'.$cfg['theme'].'/folders/list.tpl');
// ADMIN PANEL (not hidden by default)
if(isset($_GET['folder']) && in_array($_GET['folder'], $mailbox_list)) {
$ACLs = $imap->getacl($_GET['folder']);
ksort($ACLs);
reset($ACLs);
$has_acl_a = isset($ACLs[$oma->authenticated_user->mbox.$IMAP['VDOM']]) && stristr($ACLs[$oma->authenticated_user->mbox.$IMAP['VDOM']], 'a')
|| isset($ACLs['anyone']) && stristr($ACLs['anyone'], 'a');
include('./templates/'.$cfg['theme'].'/folders/admin.tpl');
}
include('./inc/_append.php');
?>