View source
<?php
function biblio_style_apa_info() {
return array(
'apa' => 'American Psychological Association (APA)',
);
}
function biblio_style_apa_author_options() {
$author_options = array(
'BetweenAuthorsDelimStandard' => ', ',
'BetweenAuthorsDelimLastAuthor' => ', & ',
'AuthorsInitialsDelimFirstAuthor' => ', ',
'AuthorsInitialsDelimStandard' => ' ',
'betweenInitialsDelim' => '. ',
'initialsBeforeAuthorFirstAuthor' => FALSE,
'initialsBeforeAuthorStandard' => FALSE,
'shortenGivenNames' => TRUE,
'numberOfAuthorsTriggeringEtAl' => 6,
'includeNumberOfAuthors' => 6,
'customStringAfterFirstAuthors' => ', et al.',
'encodeHTML' => TRUE,
);
return $author_options;
}
function biblio_style_apa($node) {
module_load_include('inc', 'biblio', '/includes/biblio.contributors');
$output = '';
$authors = '';
$author_options = biblio_style_apa_author_options();
$primary_authors = biblio_get_contributor_category($node->biblio_contributors, 1);
$editors = biblio_get_contributor_category($node->biblio_contributors, 2);
$corp_authors = biblio_get_contributor_category($node->biblio_contributors, 5);
if (!empty($primary_authors)) {
$authors = theme('biblio_format_authors', array(
'contributors' => $primary_authors,
'options' => $author_options,
));
}
if (empty($authors) && !empty($corp_authors)) {
foreach ($corp_authors as $rank => $author) {
$authors .= empty($authors) ? '' : ', ';
$authors .= variable_get('biblio_author_links', 1) ? theme('biblio_author_link', array(
'author' => $author,
)) : $author['name'];
}
}
if (empty($authors)) {
$authors = '[' . t('Anonymous') . ']';
}
if (!empty($node->biblio_citekey) && variable_get('biblio_display_citation_key', 0)) {
$output .= '[' . check_plain($node->biblio_citekey) . '] ';
}
$output .= '<span class="biblio-authors">' . $authors . "</span> \n";
$output .= strrpos($authors, '.') == strlen($authors) ? ". " : " ";
switch ($node->biblio_type) {
case 1:
case 2:
case 3:
case 4:
case 5:
case 6:
case 7:
case 8:
case 9:
default:
if (isset($node->biblio_year)) {
$output .= "(" . check_plain($node->biblio_year) . "). ";
}
$output .= '<span class="biblio-title">';
$url = biblio_get_title_url_info($node);
$output .= l($node->title, $url['link'], $url['options']);
$output .= ". </span> \n";
$output .= !empty($editors) ? '(' . theme('biblio_format_authors', array(
'contributors' => $editors,
'options' => $author_options,
)) . ', Ed.).' : "";
$output .= $node->biblio_secondary_title ? '<u>' . check_plain($node->biblio_secondary_title) . '. ' : '<u>';
$output .= $node->biblio_volume ? check_plain($node->biblio_volume) . ($node->biblio_issue ? '</u>(' . check_plain($node->biblio_issue) . '), ' : ',</u> ') : '</u> ';
$output .= $node->biblio_pages ? check_plain($node->biblio_pages) . '.' : '';
break;
}
return filter_xss($output, biblio_get_allowed_tags());
}