You are here

class views_plugin_display_block in Views (for Drupal 7) 6.2

Same name and namespace in other branches
  1. 6.3 plugins/views_plugin_display_block.inc \views_plugin_display_block
  2. 7.3 plugins/views_plugin_display_block.inc \views_plugin_display_block

The plugin that handles a block.

Hierarchy

Expanded class hierarchy of views_plugin_display_block

Related topics

1 string reference to 'views_plugin_display_block'
views_views_plugins in includes/plugins.inc
Implementation of hook_views_plugins

File

plugins/views_plugin_display_block.inc, line 12
Contains the block display plugin.

View source
class views_plugin_display_block extends views_plugin_display {
  function option_definition() {
    $options = parent::option_definition();
    $options['block_description'] = array(
      'default' => '',
      'translatable' => TRUE,
    );
    $options['block_caching'] = array(
      'default' => BLOCK_NO_CACHE,
    );
    return $options;
  }

  /**
   * The default block handler doesn't support configurable items,
   * but extended block handlers might be able to do interesting
   * stuff with it.
   */
  function execute_hook_block($op = 'list', $delta = 0, $edit = array()) {
    if ($op == 'list') {
      $delta = $this->view->name . '-' . $this->display->id;
      $desc = $this
        ->get_option('block_description');
      if (empty($desc)) {
        $desc = t('@view: @display', array(
          '@view' => $this->view->name,
          '@display' => $this->display->display_title,
        ));
      }
      return array(
        $delta => array(
          'info' => $desc,
          'cache' => $this
            ->get_cache_type(),
        ),
      );
    }
  }

  /**
   * The display block handler returns the structure necessary for a block.
   */
  function execute() {

    // Prior to this being called, the $view should already be set to this
    // display, and arguments should be set on the view.
    $info['content'] = $this->view
      ->render();
    $info['subject'] = filter_xss_admin($this->view
      ->get_title());
    if (!empty($this->view->result) || $this
      ->get_option('empty') || !empty($this->view->style_plugin->definition['even empty'])) {
      return $info;
    }
  }

  /**
   * Provide the summary for page options in the views UI.
   *
   * This output is returned as an array.
   */
  function options_summary(&$categories, &$options) {

    // It is very important to call the parent function here:
    parent::options_summary($categories, $options);
    $categories['block'] = array(
      'title' => t('Block settings'),
    );
    $block_description = strip_tags($this
      ->get_option('block_description'));
    if (empty($block_description)) {
      $block_description = t('None');
    }
    if (strlen($block_description) > 16) {
      $block_description = drupal_substr($block_description, 0, 16) . '...';
    }
    $options['block_description'] = array(
      'category' => 'block',
      'title' => t('Admin'),
      'value' => $block_description,
    );
    $cache_type = $this
      ->get_option('block_caching');
    if (empty($cache_type)) {
      $cache_type = BLOCK_NO_CACHE;
    }
    $types = $this
      ->block_caching_modes();
    $options['block_caching'] = array(
      'category' => 'block',
      'title' => t('Caching'),
      'value' => $types[$this
        ->get_cache_type()],
    );
  }

  /**
   * Provide a list of core's block caching modes.
   */
  function block_caching_modes() {
    return array(
      BLOCK_NO_CACHE => t('Do not cache'),
      BLOCK_CACHE_GLOBAL => t('Cache once for everything (global)'),
      BLOCK_CACHE_PER_PAGE => t('Per page'),
      BLOCK_CACHE_PER_ROLE => t('Per role'),
      BLOCK_CACHE_PER_ROLE | BLOCK_CACHE_PER_PAGE => t('Per role per page'),
      BLOCK_CACHE_PER_USER => t('Per user'),
      BLOCK_CACHE_PER_USER | BLOCK_CACHE_PER_PAGE => t('Per user per page'),
    );
  }

  /**
   * Provide a single method to figure caching type, keeping a sensible default
   * for when it's unset.
   */
  function get_cache_type() {
    $cache_type = $this
      ->get_option('block_caching');
    if (empty($cache_type)) {
      $cache_type = BLOCK_NO_CACHE;
    }
    return $cache_type;
  }

