6.0.0-git
2019-03-23

[#8475] Skipping login tasks not working as expected
Summary Skipping login tasks not working as expected
Queue Horde Framework Packages
Queue Version Git master
Type Bug
State Resolved
Priority 2. Medium
Owners jan (at) horde (dot) org, slusarz (at) horde (dot) org
Requester jan (at) horde (dot) org
Created 2009-08-03 (3519 days ago)
Due
Updated 2010-01-22 (3347 days ago)
Assigned 2009-08-05 (3517 days ago)
Resolved 2009-08-20 (3502 days ago)
Milestone
Patch No

History
2010-01-22 16:29:20 CVS Commit Comment #19 Reply to this comment
Changes have been made in Git for this ticket:

Add Horde_Registry#listAllApps
Allow for listing of applications without regard to permissions. Needed
to solve chicken-or-egg problem of setting up a new install, but admin/setup
failing to load because of applications without configuration files.

This broke when fixing Bug: 8475 when we check auth before checking isAdmin()

http://git.horde.org/diff.php/framework/Core/lib/Horde/Registry.php?rt=horde-git&r1=13879630963e68a2bfe3f85e37082bd6d5ac6631&r2=5c6f6169a588110f9ccc9892eadeb431b737f571
http://git.horde.org/diff.php/horde/admin/setup/index.php?rt=horde-git&r1=b23cc31ca5d964fd8f9be807871eb0595aee63d9&r2=5c6f6169a588110f9ccc9892eadeb431b737f571
2009-08-20 08:04:50 Jan Schneider Comment #18
State ⇒ Resolved
Reply to this comment
Yes.
2009-08-19 22:42:05 Michael Slusarz Comment #17 Reply to this comment
This what I get now, skipping a login task:

( ! ) Fatal error: Call to a member function needDisplay() on a
non-object in
/home/jan/horde-git/framework/LoginTasks/lib/Horde/LoginTasks.php on
line 291
This should have been fixed with Bug #8502.
2009-08-19 22:37:08 CVS Commit Comment #16 Reply to this comment
2009-08-19 21:47:02 Jan Schneider Comment #15
New Attachment: trace.1250718299_377761.xt Download
Reply to this comment
This what I get now, skipping a login task:



( ! ) Fatal error: Call to a member function needDisplay() on a 
non-object in 
/home/jan/horde-git/framework/LoginTasks/lib/Horde/LoginTasks.php on 
line 291

Call Stack

#        Time        Memory        Function        Location

1        0,0618        89360        {main}( )        ../logintasks.php:0

2        8,9816        5354584        Horde_LoginTasks->displayTasks( )        ../logintasks.php:38



Attached is a trace.
2009-08-19 21:22:42 Jan Schneider Comment #14 Reply to this comment
I'm not sure how imp_imap->ob is not set in the garbage collection
class.  To reach there, we have to successfully finish IMP
authentication which by definition requires the Horde_Imap_Client
object to be loaded into the session.  Might be useful to do a
print_r on the imp_imap->ob object in IMP_Imap_Tree to see what it is
set to.
It doesn't happen always, now it happens in the tree block. If it 
happens once, it happens even after reloading. ->ob is null in those 
cases. Here is an updated backtrace:



( ! ) Fatal error: Call to a member function getNamespaces() on a 
non-object in /home/jan/horde-hatchery/imp/lib/Imap.php on line 325

Call Stack

#        Time        Memory        Function        Location

1        0,0134        129576        {main}( )        ../sidebar.php:0

2        1,4395        5554256        Horde_Block->buildTree( class Horde_Tree_javascript { 
public $_source_name = 'n_horde_menu'; public $_options_name = 
'o_horde_menu'; public $_target_name = 't_horde_menu'; public 
$_instance = 'horde_menu'; public $_header = array (); public $_nodes 
= array ('horde' => array ('label' => 'Horde', 'expanded' => FALSE, 
'url' => '/headhorde/index.php', 'icon' => 
'/headhorde/themes/graphics/horde.png', 'icondir' => ''), 'imp' => 
array ('label' => 'Webmail', 'expanded' => FALSE, 'url' => 
'/headhorde/imp/', 'icon' => '/headhorde/imp/themes/graphics/imp.png', 
'icondir' => '', 'children' => array (...)), 'ingo' => array ('label' 
=> 'Filter', 'expanded' => FALSE, 'url' => '/headhorde/ingo/', 'icon' 
=> '/headhorde/ingo/themes/graphics/ingo.png', 'icondir' => ''), 'sam' 
=> array ('label' => 'Spam', 'expanded' => FALSE, 'url' => 
'/headhorde/sam/', 'icon' => '/headhorde/sam/themes/graphics/sam.png', 
'icondir' => ''), 'forwards' => array ('label' => 'Weiterleitung', 
'expanded' => FALSE, 'url' => '/headhorde/forwards/', 'icon' => 
'/headhorde/forwards/themes/graphics/forwards.png', 'icondir' => ''), 
'vacation' => array ('label' => 'Abwesenheit', 'expanded' => FALSE, 
'url' => '/headhorde/vacation/', 'icon' => 
'/headhorde/vacation/themes/graphics/vacation.png', 'icondir' => ''), 
'impcompose' => array ('label' => 'Neue Nachricht', 'expanded' => 
FALSE, 'icon' => 'compose.png', 'icondir' => 
'/headhorde/imp/themes/graphics', 'url' => 
'javascript:Horde.popup(\'%2F%2A-secure-%7B%22url%22%3A%22%5C%2Fheadhorde%5C%2Fimp%5C%2Fcompose.php%22%7D%2A%2F\');', 'target' => 'horde_menu'), 'impsearch' => array ('label' => 'Suche', 'expanded' => FALSE, 'icon' => 'search.png', 'icondir' => '/headhorde/imp/themes/graphics', 'url' => '/headhorde/imp/search.php')); public $_root_nodes = array (0 => 'horde', 1 => 'imp'); public $_extra_cols_left = 0; public $_extra_cols_right = 0; public $_options = array ('lines' => TRUE, 'target' => 'horde_main'); public $_sortCriteria = NULL; public $_usesession = TRUE; public $_static = FALSE; public $_header_name = 'h_horde_menu' }, 0, 'imp' 
)        ../sidebar.php:233

3        1,6015        6121924        Horde_Block_imp_tree_folders->_buildTree( class 
Horde_Tree_javascript { public $_source_name = 'n_horde_menu'; public 
$_options_name = 'o_horde_menu'; public $_target_name = 
't_horde_menu'; public $_instance = 'horde_menu'; public $_header = 
array (); public $_nodes = array ('horde' => array ('label' => 
'Horde', 'expanded' => FALSE, 'url' => '/headhorde/index.php', 'icon' 
=> '/headhorde/themes/graphics/horde.png', 'icondir' => ''), 'imp' => 
array ('label' => 'Webmail', 'expanded' => FALSE, 'url' => 
'/headhorde/imp/', 'icon' => '/headhorde/imp/themes/graphics/imp.png', 
'icondir' => '', 'children' => array (...)), 'ingo' => array ('label' 
=> 'Filter', 'expanded' => FALSE, 'url' => '/headhorde/ingo/', 'icon' 
=> '/headhorde/ingo/themes/graphics/ingo.png', 'icondir' => ''), 'sam' 
=> array ('label' => 'Spam', 'expanded' => FALSE, 'url' => 
'/headhorde/sam/', 'icon' => '/headhorde/sam/themes/graphics/sam.png', 
'icondir' => ''), 'forwards' => array ('label' => 'Weiterleitung', 
'expanded' => FALSE, 'url' => '/headhorde/forwards/', 'icon' => 
'/headhorde/forwards/themes/graphics/forwards.png', 'icondir' => ''), 
'vacation' => array ('label' => 'Abwesenheit', 'expanded' => FALSE, 
'url' => '/headhorde/vacation/', 'icon' => 
'/headhorde/vacation/themes/graphics/vacation.png', 'icondir' => ''), 
'impcompose' => array ('label' => 'Neue Nachricht', 'expanded' => 
FALSE, 'icon' => 'compose.png', 'icondir' => 
'/headhorde/imp/themes/graphics', 'url' => 
'javascript:Horde.popup(\'%2F%2A-secure-%7B%22url%22%3A%22%5C%2Fheadhorde%5C%2Fimp%5C%2Fcompose.php%22%7D%2A%2F\');', 'target' => 'horde_menu'), 'impsearch' => array ('label' => 'Suche', 'expanded' => FALSE, 'icon' => 'search.png', 'icondir' => '/headhorde/imp/themes/graphics', 'url' => '/headhorde/imp/search.php')); public $_root_nodes = array (0 => 'horde', 1 => 'imp'); public $_extra_cols_left = 0; public $_extra_cols_right = 0; public $_options = array ('lines' => TRUE, 'target' => 'horde_main'); public $_sortCriteria = NULL; public $_usesession = TRUE; public $_static = FALSE; public $_header_name = 'h_horde_menu' }, 0, 'imp' 
)        ../Block.php:198

4        1,7509        7846868        IMP_Imap_Tree::singleton( )        ../tree_folders.php:57

5        1,7518        7848260        IMP_Imap_Tree->__construct( )        ../Tree.php:220

6        1,7518        7848260        IMP_Imap->getNamespaceList( )        ../Tree.php:233
2009-08-19 18:13:34 Michael Slusarz Comment #13 Reply to this comment
Ah, I found the switch to trigger that behavior. I had hordeauth set
to false during debugging this. If I turn it on, I'm right logged in
to IMP. But without that I get the mentioned behavior, and not the
IMP login page.
Finally reproduced by removing myself from admin list.  When rewriting 
Horde_Registry::hasPermission(), I neglected the special case of a 
user not authenticated to an app but requesting only SHOW permission.   
In this single case, we need to do a permissions check since this is 
the only permission allowed if not authenticated.  See:



http://lists.horde.org/archives/commits/2009-August/001705.html



Still can't reproduce the rest though, no matter what combo of 
auth/admin/initial_app parameters I set.  At worst (a combo that 
doesn't auto login to IMP), the IMP portal block reports it is not 
authenticated and the IMP sidebar link doesn't show anything.   
Clicking on an IMP/Mail link leads to the login page.  All of this is 
working as expected.



I'm not sure how imp_imap->ob is not set in the garbage collection 
class.  To reach there, we have to successfully finish IMP 
authentication which by definition requires the Horde_Imap_Client 
object to be loaded into the session.  Might be useful to do a print_r 
on the imp_imap->ob object in IMP_Imap_Tree to see what it is set to.
2009-08-19 16:28:37 Jan Schneider Comment #12 Reply to this comment
Ah, I found the switch to trigger that behavior. I had hordeauth set 
to false during debugging this. If I turn it on, I'm right logged in 
to IMP. But without that I get the mentioned behavior, and not the IMP 
login page.



But even with hordeauth, I get the following in the sidebar:



( ! ) Fatal error: Call to a member function getNamespaces() on a 
non-object in /home/jan/horde-hatchery/imp/lib/Imap.php on line 324

Call Stack

#        Time        Memory        Function        Location

1        0,0012        129164        {main}( )        ../sidebar.php:0

2        5,1231        5511424        Horde_Block->buildTree( class Horde_Tree_javascript { 
public $_source_name = 'n_horde_menu'; public $_options_name = 
'o_horde_menu'; public $_target_name = 't_horde_menu'; public 
$_instance = 'horde_menu'; public $_header = array (); public $_nodes 
= array ('horde' => array ('label' => 'Horde', 'expanded' => FALSE, 
'url' => '/headhorde/index.php', 'icon' => 
'/headhorde/themes/graphics/horde.png', 'icondir' => ''), 'imp' => 
array ('label' => 'Webmail', 'expanded' => FALSE, 'url' => 
'/headhorde/imp/', 'icon' => '/headhorde/imp/themes/graphics/imp.png', 
'icondir' => '', 'children' => array (...)), 'ingo' => array ('label' 
=> 'Filter', 'expanded' => FALSE, 'url' => '/headhorde/ingo/', 'icon' 
=> '/headhorde/ingo/themes/graphics/ingo.png', 'icondir' => ''), 'sam' 
=> array ('label' => 'Spam', 'expanded' => FALSE, 'url' => 
'/headhorde/sam/', 'icon' => '/headhorde/sam/themes/graphics/sam.png', 
'icondir' => ''), 'forwards' => array ('label' => 'Weiterleitung', 
'expanded' => FALSE, 'url' => '/headhorde/forwards/', 'icon' => 
'/headhorde/forwards/themes/graphics/forwards.png', 'icondir' => ''), 
'vacation' => array ('label' => 'Abwesenheit', 'expanded' => FALSE, 
'url' => '/headhorde/vacation/', 'icon' => 
'/headhorde/vacation/themes/graphics/vacation.png', 'icondir' => '')); 
public $_root_nodes = array (0 => 'horde', 1 => 'imp'); public 
$_extra_cols_left = 0; public $_extra_cols_right = 0; public $_options 
= array ('lines' => TRUE, 'target' => 'horde_main'); public 
$_sortCriteria = NULL; public $_usesession = TRUE; public $_static = 
FALSE; public $_header_name = 'h_horde_menu' }, 0, 'imp' 
)        ../sidebar.php:233

3        5,1231        5511424        Horde_Registry->pushApp( 'imp', array ('logintasks' 
=> FALSE) )        ../Block.php:193

4        5,1481        6083004        Horde_LoginTasks::singleton( 'imp' )        ../Registry.php:906

5        5,1482        6083004        Horde_LoginTasks->__construct( 'imp' )        ../LoginTasks.php:72

6        5,1482        6083004        Horde_LoginTasks->_createTaskList( )        ../LoginTasks.php:97

7        5,1570        6285844        IMP_LoginTasks_SystemTask_GarbageCollection->execute( 
)        ../LoginTasks.php:209

8        5,1855        8016652        IMP_Imap_Tree::singleton( )        ../GarbageCollection.php:30

9        5,1858        8017868        IMP_Imap_Tree->__construct( )        ../Tree.php:220

10        5,1858        8017868        IMP_Imap->getNamespaceList( )        ../Tree.php:233
2009-08-19 16:12:59 Michael Slusarz Comment #11 Reply to this comment
No change. I still see exactly the same behavior.
What are your auth params?  I can confirm this working with the 'imap' 
and 'application = imp' auth drivers.  IMP is my initial_application.
2009-08-18 09:00:47 Jan Schneider Comment #10 Reply to this comment
No change. I still see exactly the same behavior.
2009-08-17 23:58:50 Michael Slusarz Comment #9 Reply to this comment
Jan: ping?
2009-08-05 22:07:22 Michael Slusarz Comment #8 Reply to this comment
This fixed that issue, but now I can't access IMP anymore. As an
admin I get "Not authorized" in the IMP block, hordeauth isn't
working anymore. As a regular user, I don't see IMP in the menu
anymore at all.
Works for me.  Testing with 'imap' auth and hordeauth => true in IMP.   
Tracing the code:



pushApp('imp', array('checkPerms' => true))

calls hasPermission()

hasPermission() does Horde_Auth::isAuthenticated() call.  This call 
will automatically do transparent auth.  If not authenticated, will 
return false and pushApp() will throw an authentication error; the 
Horde_Auth::isAuthenticated() call will fail there also.  Really 
stinks that we have to do that same call twice.

Then hasPermission() returns true because I am listed as an admin.   
Would also return true if no permissions exist for IMP, or if I am 
permitted to view imp.
2009-08-05 21:02:37 Jan Schneider Comment #7 Reply to this comment
This fixed that issue, but now I can't access IMP anymore. As an admin 
I get "Not authorized" in the IMP block, hordeauth isn't working 
anymore. As a regular user, I don't see IMP in the menu anymore at all.
2009-08-05 19:03:38 Michael Slusarz Comment #6
Assigned to Jan Schneider
Reply to this comment
I'm not sure, I'm getting this now:
This has nothing to do with logintasks - it has to do with you being 
an admin.  In Horde_Registry::pushApp(), if you are an admin the line:

$checkPerms && $this->hasPermission($app, PERMS_READ)

will always return true, and the code in hasPermission() will *never* 
call isAuthenticated() to setup the session.  The isAuthenticated() 
check must occur before the session is created in any application 
handling authentication.



I think there are 2 problems with the logic in hasPermission():

1.) Being a horde admin does not automatically give you 'permission' 
to access it.  You need valid authentication to that auth also.

2.) Applications that require authentication by definition will 
*never* allow guest access.



