From 8a6c97a1ceaf648bdbff6b8cb80d24c00935e300 Mon Sep 17 00:00:00 2001 From: Angie Byron <webchick@24967.no-reply.drupal.org> Date: Mon, 3 Jan 2011 08:02:11 +0000 Subject: [PATCH] #992376 by larowlan: Fixed Paths containing a hyphen aren't compatible with page theme_hook_suggestions --- includes/theme.inc | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/includes/theme.inc b/includes/theme.inc index 44946cf53bcb..c5015865d9d1 100644 --- a/includes/theme.inc +++ b/includes/theme.inc @@ -2364,8 +2364,19 @@ function theme_get_suggestions($args, $base, $delimiter = '__') { $suggestions = array(); $prefix = $base; foreach ($args as $arg) { - // Remove slashes or null per SA-CORE-2009-003. - $arg = str_replace(array("/", "\\", "\0"), '', $arg); + // Remove slashes or null per SA-CORE-2009-003 and change - (hyphen) to _ + // (underscore). + // + // When we discover templates in @see drupal_find_theme_templates, + // hyphens (-) are converted to underscores (_) before the theme hook + // is registered. We do this because the hyphens used for delimiters + // in hook suggestions cannot be used in the function names of the + // associated preprocess functions. Any page templates designed to be used + // on paths that contain a hyphen are also registered with these hyphens + // converted to underscores so here we must convert any hyphens in path + // arguments to underscores here before fetching theme hook suggestions + // to ensure the templates are appropriately recognized. + $arg = str_replace(array("/", "\\", "\0", '-'), array('', '', '', '_'), $arg); // The percent acts as a wildcard for numeric arguments since // asterisks are not valid filename characters on many filesystems. if (is_numeric($arg)) { -- GitLab