forked from messagerie-melanie2/Roundcube-Plugin-Roundrive
-
Notifications
You must be signed in to change notification settings - Fork 4
/
roundrive.php
124 lines (103 loc) · 3.27 KB
/
roundrive.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
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
<?php
/**
* Roundcube Drive using flysystem for filesystem
*
* @version @package_version@
* @author Thomas Payen <[email protected]>
*
* This plugin is inspired by kolab_files plugin
* Use flysystem library : https://github.com/thephpleague/flysystem
* With flysystem WebDAV adapter : https://github.com/thephpleague/flysystem-webdav
*
* Copyright (C) 2015 PNE Annuaire et Messagerie MEDDE/MLETR
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
class roundrive extends rcube_plugin
{
// all task excluding 'login' and 'logout'
public $task = '?(?!login|logout).*';
public $rc;
public $home;
private $engine;
public function init()
{
$this->rc = rcube::get_instance();
// Register hooks
$this->add_hook('refresh', array($this, 'refresh'));
// Plugin actions for other tasks
$this->register_action('plugin.roundrive', array($this, 'actions'));
// Register task
$this->register_task('roundrive');
// Register plugin task actions
$this->register_action('index', array($this, 'actions'));
$this->register_action('prefs', array($this, 'actions'));
$this->register_action('open', array($this, 'actions'));
$this->register_action('file_api', array($this, 'actions'));
// Load UI from startup hook
$this->add_hook('startup', array($this, 'startup'));
}
/**
* Creates roundrive_engine instance
*/
private function engine()
{
if ($this->engine === null) {
$this->load_config();
require_once $this->home . DIRECTORY_SEPARATOR . 'lib' . DIRECTORY_SEPARATOR . 'roundrive_files_engine.php';
$this->engine = new roundrive_files_engine($this);
}
return $this->engine;
}
/**
* Startup hook handler, initializes/enables Files UI
*/
public function startup($args)
{
// call this from startup to give a chance to set
$this->ui();
}
/**
* Adds elements of files API user interface
*/
private function ui()
{
if ($this->rc->output->type != 'html') {
return;
}
if ($engine = $this->engine()) {
$engine->ui();
}
}
/**
* Refresh hook handler
*/
public function refresh($args)
{
// Here we are refreshing API session, so when we need it
// the session will be active
if ($engine = $this->engine()) {
}
return $args;
}
/**
* Engine actions handler
*/
public function actions()
{
if ($engine = $this->engine()) {
$engine->actions();
}
}
}