So try my commit to Registry.php in hordegit - it seems to fix things for me.
2009-08-05 15:21:14 Jan Schneider Comment #5 Reply to this comment
I'm not sure, I'm getting this now:





( ! ) Notice: Undefined index: imp in 
/home/jan/horde-hatchery/imp/lib/Imap/Tree.php on line 239

Call Stack

#        Time        Memory        Function        Location

1        0,0514        126976        {main}( )        ../sidebar.php:0

2        1,0744        8571544        Horde_Block->buildTree( class Horde_Tree_javascript { 
public $_source_name = 'n_horde_menu'; public $_options_name = 
'o_horde_menu'; public $_target_name = 't_horde_menu'; public 
$_instance = 'horde_menu'; public $_header = array (); public $_nodes 
= array ('horde' => array ('label' => 'Horde', 'expanded' => FALSE, 
'url' => '/headhorde/index.php', 'icon' => 
'/headhorde/themes/graphics/horde.png', 'icondir' => ''), 'imp' => 
array ('label' => 'Webmail', 'expanded' => FALSE, 'url' => 
'/headhorde/imp/', 'icon' => '/headhorde/imp/themes/graphics/imp.png', 
'icondir' => '', 'children' => array (...)), 'ingo' => array ('label' 
=> 'Filter', 'expanded' => FALSE, 'url' => '/headhorde/ingo/', 'icon' 
=> '/headhorde/ingo/themes/graphics/ingo.png', 'icondir' => ''), 'sam' 
=> array ('label' => 'Spam', 'expanded' => FALSE, 'url' => 
'/headhorde/sam/', 'icon' => '/headhorde/sam/themes/graphics/sam.png', 
'icondir' => ''), 'forwards' => array ('label' => 'Weiterleitung', 
'expanded' => FALSE, 'url' => '/headhorde/forwards/', 'icon' => 
'/headhorde/forwards/themes/graphics/forwards.png', 'icondir' => ''), 
'vacation' => array ('label' => 'Abwesenheit', 'expanded' => FALSE, 
'url' => '/headhorde/vacation/', 'icon' => 
'/headhorde/vacation/themes/graphics/vacation.png', 'icondir' => '')); 
public $_root_nodes = array (0 => 'horde', 1 => 'imp'); public 
$_extra_cols_left = 0; public $_extra_cols_right = 0; public $_options 
= array ('lines' => TRUE, 'target' => 'horde_main'); public 
$_sortCriteria = NULL; public $_usesession = TRUE; public $_static = 
FALSE; public $_header_name = 'h_horde_menu' }, 0, 'imp' 
)        ../sidebar.php:227

