Page Menu
Home
Phorge
Search
Configure Global Search
Log In
Files
F117754809
kolab_files.php
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Flag For Later
Award Token
Authored By
Unknown
Size
5 KB
Referenced Files
None
Subscribers
None
kolab_files.php
View Options
<?php
/**
* Kolab files storage
*
* @version @package_version@
* @author Aleksander Machniak <machniak@kolabsys.com>
*
* Copyright (C) 2013, Kolab Systems AG <contact@kolabsys.com>
*
* 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
kolab_files
extends
rcube_plugin
{
// all task excluding 'login' and 'logout'
public
$task
=
'?(?!login|logout).*'
;
public
$allowed_prefs
=
array
(
'kolab_files_collapsed_folders'
);
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.kolab_files'
,
array
(
$this
,
'actions'
));
// Register task
$this
->
register_task
(
'files'
);
// 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
(
'edit'
,
array
(
$this
,
'actions'
));
$this
->
register_action
(
'share'
,
array
(
$this
,
'actions'
));
$this
->
register_action
(
'reset'
,
array
(
$this
,
'actions'
));
$this
->
register_action
(
'autocomplete'
,
array
(
$this
,
'autocomplete'
));
// we use libkolab::http_request() from libkolab with its configuration
$this
->
require_plugin
(
'libkolab'
);
// Load UI from startup hook
$this
->
add_hook
(
'startup'
,
array
(
$this
,
'startup'
));
$this
->
add_hook
(
'preferences_save'
,
array
(
$this
,
'preferences_save'
));
}
/**
* Creates kolab_files_engine instance
*/
private
function
engine
()
{
if
(
$this
->
engine
===
null
)
{
// the files module can be enabled/disabled by the kolab_auth plugin
if
(
$this
->
rc
->
config
->
get
(
'kolab_files_disabled'
)
||
!
$this
->
rc
->
config
->
get
(
'kolab_files_enabled'
,
true
))
{
return
$this
->
engine
=
false
;
}
$this
->
load_config
();
$client_url
=
$this
->
rc
->
config
->
get
(
'kolab_files_url'
);
$server_url
=
$this
->
rc
->
config
->
get
(
'kolab_files_server_url'
);
if
(!
$client_url
)
{
return
$this
->
engine
=
false
;
}
require_once
$this
->
home
.
'/lib/kolab_files_engine.php'
;
$this
->
engine
=
new
kolab_files_engine
(
$this
,
$client_url
,
$server_url
);
}
return
$this
->
engine
;
}
/**
* Startup hook handler, initializes/enables Files UI
*/
public
function
startup
(
$args
)
{
// call this from startup to give a chance to set
// kolab_files_enabled/disabled in kolab_auth plugin
$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
())
{
$this
->
rc
->
output
->
set_env
(
'files_token'
,
$engine
->
get_api_token
());
}
return
$args
;
}
/**
* Engine actions handler
*/
public
function
actions
()
{
if
(
$engine
=
$this
->
engine
())
{
$engine
->
actions
();
}
}
/**
* Handler for user autocomplete request
*/
function
autocomplete
()
{
$this
->
load_config
();
require_once
$this
->
home
.
'/lib/kolab_files_autocomplete.php'
;
new
kolab_files_autocomplete
(
$this
);
}
/**
* Update chwala config on user preferences change
*/
public
function
preferences_save
(
$props
)
{
if
(
$props
[
'section'
]
==
'general'
)
{
$dont_override
=
(
array
)
$this
->
rc
->
config
->
get
(
'dont_override'
);
$prefs
=
array
();
foreach
(
array
(
'timezone'
,
'date_long'
)
as
$idx
)
{
if
(
isset
(
$props
[
'prefs'
][
$idx
])
&&
!
in_array
(
$idx
,
$dont_override
))
{
$prefs
[
$idx
]
=
$props
[
'prefs'
][
$idx
];
}
}
if
(!
empty
(
$prefs
)
&&
(
$engine
=
$this
->
engine
()))
{
$engine
->
configure
(
false
,
$prefs
);
}
}
}
}
File Metadata
Details
Attached
Mime Type
text/x-php
Expires
Sat, Apr 4, 7:22 AM (1 w, 4 d ago)
Storage Engine
local-disk
Storage Format
Raw Data
Storage Handle
74/2d/0bae35b5334963623c9414902b8d
Default Alt Text
kolab_files.php (5 KB)
Attached To
Mode
rRPK roundcubemail-plugins-kolab
Attached
Detach File
Event Timeline