1.20.x layout.module layout_get_all_configs($type)

Read all configuration files from disk of a particular layout type.

This method provides basic caching around Layout's config files.

Parameters

$type: Either "layout" or "menu_item".

Return value

array: An array of all configs for the specified type.

File

modules/layout/layout.module, line 1172
The Layout module creates pages and wraps existing pages in layouts.

Code

function layout_get_all_configs($type) {
  // Cache the raw config files once read.
  if ($cache = cache()->get('layout:' . $type . ':config')) {
    $configs = $cache->data;
  }
  else {
    $configs = array();
    $config_names = config_get_names_with_prefix('layout.' . $type . '.');
    foreach ($config_names as $config_file) {
      $config = config($config_file);
      $data = $config->get();
      $data += array(
        'weight' => 0,
      );
      $configs[$data['name']] = $data;
    }

    // Sort the configs by path and weight.
    backdrop_sort($configs, array(
      'path' => SORT_STRING,
      'weight' => SORT_NUMERIC,
    ));

    // Put default layouts at the bottom.
    if ($type === 'layout') {
      $default = $configs['default'];
      $admin_default = $configs['admin_default'];
      unset($configs['default']);
      unset($configs['admin_default']);
      $configs['default'] = $default;
      $configs['admin_default'] = $admin_default;
    }

    cache()->set('layout:' . $type . ':config', $configs);
  }

  return $configs;
}