  /**
   * Provide the default form for setting options.
   */
  function options_form(&$form, &$form_state) {

    // It is very important to call the parent function here:
    parent::options_form($form, $form_state);
    switch ($form_state['section']) {
      case 'block_description':
        $form['#title'] .= t('Block admin description');
        $form['block_description'] = array(
          '#type' => 'textfield',
          '#description' => t('This will appear as the name of this block in administer >> site building >> blocks.'),
          '#default_value' => $this
            ->get_option('block_description'),
        );
        break;
      case 'block_caching':
        $form['#title'] .= t('Block caching type');
        $form['block_caching'] = array(
          '#type' => 'radios',
          '#description' => t("This sets the default status for Drupal's built-in block caching method; this requires that caching be turned on in block administration, and be careful because you have little control over when this cache is flushed."),
          '#options' => $this
            ->block_caching_modes(),
          '#default_value' => $this
            ->get_cache_type(),
        );
        break;
    }
  }

  /**
   * Perform any necessary changes to the form values prior to storage.
   * There is no need for this function to actually store the data.
   */
  function options_submit(&$form, &$form_state) {

    // It is very important to call the parent function here:
    parent::options_submit($form, $form_state);
    switch ($form_state['section']) {
      case 'block_description':
        $this
          ->set_option('block_description', $form_state['values']['block_description']);
        break;
      case 'block_caching':
        $this
          ->set_option('block_caching', $form_state['values']['block_caching']);
        $this
          ->save_block_cache($form_state['view']->name . '-' . $form_state['display_id'], $form_state['values']['block_caching']);
        break;
    }
  }

  /**
   * Block views use exposed widgets only if AJAX is set.
   */
  function uses_exposed() {
    if ($this
      ->use_ajax()) {
      return parent::uses_exposed();
    }
    return FALSE;
  }

  /**
   * Save the block cache setting in the blocks table if this block allready
   * exists in the blocks table. Dirty fix untill http://drupal.org/node/235673 gets in.
   */
  function save_block_cache($delta, $cache_setting) {
    if ($bid = db_fetch_object(db_query("SELECT bid, cache FROM {blocks} WHERE module = 'views' AND delta = '%s'", $delta))) {
      db_query("UPDATE {blocks} set cache = %d WHERE module = 'views' AND delta = '%s'", $cache_setting, $delta);
    }
  }

}

Members

