diff --git a/advanced_forum.module b/advanced_forum.module index c7b161a..8539231 100644 --- a/advanced_forum.module +++ b/advanced_forum.module @@ -17,6 +17,7 @@ function advanced_forum_init() { $style_directory = advanced_forum_path_to_style(); drupal_add_css("$style_directory/advanced_forum-structure.css" ); drupal_add_css("$style_directory/advanced_forum.css" ); + _advanced_forum_load_preprocessors(); } } @@ -59,6 +60,7 @@ function advanced_forum_menu_alter(&$callbacks) { * Implementation of hook_theme(). */ function advanced_forum_theme() { + _advanced_forum_load_preprocessors(); $items['forum_user'] = array( 'template' => 'advf-forum-user', 'path' => advanced_forum_path_to_style(), @@ -126,6 +128,49 @@ variable_get('advanced_forum_button_links', TRUE) // TEMPLATE PREPROCESS *******************************************************/ /** + * Load advanced forum preprocessors includes on behalf of modules. + */ +function _advanced_forum_load_preprocessors() { + // forum.inc is the extension on the includes such as contact.forum.inc + advanced_forum_include('forum.inc'); +} + +/** + * Load advanced forum files on behalf of modules. + * + * Blatent rip of views include system. + */ +function advanced_forum_include($file) { + $includes = array(); + $cache = cache_get('advforum_includes'); + if (isset($cache->data) && $cache->data) { + $includes = $cache->data; + } + else { + $advanced_forum_path = drupal_get_path('module', 'advanced_forum') . '/modules'; + foreach (module_list() as $module) { + $module_path = drupal_get_path('module', $module); + if (file_exists("$module_path/$module.$file")) { + $includes[] = "./$module_path/$module.$file"; + } + else if (file_exists("$module_path/includes/$module.$file")) { + $includes[] = "./$module_path/includes/$module.$file"; + } + else if (file_exists("$advanced_forum_path/$module.$file")) { + $includes[] = "./$advanced_forum_path/$module.$file"; + } + } + cache_set('advforum_includes', $includes); + } + + if (!empty($includes)) { + foreach ($includes as $include) { + require_once $include; + } + } +} + +/** * Preprocesses template variables for the node template. */ function advanced_forum_preprocess_node(&$vars) { @@ -343,38 +388,6 @@ function template_preprocess_forum_user(&$variables) { $variables['online_text'] = t('Offline'); $variables['online_status'] = '