3        1,0744        8571544        Horde_Registry->pushApp( 'imp', array ('logintasks' 
=> FALSE) )        ../Block.php:193

4        1,2647        9220220        Horde_LoginTasks::singleton( 'imp', 
'http://php5.wg.de:8888/headhorde/services/portal/sidebar.php
)        ../Registry.php:918

5        1,2647        9220220        Horde_LoginTasks->__construct( 'imp', 
'http://php5.wg.de:8888/headhorde/services/portal/sidebar.php
)        ../LoginTasks.php:80

6        1,2648        9220220        Horde_LoginTasks->_createTaskList( 
'http://php5.wg.de:8888/headhorde/services/portal/sidebar.php
)        ../LoginTasks.php:106

7        1,2924        9445932        IMP_LoginTasks_SystemTask_GarbageCollection->execute( 
)        ../LoginTasks.php:221

8        1,3784        10430648        IMP_Imap_Tree::singleton( )        ../GarbageCollection.php:30

9        1,3784        10431304        IMP_Imap_Tree->__construct( )        ../Tree.php:227



( ! ) Notice: Undefined index: protocol in 
/home/jan/horde-hatchery/imp/lib/Imap/Tree.php on line 435

Call Stack

#        Time        Memory        Function        Location

1        0,0514        126976        {main}( )        ../sidebar.php:0

