function theme_biblio_page_number in Bibliography Module 7.2
Same name and namespace in other branches
- 5 biblio.module \theme_biblio_page_number()
- 6.2 includes/biblio_theme.inc \theme_biblio_page_number()
- 6 biblio_theme.inc \theme_biblio_page_number()
- 7 includes/biblio_theme.inc \theme_biblio_page_number()
1 call to theme_biblio_page_number()
- biblio_style_vancouver in styles/biblio_style_vancouver.inc
4 theme calls to theme_biblio_page_number()
- biblio_style_ama in styles/biblio_style_ama.inc
- biblio_style_chicago in styles/biblio_style_chicago.inc
- Apply a bibliographic style to the node
- biblio_style_mla in styles/biblio_style_mla.inc
- Apply a bibliographic style to the node
- biblio_style_vancouver in styles/biblio_style_vancouver.inc
File
- includes/biblio.theme.inc, line 634
Code
function theme_biblio_page_number($variables) {
$orig_page_info = $variables['orig_page_info'];
$page_range_delim = $variables['page_range_delim'];
$single_page_prefix = $variables['single_page_prefix'];
$page_range_prefix = $variables['page_range_prefix'];
$total_pages_prefix = $variables['total_pages_prefix'];
$single_page_suffix = $variables['single_page_suffix'];
$page_range_suffix = $variables['page_range_prefix'];
$total_pages_suffix = $variables['total_pages_prefix'];
$shorten_page_range_end = $variables['single_page_suffix'];
list($alnum, $alpha, $cntrl, $dash, $digit, $graph, $lower, $print, $punct, $space, $upper, $word, $patternModifiers) = _biblio_get_regex_patterns();
if (preg_match("/\\w*\\d+\\w* *[{$dash}]+ *(?:\\w*\\d+\\w*)?/{$patternModifiers}", $orig_page_info)) {
$orig_page_info = preg_replace("/(\\w*\\d+\\w*) *([{$dash}]+) *(\\w*\\d+\\w*)?(?=[^\\w\\d]|\$)/{$patternModifiers}", "\\1\\2\\3", $orig_page_info);
$partsArray = preg_split("/ +/", $orig_page_info);
$partsCount = count($partsArray);
for ($i = 0; $i < $partsCount; $i++) {
if (preg_match("/(\\w*\\d+\\w*)[{$dash}]+\\1(?=[^\\w\\d]|\$)/{$patternModifiers}", $partsArray[$i])) {
$partsArray[$i] = preg_replace("/(\\w*\\d+\\w*)[{$dash}]+\\1(?=[^\\w\\d]|\$)/{$patternModifiers}", $single_page_prefix . "\\1" . $single_page_suffix, $partsArray[$i]);
}
elseif (preg_match("/\\w*\\d+\\w*[{$dash}]+(?:\\w*\\d+\\w*)?(?=[^\\w\\d]|\$)/{$patternModifiers}", $partsArray[$i])) {
if ($shorten_page_range_end and preg_match("/\\d+[{$dash}]+\\d+/{$patternModifiers}", $partsArray[$i])) {
list($startPage, $endPage) = preg_split("/[{$dash}]+/{$patternModifiers}", $partsArray[$i]);
$countStartPage = strlen($startPage);
$countEndPage = strlen($endPage);
if ($countStartPage == $countEndPage and $startPage < $endPage) {
for ($j = 0; $j < $countStartPage; $j++) {
if (preg_match("/^" . substr($startPage, $j, 1) . "/", $endPage)) {
$endPage = substr($endPage, 1);
}
else {
break;
}
}
}
$partsArray[$i] = $page_range_prefix . $startPage . $page_range_delim . $endPage . $page_range_suffix;
}
else {
$partsArray[$i] = preg_replace("/(\\w*\\d+\\w*)[{$dash}]+(\\w*\\d+\\w*)?(?=[^\\w\\d]|\$)/{$patternModifiers}", $page_range_prefix . "\\1" . $page_range_delim . "\\2" . $page_range_suffix, $partsArray[$i]);
}
}
}
$newPageInfo = join(" ", $partsArray);
}
else {
$newPageInfo = $orig_page_info;
}
return $newPageInfo;
}