Namesort descending Modifiers Type Description Overrides
views_object::$options property Except for displays, options for the object will be held here. 1
views_object::construct function Views handlers use a special construct function so that we can more easily construct them with variable arguments. 5
views_object::options function Set default options on this object. Called by the constructor in a complex chain to deal with backward compatibility. 1
views_object::set_default_options function Set default options. For backward compatibility, it sends the options array; this is a feature that will likely disappear at some point.
views_object::set_definition function Let the handler know what its full definition is.
views_object::unpack_options function Unpack options over our existing defaults, drilling down into arrays so that defaults don't get totally blown away.
views_plugin::additional_theme_functions function Provide a list of additional theme functions for the theme information page
views_plugin::theme_functions function Provide a full list of possible theme templates used by this style.
views_plugin_display::$handlers property
views_plugin_display::accept_attachments function Can this display accept attachments?
views_plugin_display::access function Determine if the user has access to this display of the view.
views_plugin_display::add_override_button function Add an override button for a given section, allowing the user to change whether this info is stored on the default display or on the current display.
views_plugin_display::attach_to function Allow displays to attach to other views. 2
views_plugin_display::defaultable_sections function Static member function to list which sections are defaultable and what items each section contains. 1
views_plugin_display::destroy function Overrides views_object::destroy
views_plugin_display::displays_exposed function Determine if this display should display the exposed filters widgets, so the view will know whether or not to render them. 1
views_plugin_display::format_themes function Format a list of theme templates for output by the theme info helper.
views_plugin_display::get_access_plugin function Get the access plugin
views_plugin_display::get_cache_plugin function Get the cache plugin
views_plugin_display::get_field_labels function Retrieve a list of fields for the current display with the relationship associated if it exists.
views_plugin_display::get_handler function Get the handler object for a single handler.
views_plugin_display::get_handlers function Get a full array of handlers for $type. This caches them.
views_plugin_display::get_link_display function Check to see which display to use when creating links within a view using this display.
views_plugin_display::get_option function Intelligently get an option either from this display or from the default display, if directed to do so.
views_plugin_display::get_path function Return the base path to use for this display.
views_plugin_display::get_plugin function Get the display or row plugin, if it exists.
views_plugin_display::get_special_blocks function Provide the block system with any exposed widget blocks for this display.
views_plugin_display::get_style_type function Displays can require a certain type of style plugin. By default, they will be 'normal'. 1
views_plugin_display::has_path function Check to see if the display has a 'path' field. 1
views_plugin_display::hook_block function If this display creates a block, implement one of these.
views_plugin_display::hook_menu function If this display creates a page with a menu item, implement it here.
views_plugin_display::init function Init will be called after construct, when the plugin is attached to a view and a display. Overrides views_plugin::init
views_plugin_display::is_defaulted function Determine if a given option is set to use the default display or the current display
views_plugin_display::is_default_display function Determine if this display is the 'default' display which contains fallback settings 1
views_plugin_display::is_identifier_unique function Check if the provided identifier is unique.
views_plugin_display::options_override function If override/revert was clicked, perform the proper toggle.
views_plugin_display::options_validate function Validate the options form. Overrides views_plugin::options_validate 1
views_plugin_display::option_link function Because forms may be split up into sections, this provides an easy URL to exactly the right section. Don't override this.
views_plugin_display::override_option function Set an option and force it to be an override.
views_plugin_display::preview function Fully render the display for the purposes of a live preview or some other AJAXy reason. 1
views_plugin_display::pre_execute function Set up any variables on the view prior to execution. These are separated from execute because they are extremely common and unlikely to be overridden on an individual display.
views_plugin_display::query function Inject anything into the query that the display handler needs. Overrides views_plugin::query
views_plugin_display::render function Render this display. 1
views_plugin_display::render_empty function Render the empty text of the view.
views_plugin_display::render_filters function Not all display plugins will support filtering
views_plugin_display::render_footer function Render the footer of the view.
views_plugin_display::render_header function Render the header of the view.
views_plugin_display::render_more_link function Render the 'more' link
views_plugin_display::render_pager function Does the display render the pager if it has it enabled? 1
views_plugin_display::render_textarea function Render a text area, using the proper format.
views_plugin_display::set_option function Intelligently set an option either from this display or from the default display, if directed to do so.
views_plugin_display::set_override function Flip the override setting for the given section.
views_plugin_display::uses_breadcrumb function Check to see if the display needs a breadcrumb 1
views_plugin_display::uses_fields function Determine if the display's style uses fields.
views_plugin_display::uses_link_display function Check to see if the display has some need to link to another display. 1
views_plugin_display::use_ajax function Does the display use AJAX?
views_plugin_display::use_more function Does the display have a more link enabled?
views_plugin_display::use_more_always function Should the enabled display more link be shown when no more items?
views_plugin_display::use_more_text function Does the display have custom link text?
views_plugin_display::use_pager function Does the display have a pager enabled? 1
views_plugin_display::validate function Make sure the display and all associated handlers are valid. Overrides views_plugin::validate 1
views_plugin_display::view_special_blocks function Render any special blocks provided for this display.
views_plugin_display::_set_option_defaults function Set default options. Overrides views_object::_set_option_defaults
views_plugin_display_block::block_caching_modes function Provide a list of core's block caching modes.
views_plugin_display_block::execute function The display block handler returns the structure necessary for a block. Overrides views_plugin_display::execute
views_plugin_display_block::execute_hook_block function The default block handler doesn't support configurable items, but extended block handlers might be able to do interesting stuff with it.
views_plugin_display_block::get_cache_type function Provide a single method to figure caching type, keeping a sensible default for when it's unset.
views_plugin_display_block::options_form function Provide the default form for setting options. Overrides views_plugin_display::options_form
views_plugin_display_block::options_submit function Perform any necessary changes to the form values prior to storage. There is no need for this function to actually store the data. Overrides views_plugin_display::options_submit
views_plugin_display_block::options_summary function Provide the summary for page options in the views UI. Overrides views_plugin_display::options_summary
views_plugin_display_block::option_definition function Information about options for all kinds of purposes will be held here. Overrides views_plugin_display::option_definition
views_plugin_display_block::save_block_cache function Save the block cache setting in the blocks table if this block allready exists in the blocks table. Dirty fix untill http://drupal.org/node/235673 gets in.
views_plugin_display_block::uses_exposed function Block views use exposed widgets only if AJAX is set. Overrides views_plugin_display::uses_exposed