2        1,0744        8571544        Horde_Block->buildTree( class Horde_Tree_javascript { 
public $_source_name = 'n_horde_menu'; public $_options_name = 
'o_horde_menu'; public $_target_name = 't_horde_menu'; public 
$_instance = 'horde_menu'; public $_header = array (); public $_nodes 
= array ('horde' => array ('label' => 'Horde', 'expanded' => FALSE, 
'url' => '/headhorde/index.php', 'icon' => 
'/headhorde/themes/graphics/horde.png', 'icondir' => ''), 'imp' => 
array ('label' => 'Webmail', 'expanded' => FALSE, 'url' => 
'/headhorde/imp/', 'icon' => '/headhorde/imp/themes/graphics/imp.png', 
'icondir' => '', 'children' => array (...)), 'ingo' => array ('label' 
=> 'Filter', 'expanded' => FALSE, 'url' => '/headhorde/ingo/', 'icon' 
=> '/headhorde/ingo/themes/graphics/ingo.png', 'icondir' => ''), 'sam' 
=> array ('label' => 'Spam', 'expanded' => FALSE, 'url' => 
'/headhorde/sam/', 'icon' => '/headhorde/sam/themes/graphics/sam.png', 
'icondir' => ''), 'forwards' => array ('label' => 'Weiterleitung', 
'expanded' => FALSE, 'url' => '/headhorde/forwards/', 'icon' => 
'/headhorde/forwards/themes/graphics/forwards.png', 'icondir' => ''), 
'vacation' => array ('label' => 'Abwesenheit', 'expanded' => FALSE, 
'url' => '/headhorde/vacation/', 'icon' => 
'/headhorde/vacation/themes/graphics/vacation.png', 'icondir' => '')); 
public $_root_nodes = array (0 => 'horde', 1 => 'imp'); public 
$_extra_cols_left = 0; public $_extra_cols_right = 0; public $_options 
= array ('lines' => TRUE, 'target' => 'horde_main'); public 
$_sortCriteria = NULL; public $_usesession = TRUE; public $_static = 
FALSE; public $_header_name = 'h_horde_menu' }, 0, 'imp' 
)        ../sidebar.php:227

