You are here

private function views_oai_pmh_plugin_style_auto::_check_style_objects in Views OAI-PMH 7.2

Same name and namespace in other branches
  1. 6.2 plugins/views_oai_pmh_plugin_style_auto.inc \views_oai_pmh_plugin_style_auto::_check_style_objects()

Clones this object's properties into its style objects. Only performs this action the first time the function is called; subsequent calls just run the validity test.

Return value

boolean TRUE if the objects are OK, FALSE if not.

1 call to views_oai_pmh_plugin_style_auto::_check_style_objects()
views_oai_pmh_plugin_style_auto::render_records in plugins/views_oai_pmh_plugin_style_auto.inc

File

plugins/views_oai_pmh_plugin_style_auto.inc, line 46
Definition of the views_oai_pmh_plugin_style_auto class.

Class

views_oai_pmh_plugin_style_auto

Code

private function _check_style_objects() {

  // Check to see if the $_style_objects array has not been populated already.
  if (!$this->_style_objects_populated) {

    // We'll use these two variables to determine the metadata type to use:
    // 1) The "metadataPrefix" parameter from the query string.
    $metadata_prefix = array_key_exists('metadataPrefix', $_GET) && $_GET['metadataPrefix'] != '' ? $_GET['metadataPrefix'] : '';

    // 2) The active row plugin from the View.
    $row_plugin = $this->view->display[$this->view->current_display]->handler->options['row_plugin'];

    // If we're set to use the Auto row plugin, then use the metadataPrefix parameter from the query string.
    if ($row_plugin == 'auto' && array_key_exists($metadata_prefix, $GLOBALS['views_oai_pmh'])) {
      $this->_metadata_format = $metadata_prefix;
    }
    elseif ($row_plugin != '' && $row_plugin != 'auto') {

      // Check each data definition for the correct metadata prefix to use with this row plugin.
      foreach ($GLOBALS['views_oai_pmh'] as $data_definition) {
        if ($data_definition->row_plugin == $row_plugin) {
          $this->_metadata_format = $data_definition->metadata_prefix;
        }
      }
    }
    else {
      $this->_metadata_format = $GLOBALS['views_oai_pmh_default'];
    }

    // Examine each value in the array of style objects, indexed by the keys from the global array of OAI data types.
    foreach ($GLOBALS['views_oai_pmh'] as $key => $unused) {

      // Populate each style object with the properties of this 'Auto' object.
      foreach ($this as $property => $value) {
        switch ($property) {

          // Don't apply the properties that are unique to the 'Auto' class.
          case '_style_objects':
          case '_style_objects_populated':
          case '_metadata_format':
            break;

          // Create/set the property in the row object.
          default:
            $this->_style_objects[$key]->{$property} = $value;
            break;
        }
      }
    }

    // Flag the object population code as complete so this block doesn't run again.
    $this->_style_objects_populated = TRUE;
  }

  // Check each individual array item for a valid object that is a descendant of the 'views_oai_pmh_plugin_style' class, returning a failure if we encounter any errors.
  foreach ($this->_style_objects as $obj) {
    if (!is_object($obj) || get_parent_class($obj) != 'views_oai_pmh_plugin_style') {
      return FALSE;
    }
  }
  return TRUE;
}