function view::load

2.x view.inc &view::load($arg, $reset = FALSE)

Load a view from the database based upon either vid or name.

This is a static factory method that implements internal caching for view objects.

Parameters

$arg: The name of the view or its internal view id (vid)

$reset: If TRUE, reset this entry in the load cache.

Return value

A view object or NULL if it was not available.

1 call to view::load()
views_get_view in ./views.module
Get a view from the database or from default views.

File

includes/view.inc, line 1342
view.inc Provides the view object type and associated methods.

Class

view
An object to contain all of the data to generate a view, plus the member functions to build the view query, execute the query and render the output.

Code

function &load($arg, $reset = FALSE) {
  static $cache = array();

  // We want a NULL value to return TRUE here, so we can't use isset() or empty().
  if (!array_key_exists($arg, $cache) || $reset) {
    $where = (is_numeric($arg) ? "vid =  %d" : "name = '%s'");
    $data = db_fetch_object(db_query("SELECT * FROM {views_view} WHERE $where", $arg));
    if (empty($data)) {
      $cache[$arg] = NULL;
    }
    else {
      $view = new view();
      $view->load_row($data);
      $view->type = t('Normal');
      // Load all of our subtables.
      foreach ($view->db_objects() as $key) {
        $object_name = "views_$key";
        $result = db_query("SELECT * FROM {{$object_name}} WHERE vid = %d ORDER BY position", $view->vid);

        while ($data = db_fetch_object($result)) {
          $object = new $object_name(FALSE);
          $object->load_row($data);

          // Because it can get complicated with this much indirection,
          // make a shortcut reference.
          $location = &$view->$key;

          // If we have a basic id field, load the item onto the view based on
          // this ID, otherwise push it on.
          if (!empty($object->id)) {
            $location[$object->id] = $object;
          }
          else {
            $location[] = $object;
          }
        }
      }

      $view->loaded = TRUE;
      $cache[$arg] = $view;
    }
  }

  return $cache[$arg];
}