3        1,0744        8571544        Horde_Registry->pushApp( 'imp', array ('logintasks' 
=> FALSE) )        ../Block.php:193

4        1,2647        9220220        Horde_LoginTasks::singleton( 'imp', 
'http://php5.wg.de:8888/headhorde/services/portal/sidebar.php
)        ../Registry.php:918

5        1,2647        9220220        Horde_LoginTasks->__construct( 'imp', 
'http://php5.wg.de:8888/headhorde/services/portal/sidebar.php
)        ../LoginTasks.php:80

6        1,2648        9220220        Horde_LoginTasks->_createTaskList( 
'http://php5.wg.de:8888/headhorde/services/portal/sidebar.php
)        ../LoginTasks.php:106

7        1,2924        9445932        IMP_LoginTasks_SystemTask_GarbageCollection->execute( 
)        ../LoginTasks.php:221

8        1,3784        10430648        IMP_Imap_Tree::singleton( )        ../GarbageCollection.php:30

9        1,3784        10431304        IMP_Imap_Tree->__construct( )        ../Tree.php:227

10        1,3798        10434968        IMP_Imap_Tree->init( )        ../Tree.php:252



( ! ) Notice: Undefined index: protocol in 
/home/jan/horde-hatchery/imp/lib/Imap/Tree.php on line 455

