summaryrefslogtreecommitdiff
path: root/roundcubemail/program/include
diff options
context:
space:
mode:
authoralec <alec@208e9e7b-5314-0410-a742-e7e81cd9613c>2010-02-06 18:12:49 +0000
committeralec <alec@208e9e7b-5314-0410-a742-e7e81cd9613c>2010-02-06 18:12:49 +0000
commit456b357481dea5776143ea17ec9c13a2ab9e90ec (patch)
treeaaf215b5d0222028e3f26aa4e70d674d8c850f5c /roundcubemail/program/include
parent99cddf34ce03bf903c06cc1fefcbdea53ed4edcb (diff)
- Fix setting task name according to auth state. So, any action before user
is authenticated is assigned to 'login' task instead of 'mail'. Now binding plugins to 'login' task is possible and realy usefull. It's also possible to bind to all tasks excluding 'login'. git-svn-id: https://svn.roundcube.net/trunk@3258 208e9e7b-5314-0410-a742-e7e81cd9613c
Diffstat (limited to 'roundcubemail/program/include')
-rw-r--r--roundcubemail/program/include/rcmail.php20
-rw-r--r--roundcubemail/program/include/rcube_plugin_api.php2
2 files changed, 14 insertions, 8 deletions
diff --git a/roundcubemail/program/include/rcmail.php b/roundcubemail/program/include/rcmail.php
index 3d26065d5..cd6187281 100644
--- a/roundcubemail/program/include/rcmail.php
+++ b/roundcubemail/program/include/rcmail.php
@@ -39,7 +39,7 @@ class rcmail
public $imap;
public $output;
public $plugins;
- public $task = 'mail';
+ public $task;
public $action = '';
public $comm_path = './';
@@ -91,10 +91,6 @@ class rcmail
openlog($syslog_id, LOG_ODELAY, $syslog_facility);
}
- // set task and action properties
- $this->set_task(get_input_value('_task', RCUBE_INPUT_GPC));
- $this->action = asciiwords(get_input_value('_action', RCUBE_INPUT_GPC));
-
// connect to database
$GLOBALS['DB'] = $this->get_dbh();
@@ -123,6 +119,10 @@ class rcmail
// create user object
$this->set_user(new rcube_user($_SESSION['user_id']));
+ // set task and action properties
+ $this->set_task(get_input_value('_task', RCUBE_INPUT_GPC));
+ $this->action = asciiwords(get_input_value('_action', RCUBE_INPUT_GPC));
+
// reset some session parameters when changing task
if ($_SESSION['task'] != $this->task)
rcube_sess_unset('page');
@@ -131,7 +131,7 @@ class rcmail
$_SESSION['task'] = $this->task;
// create IMAP object
- if ($this->task == 'mail')
+ if ($this->task == 'login')
$this->imap_init();
// create plugin API and load plugins
@@ -147,7 +147,13 @@ class rcmail
public function set_task($task)
{
$task = asciiwords($task);
- $this->task = $task ? $task : 'mail';
+
+ if ($this->user && $this->user->ID)
+ $task = !$task || $task == 'login' ? 'mail' : $task;
+ else
+ $task = 'login';
+
+ $this->task = $task;
$this->comm_path = $this->url(array('task' => $this->task));
if ($this->output)
diff --git a/roundcubemail/program/include/rcube_plugin_api.php b/roundcubemail/program/include/rcube_plugin_api.php
index 1eeadce3a..b19c0a3f4 100644
--- a/roundcubemail/program/include/rcube_plugin_api.php
+++ b/roundcubemail/program/include/rcube_plugin_api.php
@@ -90,7 +90,7 @@ class rcube_plugin_api
if (class_exists($plugin_name, false)) {
$plugin = new $plugin_name($this);
// check inheritance and task specification
- if (is_subclass_of($plugin, 'rcube_plugin') && (!$plugin->task || preg_match('/('.$plugin->task.')/i', $rcmail->task))) {
+ if (is_subclass_of($plugin, 'rcube_plugin') && (!$plugin->task || preg_match('/^('.$plugin->task.')$/i', $rcmail->task))) {
$plugin->init();
$this->plugins[] = $plugin;
}