You are here

brilliant_gallery_formatters.inc in Brilliant Gallery 7.2

Same filename and directory in other branches
  1. 7 brilliant_gallery_formatters.inc

File

brilliant_gallery_formatters.inc
View source
<?php

/**
 * Implements hook_field_formatter_info().
 *
 */
function brilliant_gallery_field_formatter_info() {
  return array(
    'brilliant_gallery_render' => array(
      'label' => t('Brilliant Gallery from a local folder'),
      'field types' => array(
        'text',
      ),
    ),
    'brilliant_gallery_single' => array(
      'label' => t('A random image from a local Brilliant Gallery folder'),
      'field types' => array(
        'text',
      ),
    ),
  );
}

/**
 * Implements hook_field_formatter_view().
 *
 */
function brilliant_gallery_field_formatter_view($entity_type, $entity, $field, $instance, $langcode, $items, $display) {
  $element = array();
  switch ($display['type']) {
    case 'brilliant_gallery_render':
      foreach ($items as $delta => $item) {
        $pathurl = trim($item['value']);
        if ($pathurl != '') {
          $result = '';
          $result .= views_embed_view('brilliant_gallery_default_view', 'page', $pathurl);
          $element[$delta] = array(
            '#markup' => $result,
          );
        }
      }
      break;
    case 'brilliant_gallery_single':
      foreach ($items as $delta => $item) {
        $pathurl = trim($item['value']);
        if ($pathurl != '') {
          $result = '';
          $args = array(
            $pathurl,
          );
          $view = views_get_view('brilliant_gallery_default_view') or die('No such view!');
          $view
            ->set_display('page');
          $view
            ->set_arguments($args);
          $view->is_cacheable = FALSE;
          $pager['type'] = 'some';

          // Cannot be "none" - then it would be impossible to limit the number of results. See eg https://www.drupal.org/node/711114#comment-5015536
          $pager['options'] = array();

          // Necessary, see eg https://www.drupal.org/node/1939424
          $view->display_handler
            ->set_option('pager', $pager);

          //$view->set_offset(0); // Needs to be present when setting pager.
          $view
            ->set_items_per_page(1);
          $sorts['random']['id'] = 'random';
          $sorts['random']['table'] = 'views';
          $sorts['random']['field'] = 'random';
          $view->display_handler
            ->set_option('sorts', $sorts);
          $view
            ->execute();
          $result .= $view
            ->preview();
          $element[$delta] = array(
            '#markup' => $result,
          );
        }
      }
      break;
  }
  return $element;
}