Call Stack

#        Time        Memory        Function        Location

1        0,0514        126976        {main}( )        ../sidebar.php:0

2        1,0744        8571544        Horde_Block->buildTree( class Horde_Tree_javascript { 
public $_source_name = 'n_horde_menu'; public $_options_name = 
'o_horde_menu'; public $_target_name = 't_horde_menu'; public 
$_instance = 'horde_menu'; public $_header = array (); public $_nodes 
= array ('horde' => array ('label' => 'Horde', 'expanded' => FALSE, 
'url' => '/headhorde/index.php', 'icon' => 
'/headhorde/themes/graphics/horde.png', 'icondir' => ''), 'imp' => 
array ('label' => 'Webmail', 'expanded' => FALSE, 'url' => 
'/headhorde/imp/', 'icon' => '/headhorde/imp/themes/graphics/imp.png', 
'icondir' => '', 'children' => array (...)), 'ingo' => array ('label' 
=> 'Filter', 'expanded' => FALSE, 'url' => '/headhorde/ingo/', 'icon' 
=> '/headhorde/ingo/themes/graphics/ingo.png', 'icondir' => ''), 'sam' 
=> array ('label' => 'Spam', 'expanded' => FALSE, 'url' => 
'/headhorde/sam/', 'icon' => '/headhorde/sam/themes/graphics/sam.png', 
'icondir' => ''), 'forwards' => array ('label' => 'Weiterleitung', 
'expanded' => FALSE, 'url' => '/headhorde/forwards/', 'icon' => 
'/headhorde/forwards/themes/graphics/forwards.png', 'icondir' => ''), 
'vacation' => array ('label' => 'Abwesenheit', 'expanded' => FALSE, 
'url' => '/headhorde/vacation/', 'icon' => 
'/headhorde/vacation/themes/graphics/vacation.png', 'icondir' => '')); 
public $_root_nodes = array (0 => 'horde', 1 => 'imp'); public 
$_extra_cols_left = 0; public $_extra_cols_right = 0; public $_options 
= array ('lines' => TRUE, 'target' => 'horde_main'); public 
$_sortCriteria = NULL; public $_usesession = TRUE; public $_static = 
FALSE; public $_header_name = 'h_horde_menu' }, 0, 'imp' 
)        ../sidebar.php:227

3        1,0744        8571544        Horde_Registry->pushApp( 'imp', array ('logintasks' 
=> FALSE) )        ../Block.php:193

4        1,2647        9220220        Horde_LoginTasks::singleton( 'imp', 
'http://php5.wg.de:8888/headhorde/services/portal/sidebar.php
)        ../Registry.php:918

5        1,2647        9220220        Horde_LoginTasks->__construct( 'imp', 
'http://php5.wg.de:8888/headhorde/services/portal/sidebar.php
)        ../LoginTasks.php:80

6        1,2648        9220220        Horde_LoginTasks->_createTaskList( 
'http://php5.wg.de:8888/headhorde/services/portal/sidebar.php
)        ../LoginTasks.php:106

7        1,2924        9445932        IMP_LoginTasks_SystemTask_GarbageCollection->execute( 
)        ../LoginTasks.php:221

8        1,3784        10430648        IMP_Imap_Tree::singleton( )        ../GarbageCollection.php:30

9        1,3784        10431304        IMP_Imap_Tree->__construct( )        ../Tree.php:227

10        1,3798        10434968        IMP_Imap_Tree->init( )        ../Tree.php:252



( ! ) Notice: Undefined index: protocol in 
/home/jan/horde-hatchery/imp/lib/Imap.php on line 330

Call Stack

#        Time        Memory        Function        Location

1        0,0514        126976        {main}( )        ../sidebar.php:0

