Make sure systemtasks are always run before logintasks
authorMichael M Slusarz <slusarz@curecanti.org>
Wed, 5 Aug 2009 04:05:21 +0000 (22:05 -0600)
committerMichael M Slusarz <slusarz@curecanti.org>
Wed, 5 Aug 2009 04:05:21 +0000 (22:05 -0600)
framework/LoginTasks/lib/Horde/LoginTasks.php

index 0de350d..f5a8335 100644 (file)
@@ -144,7 +144,7 @@ class Horde_LoginTasks
             array_unshift($app_list, 'horde');
         }
 
-        $tasks = array();
+        $systemtasks = $tasks = array();
 
         foreach ($app_list as $app) {
             $fileroot = $GLOBALS['registry']->get('fileroot', $app);
@@ -154,7 +154,11 @@ class Horde_LoginTasks
                         foreach (scandir($fileroot . '/lib/LoginTasks/' . $val) as $file) {
                             $classname = $app . '_LoginTasks_' . $val . '_' . basename($file, '.php');
                             if (class_exists($classname)) {
-                                $tasks[$classname] = $app;
+                                if ($val == 'SystemTask') {
+                                    $systemtasks[$classname] = $app;
+                                } else {
+                                    $tasks[$classname] = $app;
+                                }
                             }
                         }
                     }
@@ -162,6 +166,10 @@ class Horde_LoginTasks
             }
         }
 
+        /* Need to make sure all systemtasks are run before regular tasks
+         * are run. */
+        $tasks = array_merge($systemtasks, $tasks);
+
         if (empty($tasks)) {
             return;
         }