You are here

class csl_date in Bibliography Module 6.2

Same name and namespace in other branches
  1. 7 modules/CiteProc/CSL.inc \csl_date
  2. 7.2 modules/CiteProc/CSL.inc \csl_date

Hierarchy

Expanded class hierarchy of csl_date

File

modules/CiteProc/CSL.inc, line 915

View source
class csl_date extends csl_format {
  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);
    }
  }
  function render($data, $mode = NULL) {
    $date_parts = array();
    $date = '';
    $text = '';
    if (($var = $this->variable) && isset($data->{$var})) {
      $date[] = $data->{$var};
      foreach ($this->elements as $element) {
        $date_parts[] = $element
          ->render($date, $mode);
      }
      $text = implode('', $date_parts);
    }

    //    else {
    //      $text = $this->citeproc->get_locale('term', 'no date');
    //    }
    return $this
      ->format($text);
  }

}

Members