2        1,0744        8571544        Horde_Block->buildTree( class Horde_Tree_javascript { 
public $_source_name = 'n_horde_menu'; public $_options_name = 
'o_horde_menu'; public $_target_name = 't_horde_menu'; public 
$_instance = 'horde_menu'; public $_header = array (); public $_nodes 
= array ('horde' => array ('label' => 'Horde', 'expanded' => FALSE, 
'url' => '/headhorde/index.php', 'icon' => 
'/headhorde/themes/graphics/horde.png', 'icondir' => ''), 'imp' => 
array ('label' => 'Webmail', 'expanded' => FALSE, 'url' => 
'/headhorde/imp/', 'icon' => '/headhorde/imp/themes/graphics/imp.png', 
'icondir' => '', 'children' => array (...)), 'ingo' => array ('label' 
=> 'Filter', 'expanded' => FALSE, 'url' => '/headhorde/ingo/', 'icon' 
=> '/headhorde/ingo/themes/graphics/ingo.png', 'icondir' => ''), 'sam' 
=> array ('label' => 'Spam', 'expanded' => FALSE, 'url' => 
'/headhorde/sam/', 'icon' => '/headhorde/sam/themes/graphics/sam.png', 
'icondir' => ''), 'forwards' => array ('label' => 'Weiterleitung', 
'expanded' => FALSE, 'url' => '/headhorde/forwards/', 'icon' => 
'/headhorde/forwards/themes/graphics/forwards.png', 'icondir' => ''), 
'vacation' => array ('label' => 'Abwesenheit', 'expanded' => FALSE, 
'url' => '/headhorde/vacation/', 'icon' => 
'/headhorde/vacation/themes/graphics/vacation.png', 'icondir' => '')); 
public $_root_nodes = array (0 => 'horde', 1 => 'imp'); public 
$_extra_cols_left = 0; public $_extra_cols_right = 0; public $_options 
= array ('lines' => TRUE, 'target' => 'horde_main'); public 
$_sortCriteria = NULL; public $_usesession = TRUE; public $_static = 
FALSE; public $_header_name = 'h_horde_menu' }, 0, 'imp' 
)        ../sidebar.php:227

3        1,0744        8571544        Horde_Registry->pushApp( 'imp', array ('logintasks' 
=> FALSE) )        ../Block.php:193

4        1,2647        9220220        Horde_LoginTasks::singleton( 'imp', 
'http://php5.wg.de:8888/headhorde/services/portal/sidebar.php
)        ../Registry.php:918

5        1,2647        9220220        Horde_LoginTasks->__construct( 'imp', 
'http://php5.wg.de:8888/headhorde/services/portal/sidebar.php
)        ../LoginTasks.php:80

6        1,2648        9220220        Horde_LoginTasks->_createTaskList( 
'http://php5.wg.de:8888/headhorde/services/portal/sidebar.php
)        ../LoginTasks.php:106

7        1,2924        9445932        IMP_LoginTasks_SystemTask_GarbageCollection->execute( 
)        ../LoginTasks.php:221

8        1,3784        10430648        IMP_Imap_Tree::singleton( )        ../GarbageCollection.php:30

9        1,3784        10431304        IMP_Imap_Tree->__construct( )        ../Tree.php:227

10        1,3798        10434968        IMP_Imap_Tree->init( )        ../Tree.php:252

11        1,3837        10437496        IMP_Imap_Tree->insert( array (0 => 'INBOX') 
)        ../Tree.php:485

12        1,3848        10458032        IMP_Imap_Tree->_getNamespace( 'INBOX' )        ../Tree.php:692

13        1,3849        10458032        IMP_Imap->getNamespace( 'INBOX' )        ../Tree.php:1477



( ! ) Fatal error: Call to a member function getNamespaces() on a 
non-object in /home/jan/horde-hatchery/imp/lib/Imap.php on line 311

Call Stack

#        Time        Memory        Function        Location

1        0,0514        126976        {main}( )        ../sidebar.php:0

