You are here

function styles_default_presets in Styles 7.2

Same name and namespace in other branches
  1. 6.2 styles.module \styles_default_presets()

Return all available presets for field type containers.

Each container under a field type should be an associative array with the following keys: 'default preset' => The preset to select by default, which may be overridden later. 'presets' => An associative array keyed by the preset name, each with an array of effects to be passed to the implementing class on display.

Example implementation of hook_styles_default_presets(): array( 'filefield' => array( 'containers' => array( 'imagefield' => array( 'default preset' => 'imagecache_thumbnail_linked', 'presets' => array( 'imagecache_thumbnail_linked' => array( 'title' => '[node-title]', 'alt' => '[file-description]', 'imagecache_preset' => 'thumbnail', 'link' => '[node-path]', ), 'link_to_file' => array( 'title' => '[file-title-raw]', 'link' => '[file-path]', ), ), ), ), );

Parameters

string $field_type: (Optional) The field type, such as filefield or nodereference.

boolean $reset: (Optional) If TRUE, then we reset the cache.

4 calls to styles_default_presets()
styles_instance in ./styles.module
styles_style_features_export_render in includes/styles.features.inc
Implements hook_features_export_render().
styles_ui_style_edit_form in contrib/styles_ui/styles_ui.admin.inc
Callback for the style edit form.
styles_ui_style_edit_form_submit in contrib/styles_ui/styles_ui.admin.inc
Submission handler for the add style form.
1 string reference to 'styles_default_presets'
styles_style_flush in ./styles.module
Flush cached defaults for a style.

File

./styles.module, line 288
Bundles similar display formatters together.

Code

function styles_default_presets($return_type = NULL, $reset = FALSE) {
  $styles =& drupal_static(__FUNCTION__);

  // Grab from cache or build the array.
  if (!isset($styles) || $reset) {
    if (($cache = cache_get('styles_default_presets', 'cache_styles')) && !$reset) {
      $styles = $cache->data;
    }
    else {
      $styles = array();
      styles_module_load_all_includes();
      foreach (module_implements('styles_default_presets') as $module) {
        $module_styles = module_invoke($module, 'styles_default_presets');
        foreach ($module_styles as $field_type => $container) {
          $all_styles = styles_default_styles($field_type);
          $styles[$field_type] = isset($styles[$field_type]) ? $styles[$field_type] : array();
          $containers = isset($styles[$field_type]['containers']) ? $styles[$field_type]['containers'] : array();
          $styles[$field_type] = array_merge($styles[$field_type], $container);
          $styles[$field_type]['containers'] = isset($styles[$field_type]['containers']) ? $styles[$field_type]['containers'] : array();
          $styles[$field_type]['containers'] = array_merge($containers, $styles[$field_type]['containers']);
          foreach ($container['containers'] as $style_name => $style) {
            $style['name'] = $style_name;
            $style['module'] = $module;
            $style['storage'] = STYLES_STORAGE_DEFAULT;
            $style['styles'] = isset($style['styles']) ? $style['styles'] : array();
            $default_preset = isset($style['default preset']) ? $style['default preset'] : '';
            foreach ($all_styles['styles'] as $container_style_name => $container_style) {
              if (!isset($style['styles'][$container_style_name])) {
                $style['styles'][$container_style_name] = array(
                  'default preset' => $default_preset,
                );
              }
            }
            $styles[$field_type]['containers'][$style_name] = $style;
          }
        }
      }

      // Add user-defined and overridden presets.
      $query = db_select('styles_preset_instances', 'spi');
      $query
        ->join('styles', 's', 's.sid = spi.sid');
      $query
        ->join('styles_presets', 'p', 'p.pid = spi.pid');
      $query
        ->addField('spi', 'sid');
      $query
        ->addField('spi', 'pid');
      $query
        ->addField('s', 'name', 'style_name');
      $query
        ->addField('p', 'name', 'preset_name');
      $query
        ->addField('p', 'field_type', 'field_type');
      $query
        ->addField('p', 'container_name', 'container_name');
      $user_styles = $query
        ->execute();
      foreach ($user_styles as $style) {
        if (isset($styles[$style->field_type]) && isset($styles[$style->field_type]['containers'][$style->container_name]) && isset($styles[$style->field_type]['containers'][$style->container_name]['presets'][$style->preset_name]) && isset($styles[$style->field_type]['containers'][$style->container_name]['styles'][$style->style_name])) {
          $styles[$style->field_type]['containers'][$style->container_name]['styles'][$style->style_name]['preset'] = $style->preset_name;
        }
      }
      drupal_alter('styles_default_presets', $styles);
      cache_set('styles_default_presets', $styles, 'cache_styles');
    }
  }
  if (isset($return_type)) {
    return $styles[$return_type];
  }
  return $styles;
}