function theme_biblio_page_number in Bibliography Module 5
Same name and namespace in other branches
- 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()
- 7.2 includes/biblio.theme.inc \theme_biblio_page_number()
4 calls to theme_biblio_page_number()
- biblio_style_ama in ./biblio_style_ama.inc
- biblio_style_chicago in ./biblio_style_chicago.inc
- Apply a bibliographic style to the node
- biblio_style_mla in ./biblio_style_mla.inc
- Apply a bibliographic style to the node
- biblio_style_vancouver in ./biblio_style_vancouver.inc
1 theme call to theme_biblio_page_number()
- biblio_style_ama in ./biblio_style_ama.inc
File
- ./biblio.module, line 4087
Code
function theme_biblio_page_number($origPageInfo, $pageRangeDelim = "-", $singlePagePrefix = "", $pageRangePrefix = "", $totalPagesPrefix = "", $singlePageSuffix = "", $pageRangeSuffix = "", $totalPagesSuffix = "", $shortenPageRangeEnd = false) {
list($alnum, $alpha, $cntrl, $dash, $digit, $graph, $lower, $print, $punct, $space, $upper, $word, $patternModifiers) = _biblio_get_utf8_regex();
if (preg_match("/\\w*\\d+\\w* *[{$dash}]+ *(?:\\w*\\d+\\w*)?/{$patternModifiers}", $origPageInfo)) {
$origPageInfo = preg_replace("/(\\w*\\d+\\w*) *([{$dash}]+) *(\\w*\\d+\\w*)?(?=[^\\w\\d]|\$)/{$patternModifiers}", "\\1\\2\\3", $origPageInfo);
$partsArray = preg_split("/ +/", $origPageInfo);
$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}", $singlePagePrefix . "\\1" . $singlePageSuffix, $partsArray[$i]);
}
elseif (preg_match("/\\w*\\d+\\w*[{$dash}]+(?:\\w*\\d+\\w*)?(?=[^\\w\\d]|\$)/{$patternModifiers}", $partsArray[$i])) {
if ($shortenPageRangeEnd 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] = $pageRangePrefix . $startPage . $pageRangeDelim . $endPage . $pageRangeSuffix;
}
else {
$partsArray[$i] = preg_replace("/(\\w*\\d+\\w*)[{$dash}]+(\\w*\\d+\\w*)?(?=[^\\w\\d]|\$)/{$patternModifiers}", $pageRangePrefix . "\\1" . $pageRangeDelim . "\\2" . $pageRangeSuffix, $partsArray[$i]);
}
}
}
$newPageInfo = join(" ", $partsArray);
}
else {
$newPageInfo = $origPageInfo;
}
return $newPageInfo;
}