function views_plugin_display::get_plugin

Get the instance of a plugin, for example style or row.

Parameters

string $type: The type of the plugin.

string $name: The name of the plugin defined in hook_views_plugins.

Return value

views_plugin|false FALSE if no plugin, otherwise the requested instance of a plugin.

17 calls to views_plugin_display::get_plugin()
views_plugin_display::access in plugins/views_plugin_display.inc
Determine if the user has access to this display of the view.
views_plugin_display::export_plugin in plugins/views_plugin_display.inc
Special handling for plugin export.
views_plugin_display::export_style in plugins/views_plugin_display.inc
Special handling for the style export.
views_plugin_display::options_form in plugins/views_plugin_display.inc
Provide the default form for setting options.
views_plugin_display::options_submit in plugins/views_plugin_display.inc
Perform any necessary changes to the form values prior to storage.

... See full list

File

plugins/views_plugin_display.inc, line 946

Class

views_plugin_display
The default display plugin handler. Display plugins handle options and basic mechanisms for different output methods.

Code

public function get_plugin($type = 'style', $name = NULL) {
    static $cache = array();
    if (!isset($cache[$type][$name])) {
        switch ($type) {
            case 'style':
            case 'row':
                $option_name = $type . '_plugin';
                $options = $this->get_option($type . '_options');
                if (!$name) {
                    $name = $this->get_option($option_name);
                }
                break;
            case 'query':
                $views_data = views_fetch_data($this->view->base_table);
                $name = !empty($views_data['table']['base']['query class']) ? $views_data['table']['base']['query class'] : 'views_query';
            default:
                $option_name = $type;
                $options = $this->get_option($type);
                if (!$name) {
                    $name = $options['type'];
                }
                // Access & cache store their options as siblings with the type; all
                // others use an 'options' array.
                if ($type != 'access' && $type != 'cache') {
                    $options = $options['options'];
                }
        }
        $plugin = views_get_plugin($type, $name);
        if (!$plugin) {
            return FALSE;
        }
        if ($type != 'query') {
            $plugin->init($this->view, $this->display, $options);
        }
        else {
            $display_id = $this->is_defaulted($option_name) ? $this->display->id : 'default';
            $plugin->localization_keys = array(
                $display_id,
                $type,
            );
            if (!isset($this->base_field)) {
                $views_data = views_fetch_data($this->view->base_table);
                $this->view->base_field = !empty($views_data['table']['base']['field']) ? $views_data['table']['base']['field'] : '';
            }
            $plugin->init($this->view->base_table, $this->view->base_field, $options);
        }
        $cache[$type][$name] = $plugin;
    }
    return $cache[$type][$name];
}