2        1,0744        8571544        Horde_Block->buildTree( class Horde_Tree_javascript { 
public $_source_name = 'n_horde_menu'; public $_options_name = 
'o_horde_menu'; public $_target_name = 't_horde_menu'; public 
$_instance = 'horde_menu'; public $_header = array (); public $_nodes 
= array ('horde' => array ('label' => 'Horde', 'expanded' => FALSE, 
'url' => '/headhorde/index.php', 'icon' => 
'/headhorde/themes/graphics/horde.png', 'icondir' => ''), 'imp' => 
array ('label' => 'Webmail', 'expanded' => FALSE, 'url' => 
'/headhorde/imp/', 'icon' => '/headhorde/imp/themes/graphics/imp.png', 
'icondir' => '', 'children' => array (...)), 'ingo' => array ('label' 
=> 'Filter', 'expanded' => FALSE, 'url' => '/headhorde/ingo/', 'icon' 
=> '/headhorde/ingo/themes/graphics/ingo.png', 'icondir' => ''), 'sam' 
=> array ('label' => 'Spam', 'expanded' => FALSE, 'url' => 
'/headhorde/sam/', 'icon' => '/headhorde/sam/themes/graphics/sam.png', 
'icondir' => ''), 'forwards' => array ('label' => 'Weiterleitung', 
'expanded' => FALSE, 'url' => '/headhorde/forwards/', 'icon' => 
'/headhorde/forwards/themes/graphics/forwards.png', 'icondir' => ''), 
'vacation' => array ('label' => 'Abwesenheit', 'expanded' => FALSE, 
'url' => '/headhorde/vacation/', 'icon' => 
'/headhorde/vacation/themes/graphics/vacation.png', 'icondir' => '')); 
public $_root_nodes = array (0 => 'horde', 1 => 'imp'); public 
$_extra_cols_left = 0; public $_extra_cols_right = 0; public $_options 
= array ('lines' => TRUE, 'target' => 'horde_main'); public 
$_sortCriteria = NULL; public $_usesession = TRUE; public $_static = 
FALSE; public $_header_name = 'h_horde_menu' }, 0, 'imp' 
)        ../sidebar.php:227

3        1,0744        8571544        Horde_Registry->pushApp( 'imp', array ('logintasks' 
=> FALSE) )        ../Block.php:193

4        1,2647        9220220        Horde_LoginTasks::singleton( 'imp', 
'http://php5.wg.de:8888/headhorde/services/portal/sidebar.php
)        ../Registry.php:918

5        1,2647        9220220        Horde_LoginTasks->__construct( 'imp', 
'http://php5.wg.de:8888/headhorde/services/portal/sidebar.php
)        ../LoginTasks.php:80

6        1,2648        9220220        Horde_LoginTasks->_createTaskList( 
'http://php5.wg.de:8888/headhorde/services/portal/sidebar.php
)        ../LoginTasks.php:106

7        1,2924        9445932        IMP_LoginTasks_SystemTask_GarbageCollection->execute( 
)        ../LoginTasks.php:221

8        1,3784        10430648        IMP_Imap_Tree::singleton( )        ../GarbageCollection.php:30

9        1,3784        10431304        IMP_Imap_Tree->__construct( )        ../Tree.php:227

10        1,3798        10434968        IMP_Imap_Tree->init( )        ../Tree.php:252

11        1,3837        10437496        IMP_Imap_Tree->insert( array (0 => 'INBOX') 
)        ../Tree.php:485

12        1,3848        10458032        IMP_Imap_Tree->_getNamespace( 'INBOX' )        ../Tree.php:692

13        1,3849        10458032        IMP_Imap->getNamespace( 'INBOX' )        ../Tree.php:1477

14        1,3862        10458680        IMP_Imap->getNamespaceList( )        ../Imap.php:334


2009-08-05 08:34:45 Michael Slusarz Comment #4 Reply to this comment
Ignore my last comment - implemented a better way of running system 
tasks first.  Namely, just run the system tasks as they are verified 
and dont add them to the tasklist at all.
2009-08-05 08:33:20 CVS Commit Comment #3 Reply to this comment
2009-08-05 04:08:52 Michael Slusarz Comment #2
State ⇒ Feedback
Reply to this comment
The idea was that all SystemTasks are to be processed in 
_createTaskList() first.  Thus, when runTasks() is run on the init 
page, the ready() call will automatically handle all those tasks.



However, when multiple apps were being scanned, the order the tasks 
were being added in _createTaskList() were:

Horde - systemtasks

Horde - tasks

App - systemtasks

App - tasks



I've fixed _createTaskList() to store systemtasks and tasks 
separately.  When done scanning, we combine the arrays and systemtasks 
are guaranteed to be first.  Hopefully this fixes things.



http://lists.horde.org/archives/commits/2009-August/001581.html
2009-08-03 10:34:02 Jan Schneider Comment #1
Type ⇒ Bug
State ⇒ Assigned
Priority ⇒ 2. Medium
Summary ⇒ Skipping login tasks not working as expected
Queue ⇒ Horde Framework Packages
Assigned to Michael Slusarz
Milestone ⇒
Patch ⇒ No
Reply to this comment
While trying to debug why I still get logintasks.php in the sidebar, I 
found the following:

In LoginTasks::runTasks(), if setting 'runtasks' to false in the call 
to LoginTasks_Tasklist::ready(), that method splits up system tasks 
into $tmp and all other tasks into $this->_tasks.

Then, LoginTasks_Tasklist::needDisplay() still returns true, because 
the $options hash is not considered there anymore.

Maybe the split-up in ready() is supposed differently, the 
array_slice() call looks suspicious to me. Can we guarantee that 
system tasks are always first in $this->_tasks?

Saved Queries