Changes to how Views 3 enforces option_definition() requires an update to the module, else clone and export fail.

class mapstraction_style_map extends views_plugin_style {
  function option_definition() {
    $options['api'] = array();
    $options['width'] = array('default' => 'auto');
    $options['height'] = array('default' => '400px');

    $options['initial_point']['contains'] = array(
      'auto' => array('default' => TRUE),
      'latitude' => array('default' => ''),
      'longitude' => array('default' => ''),
      'zoom' => array('default' => 10),
    );
    $options['controls'] = array('default' => array());
    $options['behaviours'] = array('default' => array());
    $options['zoon_control'] = array('default' => array());
    $options['default_maptype'] = array('default' => array());
    $options['fields'] = array('default' => array());
    
    return $options;
  }

See #792184: Invalid argument supplied for foreach() ===> views_plugin_display.inc on line 679. for background. Apparently, this was always preferred by Views 2, but not strictly enforced.

Comments

agentrickard’s picture

Missed one:

class mapstraction_style_map extends views_plugin_style {
  function option_definition() {
    $options['api'] = array('default' => array());
    $options['width'] = array('default' => 'auto');
    $options['height'] = array('default' => '400px');

    $options['initial_point']['contains'] = array(
      'auto' => array('default' => TRUE),
      'latitude' => array('default' => ''),
      'longitude' => array('default' => ''),
      'zoom' => array('default' => 10),
    );
    $options['controls'] = array('default' => array());
    $options['behaviours'] = array('default' => array());
    $options['zoon_control'] = array('default' => array());
    $options['default_maptype'] = array('default' => array());
    $options['fields'] = array('default' => array());
   
    return $options;
  }
dawehner’s picture

Just to clarify. Its not an api change, this api existed since beta5 of views2 or something like this.
Views is just more strict on views3 about this.

This module implemented the api wrong.

agentrickard’s picture

Category: task » bug
Priority: Normal » Critical

Correct. And a fixed definition for fields.

class mapstraction_style_map extends views_plugin_style {
  function option_definition() {
    $options['api'] = array('default' => array());
    $options['width'] = array('default' => 'auto');
    $options['height'] = array('default' => '400px');

    $options['initial_point']['contains'] = array(
      'auto' => array('default' => TRUE),
      'latitude' => array('default' => ''),
      'longitude' => array('default' => ''),
      'zoom' => array('default' => 10),
    );
    $options['controls'] = array('default' => array());
    $options['behaviours'] = array('default' => array()); // This should be non-British English BTW.
    $options['zoom_control'] = array('default' => array()); // Was 'zoon'
    $options['default_maptype'] = array('default' => array());
    $options['fields']['contains'] = array(
      'title' => array('default' => ''),
      'latitude' => array('default' => ''),
      'longitude' => array('default' => ''),
      'class' => array('default' => ''),
    );
  
    return $options;
  }
levelos’s picture

Status: Needs review » Fixed

Thanks for the updates, applied.

Status: Fixed » Closed (fixed)

Automatically closed -- issue fixed for 2 weeks with no activity.