Fix regression where calendar feeds required normal Roundcube login instead of HTTP auth (T1151)
With proper performance fix 4fe52716e3
(#4033)
This commit is contained in:
parent
801d358824
commit
f866ceb84c
1 changed files with 28 additions and 17 deletions
|
@ -33,7 +33,7 @@ class calendar extends rcube_plugin
|
||||||
|
|
||||||
const SESSION_KEY = 'calendar_temp';
|
const SESSION_KEY = 'calendar_temp';
|
||||||
|
|
||||||
public $task = '?(?!login|logout).*';
|
public $task = '?(?!logout).*';
|
||||||
public $rc;
|
public $rc;
|
||||||
public $lib;
|
public $lib;
|
||||||
public $resources_dir;
|
public $resources_dir;
|
||||||
|
@ -68,27 +68,13 @@ class calendar extends rcube_plugin
|
||||||
*/
|
*/
|
||||||
function init()
|
function init()
|
||||||
{
|
{
|
||||||
$this->require_plugin('libcalendaring');
|
|
||||||
|
|
||||||
$this->rc = rcube::get_instance();
|
$this->rc = rcube::get_instance();
|
||||||
$this->lib = libcalendaring::get_instance();
|
|
||||||
|
|
||||||
$this->register_task('calendar', 'calendar');
|
$this->register_task('calendar', 'calendar');
|
||||||
|
|
||||||
// load calendar configuration
|
// load calendar configuration
|
||||||
$this->load_config();
|
$this->load_config();
|
||||||
|
|
||||||
// load localizations
|
|
||||||
$this->add_texts('localization/', $this->rc->task == 'calendar' && (!$this->rc->action || $this->rc->action == 'print'));
|
|
||||||
|
|
||||||
$this->timezone = $this->lib->timezone;
|
|
||||||
$this->gmt_offset = $this->lib->gmt_offset;
|
|
||||||
$this->dst_active = $this->lib->dst_active;
|
|
||||||
$this->timezone_offset = $this->gmt_offset / 3600 - $this->dst_active;
|
|
||||||
|
|
||||||
require($this->home . '/lib/calendar_ui.php');
|
|
||||||
$this->ui = new calendar_ui($this);
|
|
||||||
|
|
||||||
// catch iTIP confirmation requests that don're require a valid session
|
// catch iTIP confirmation requests that don're require a valid session
|
||||||
if ($this->rc->action == 'attend' && !empty($_REQUEST['_t'])) {
|
if ($this->rc->action == 'attend' && !empty($_REQUEST['_t'])) {
|
||||||
$this->add_hook('startup', array($this, 'itip_attend_response'));
|
$this->add_hook('startup', array($this, 'itip_attend_response'));
|
||||||
|
@ -96,7 +82,7 @@ class calendar extends rcube_plugin
|
||||||
else if ($this->rc->action == 'feed' && !empty($_REQUEST['_cal'])) {
|
else if ($this->rc->action == 'feed' && !empty($_REQUEST['_cal'])) {
|
||||||
$this->add_hook('startup', array($this, 'ical_feed_export'));
|
$this->add_hook('startup', array($this, 'ical_feed_export'));
|
||||||
}
|
}
|
||||||
else {
|
else if ($this->rc->task != 'login') {
|
||||||
// default startup routine
|
// default startup routine
|
||||||
$this->add_hook('startup', array($this, 'startup'));
|
$this->add_hook('startup', array($this, 'startup'));
|
||||||
}
|
}
|
||||||
|
@ -104,6 +90,26 @@ class calendar extends rcube_plugin
|
||||||
$this->add_hook('user_delete', array($this, 'user_delete'));
|
$this->add_hook('user_delete', array($this, 'user_delete'));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Setup basic plugin environment and UI
|
||||||
|
*/
|
||||||
|
protected function setup()
|
||||||
|
{
|
||||||
|
$this->require_plugin('libcalendaring');
|
||||||
|
|
||||||
|
$this->lib = libcalendaring::get_instance();
|
||||||
|
$this->timezone = $this->lib->timezone;
|
||||||
|
$this->gmt_offset = $this->lib->gmt_offset;
|
||||||
|
$this->dst_active = $this->lib->dst_active;
|
||||||
|
$this->timezone_offset = $this->gmt_offset / 3600 - $this->dst_active;
|
||||||
|
|
||||||
|
// load localizations
|
||||||
|
$this->add_texts('localization/', $this->rc->task == 'calendar' && (!$this->rc->action || $this->rc->action == 'print'));
|
||||||
|
|
||||||
|
require($this->home . '/lib/calendar_ui.php');
|
||||||
|
$this->ui = new calendar_ui($this);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Startup hook
|
* Startup hook
|
||||||
*/
|
*/
|
||||||
|
@ -113,6 +119,8 @@ class calendar extends rcube_plugin
|
||||||
if ($this->rc->config->get('calendar_disabled', false) || !$this->rc->config->get('calendar_enabled', true))
|
if ($this->rc->config->get('calendar_disabled', false) || !$this->rc->config->get('calendar_enabled', true))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
$this->setup();
|
||||||
|
|
||||||
// load Calendar user interface
|
// load Calendar user interface
|
||||||
if (!$this->rc->output->ajax_call && (!$this->rc->output->env['framed'] || $args['action'] == 'preview')) {
|
if (!$this->rc->output->ajax_call && (!$this->rc->output->env['framed'] || $args['action'] == 'preview')) {
|
||||||
$this->ui->init();
|
$this->ui->init();
|
||||||
|
@ -1667,6 +1675,7 @@ class calendar extends rcube_plugin
|
||||||
|
|
||||||
// sanity check user
|
// sanity check user
|
||||||
if ($this->rc->user->get_username() == $user) {
|
if ($this->rc->user->get_username() == $user) {
|
||||||
|
$this->setup();
|
||||||
$this->load_driver();
|
$this->load_driver();
|
||||||
$this->export_events(false);
|
$this->export_events(false);
|
||||||
}
|
}
|
||||||
|
@ -1680,7 +1689,6 @@ class calendar extends rcube_plugin
|
||||||
exit;
|
exit;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
@ -2598,6 +2606,8 @@ class calendar extends rcube_plugin
|
||||||
*/
|
*/
|
||||||
public function itip_attend_response($p)
|
public function itip_attend_response($p)
|
||||||
{
|
{
|
||||||
|
$this->setup();
|
||||||
|
|
||||||
if ($p['action'] == 'attend') {
|
if ($p['action'] == 'attend') {
|
||||||
$this->ui->init();
|
$this->ui->init();
|
||||||
|
|
||||||
|
@ -3333,6 +3343,7 @@ class calendar extends rcube_plugin
|
||||||
$table_itipinvitations = $db->table_name('itipinvitations', true);
|
$table_itipinvitations = $db->table_name('itipinvitations', true);
|
||||||
$db->query("DELETE FROM $table_itipinvitations WHERE `user_id` = ?", $args['user']->ID);
|
$db->query("DELETE FROM $table_itipinvitations WHERE `user_id` = ?", $args['user']->ID);
|
||||||
|
|
||||||
|
$this->setup();
|
||||||
$this->load_driver();
|
$this->load_driver();
|
||||||
return $this->driver->user_delete($args);
|
return $this->driver->user_delete($args);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue