You are here

function addtocalendar_preprocess_setting_fields in Add To Calendar Button (AddEvent.com) 7.2

Process setting form fields.

Parameters

string $entity_type: Contains Entity type.

object $entity: Contains entity array.

array $settings: Conatains settings array.

array $formatter_settings: Contains formatter settings.

Return value

mixed Returns build form array.

2 calls to addtocalendar_preprocess_setting_fields()
addtocalendar_field_formatter_view in ./addtocalendar.module
Implements hook_field_formatter_view().
addtocalendar_preprocess_field in ./addtocalendar.module
Implements hook_preprocess_field().

File

includes/addtocalendar.inc, line 167
Includes settings form and addtocalendar build processor.

Code

function addtocalendar_preprocess_setting_fields($entity_type, $entity, array $settings, array $formatter_settings) {
  $build['addtocalendar'] = array();
  if ($formatter_settings['addtocalendar_show']) {
    $timezone = variable_get('date_default_timezone', '');
    $build['addtocalendar_button_text'] = array(
      '#type' => 'html_tag',
      '#tag' => 'a',
      '#value' => $settings['display_text'],
      '#attributes' => array(
        'class' => 'atcb-link',
      ),
    );
    $info = array(
      'atc_title',
      'atc_description',
      'atc_location',
      'atc_organizer',
      'atc_date_start',
      'atc_date_end',
    );

    // Process fields.
    foreach ($info as $value) {
      $class_value = $value;
      if ($settings[$value]['field'] == 'token') {
        $class_value = $settings[$value]['tokenized'];
      }
      elseif ($settings[$value]['field'] == 'title') {
        $class_value = entity_label($entity_type, $entity);
      }
      elseif (isset($entity->{$settings[$value]['field']})) {
        $class_value = isset($entity->{$settings[$value]['field']}[LANGUAGE_NONE][0]['value']) ? $entity->{$settings[$value]['field']}[LANGUAGE_NONE][0]['value'] : '';
      }
      if ($value == 'atc_date_start' || $value == 'atc_date_end') {
        $field_info = field_info_field($settings[$value]['field']);
        $class_value = _addtocalendar_convert_to_local_time($settings[$value]['tokenized'], $timezone);
        if (!empty($field_info) && $field_info['type'] == 'datetime') {
          if (isset($entity->{$settings[$value]['field']}[LANGUAGE_NONE][0]['value2'])) {
            if ($value == 'atc_date_end') {
              $class_value = _addtocalendar_convert_to_local_time($entity->{$settings[$value]['field']}[LANGUAGE_NONE][0]['value2'], $timezone);
            }
            else {
              $class_value = _addtocalendar_convert_to_local_time($entity->{$settings[$value]['field']}[LANGUAGE_NONE][0]['value'], $timezone);
            }
          }
          else {
            $class_value = _addtocalendar_convert_to_local_time($entity->{$settings[$value]['field']}[LANGUAGE_NONE][0]['value'], $timezone);
          }
        }
      }
      $build['addtocalendar'][$value] = array(
        '#type' => 'html_tag',
        '#tag' => 'var',
        '#value' => $class_value,
        '#attributes' => array(
          'class' => $value,
        ),
      );
    }
    $build['addtocalendar']['atc_organizer_email'] = array(
      '#type' => 'html_tag',
      '#tag' => 'var',
      '#value' => variable_get('site_mail', ''),
      '#attributes' => array(
        'class' => 'atc_organizer_email',
      ),
    );
    $build['addtocalendar']['atc_timezone'] = array(
      '#type' => 'html_tag',
      '#tag' => 'var',
      '#value' => $timezone,
      '#attributes' => array(
        'class' => 'atc_timezone',
      ),
    );
    $build['addtocalendar']['atc_privacy'] = array(
      '#type' => 'html_tag',
      '#tag' => 'var',
      '#value' => $settings['atc_privacy'],
      '#attributes' => array(
        'class' => 'atc_privacy',
      ),
    );
    $build['addtocalendar'] = array(
      '#type' => 'html_tag',
      '#tag' => 'span',
      '#value' => render($build['addtocalendar_button_text']) . '<var class="atc_event">' . render($build['addtocalendar']) . '</var>',
      '#attributes' => array(
        'class' => array(
          'addtocalendar',
        ),
      ),
    );
    if ($settings['data_calendars']) {
      $value = '';
      foreach ($settings['data_calendars'] as $key => $set) {
        if ($set) {
          $value .= $key . ', ';
        }
      }
      if ($value) {
        $build['addtocalendar']['#attributes']['data-calendars'] = $value;
      }
    }
    $build['addtocalendar']['#attributes']['data-secure'] = $settings['data_secure'];

    // Styling.
    switch ($settings['style']) {
      case 'blue':
        $style['class'] = 'atc-style-blue';
        $build['addtocalendar']['#attached'] = array(
          'css' => array(
            '//addtocalendar.com/atc/1.5/atc-style-blue.css' => array(
              'type' => 'external',
            ),
          ),
        );
        break;
      case 'glow_orange':
        $style['class'] = 'atc-style-glow-orange';
        $build['addtocalendar']['#attached'] = array(
          'css' => array(
            '//addtocalendar.com/atc/1.5/atc-style-glow-orange.css' => array(
              'type' => 'external',
            ),
          ),
        );
        break;
      default:
        $build['addtocalendar']['#attached'] = array(
          'css' => array(
            '//addtocalendar.com/atc/1.5/atc-base.css' => array(
              'type' => 'external',
            ),
          ),
        );
        break;
    }
    $build['addtocalendar']['#attached']['js'] = array(
      'https://addtocalendar.com/atc/1.5/atc.min.js' => array(
        'external',
      ),
    );
    if (!empty($style)) {
      $build['addtocalendar']['#attributes']['class'][] = $style['class'];
    }
  }
  else {
    $disable_text = isset($settings['disable_text']) ? $settings['disable_text'] : '';
    $build['addtocalendar'] = array(
      '#prefix' => '<div class="wrapper">',
      '#suffix' => '<div>' . $disable_text . '</div></div>',
    );
  }
  return $build;
}