1 layout.class.inc Layout::getClone()

Clone a layout and return new Layout object.

File

core/modules/layout/includes/layout.class.inc, line 435
Class for loading, modifying, and executing a layout.

Class

Layout
@file Class for loading, modifying, and executing a layout.

Code

function getClone() {
  $clone = clone($this);
  $clone->name = NULL;
  $clone->is_new = TRUE;
  $clone->module = NULL;
  $clone->storage = LAYOUT_STORAGE_NORMAL;

  // Copy over blocks with new UUIDs.
  $clone->content = array();
  $clone->positions = array();
  foreach ($this->positions as $region => $block_uuids) {
    foreach ($block_uuids as $block_uuid) {
      $new_block = $this->content[$block_uuid]->getClone();
      $clone->content[$new_block->uuid] = $new_block;
      $clone->positions[$region][] = $new_block->uuid;
    }
  }

  // Position the new layout one level above the current layout, assuming that
  // users will start with a generic layout, such as a global "node" layout,
  // then later create a more specific layout, such as "post nodes", which
  // should come before the more generic version.
  $clone->weight--;

  return $clone;
}