1 layout.module layout_get_handler_name($plugin_type, $plugin_name)

Helper function to get a handler class name based on the plugin name.

File

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

Code

function layout_get_handler_name($plugin_type, $plugin_name) {
  // Block "plugins" for Layouts are wrappers around the generic block system.
  $broken_class = NULL;

  if ($plugin_type === 'block') {
    $parts = explode(':', $plugin_name);
    list($module, $delta) = $parts;
    $info = layout_get_block_info($module, $delta);

    if ($info) {
      if (isset($info['class'])) {
        $class_name = $info['class'];
      }
      else {
        $class_name = 'BlockLegacy';
      }
      // Field blocks use the field name as the third part of the plugin name.
      // If the field no longer exists, return a broken block.
      if ($delta == 'field_block' && isset($parts[2])) {
        $field_name = $parts[2];
        $available_fields = field_get_block_list();

        if (empty($available_fields[$field_name])) {
          $class_name = 'BlockBroken';
        }
      }
    }
    else {
      $class_name = 'BlockBroken';
    }
  }
  else {
    $info = _layout_get_all_info($plugin_type);

    switch ($plugin_type) {
      case 'layout_access':
        $broken_class = 'LayoutAccessBroken';
        break;
      case 'layout_context':
        $broken_class = 'LayoutContextBroken';
        break;
      case 'layout_relationship':
        $broken_class = 'LayoutRelationshipBroken';
        break;
      case 'layout_style':
        $broken_class = 'LayoutStyle';
        break;
    }

    if (isset($info[$plugin_name]['class']) && class_exists($info[$plugin_name]['class'])) {
      $class_name = $info[$plugin_name]['class'];
    }
    else {
      $class_name = $broken_class;
    }
  }

  return $class_name;
}