public function csl_date::init in Bibliography Module 7
Same name and namespace in other branches
- 6.2 modules/CiteProc/CSL.inc \csl_date::init()
- 7.2 modules/CiteProc/CSL.inc \csl_date::init()
Overrides csl_element::init
File
- modules/
CiteProc/ CSL.inc, line 1175 - CiteProc-PHP.
Class
Code
public function init($dom_node, $citeproc) {
$locale_elements = array();
if ($form = $this->form) {
$local_date = $this->citeproc
->get_locale('date_options', $form);
$dom_elem = dom_import_simplexml($local_date[0]);
if ($dom_elem) {
foreach ($dom_elem->childNodes as $node) {
if ($node->nodeType == 1) {
$locale_elements[] = csl_factory::create($node, $citeproc);
}
}
}
foreach ($dom_node->childNodes as $node) {
if ($node->nodeType == 1) {
$element = csl_factory::create($node, $citeproc);
foreach ($locale_elements as $key => $locale_element) {
if ($locale_element->name == $element->name) {
$locale_elements[$key]->attributes = array_merge($locale_element->attributes, $element->attributes);
$locale_elements[$key]->format = $element->format;
break;
}
else {
$locale_elements[] = $element;
}
}
}
}
if ($date_parts = $this->{'date-parts'}) {
$parts = explode('-', $date_parts);
foreach ($locale_elements as $key => $element) {
if (array_search($element->name, $parts) === FALSE) {
unset($locale_elements[$key]);
}
}
if (count($locale_elements) != count($parts)) {
foreach ($parts as $part) {
$element = new csl_date_part();
$element->name = $part;
$locale_elements[] = $element;
}
}
// Now re-order the elements.
foreach ($parts as $part) {
foreach ($locale_elements as $key => $element) {
if ($element->name == $part) {
$this->elements[] = $element;
unset($locale_elements[$key]);
}
}
}
}
else {
$this->elements = $locale_elements;
}
}
else {
parent::init($dom_node, $citeproc);
}
}