class csl_names in Bibliography Module 6.2
Same name and namespace in other branches
- 7 modules/CiteProc/CSL.inc \csl_names
- 7.2 modules/CiteProc/CSL.inc \csl_names
Hierarchy
- class \csl_collection
- class \csl_element
- class \csl_rendering_element
- class \csl_format
- class \csl_names
- class \csl_format
- class \csl_rendering_element
- class \csl_element
Expanded class hierarchy of csl_names
File
- modules/
CiteProc/ CSL.inc, line 794
View source
class csl_names extends csl_format {
private $substitutes;
function init_formatting() {
$this->span_class = 'biblio-authors';
parent::init_formatting();
}
function init($dom_node, $citeproc) {
$etal = '';
$tag = $dom_node
->getElementsByTagName('substitute')
->item(0);
if ($tag) {
$this->substitutes = csl_factory::create($tag, $citeproc);
$dom_node
->removeChild($tag);
}
$tag = $dom_node
->getElementsByTagName('et-al')
->item(0);
if ($tag) {
$etal = csl_factory::create($tag, $citeproc);
$dom_node
->removeChild($tag);
}
$var = $dom_node
->getAttribute('variable');
foreach ($dom_node->childNodes as $node) {
if ($node->nodeType == 1) {
$element = csl_factory::create($node, $citeproc);
if ($element instanceof csl_label) {
$element->variable = $var;
}
if ($element instanceof csl_name && $etal) {
$element->etal = $etal;
}
$this
->add_element($element);
}
}
}
function render($data, $mode = NULL) {
$matches = array();
$variable_parts = array();
if (!isset($this->delimiter)) {
$style_delimiter = $this->citeproc->style->{'names-delimiter'};
$mode_delimiter = $this->citeproc->{$mode}->{'names-delimiter'};
$this->delimiter = isset($mode_delimiter) ? $mode_delimiter : (isset($style_delimiter) ? $style_delimiter : '');
}
$variables = explode(' ', $this->variable);
foreach ($variables as $var) {
if (in_array($var, $this->citeproc->quash)) {
continue;
}
list($contributor, $type) = explode(':', $var);
if (!empty($type) && isset($data->{$contributor}[$type]) && !empty($data->{$contributor}[$type])) {
$matches[] = $var;
}
}
if (empty($matches)) {
// we don't have any primary suspects, so lets check the substitutes...
if (isset($this->substitutes)) {
foreach ($this->substitutes->elements as $element) {
if ($element instanceof csl_names) {
//test to see if any of the other names variables has content
$sub_variables = explode(' ', $element->variable);
foreach ($sub_variables as $var) {
list($contributor, $type) = explode(':', $var);
if (!empty($type) && isset($data->{$contributor}[$type]) && !empty($data->{$contributor}[$type])) {
$matches[] = $var;
$this->citeproc->quash[] = $var;
}
}
}
else {
// if it's not a "names" element, just render it
$text = $element
->render($data, $mode);
$this->citeproc->quash[] = isset($element->variable) ? $element->variable : $element->var;
if (!empty($text)) {
$variable_parts[] = $text;
}
}
if (!empty($matches)) {
break;
}
}
}
}
foreach ($matches as $var) {
if (in_array($var, $this->citeproc->quash) && in_array($var, $variables)) {
continue;
}
$text = '';
list($contributor, $type) = explode(':', $var);
if (!empty($type) && isset($data->{$contributor}[$type]) && !empty($data->{$contributor}[$type])) {
foreach ($this->elements as $element) {
if (is_a($element, 'csl_label')) {
$element->variable = $this
->_get_csl_name_variable($type);
$text .= $element
->render($data->{$contributor}[$type], $mode);
}
elseif (is_a($element, 'csl_name')) {
$text .= $element
->render($data->{$contributor}[$type], $mode);
}
}
}
if (!empty($text)) {
$variable_parts[] = $text;
}
}
if (!empty($variable_parts)) {
$text = implode($this->delimiter, $variable_parts);
return $this
->format($text);
}
return;
}
private function _get_csl_name_variable($category) {
switch ($category) {
case 1:
return 'author';
break;
case 2:
return 'editor';
break;
case 3:
return 'translator';
break;
default:
}
}
}
Members
Name![]() |
Modifiers | Type | Description | Overrides |
---|---|---|---|---|
csl_collection:: |
protected | property | ||
csl_collection:: |
function | |||
csl_element:: |
protected | property | ||
csl_element:: |
protected | property | ||
csl_element:: |
function | |||
csl_element:: |
function | |||
csl_element:: |
function | |||
csl_element:: |
function | |||
csl_element:: |
function | |||
csl_element:: |
function | |||
csl_element:: |
function | |||
csl_element:: |
function | |||
csl_format:: |
protected | property | 1 | |
csl_format:: |
protected | property | ||
csl_format:: |
function |
Overrides csl_collection:: |
1 | |
csl_format:: |
function |
Overrides csl_element:: |
2 | |
csl_names:: |
private | property | ||
csl_names:: |
function |
Overrides csl_element:: |
||
csl_names:: |
function |
Overrides csl_format:: |
||
csl_names:: |
function |
Overrides csl_rendering_element:: |
||
csl_names:: |
private | function |