You are here

function template_preprocess_views_views_json_style_autocomplete in Views Datasource 7

File

views/theme/views_views_json_style.theme.inc, line 282
Views theme to render view fields as JSON.

Code

function template_preprocess_views_views_json_style_autocomplete(&$vars) {

  // Use simple theme suggestion.
  $vars['theme_hook_suggestion'] = 'views_views_json_style_simple';
  $view = $vars["view"];
  $rows = $vars["rows"];
  $options = $vars["options"];
  $plaintext_output = $options["plaintext_output"];

  // Create bitmask for json_encode.
  $option_defs = $vars['view']->style_plugin
    ->option_definition();
  $bitmasks = $option_defs['encoding']['contains'];
  $bitmask = NULL;
  foreach ($bitmasks as $mask_key => $_bitmask) {
    $mask_options =& $options[$mask_key];
    if (isset($mask_options) && $mask_options && !is_array($mask_options)) {
      $bitmask = $bitmask | constant($_bitmask['bitmask']);
    }
  }
  $vars['bitmask'] = $bitmask;
  $autocomplete = array();
  foreach ($rows as $row) {

    // First field is the key and second is the value.
    $k = 0;
    foreach ($row as $field) {
      if ($options["field_output"] == "normal") {
        if (!$field->is_multiple) {
          if ($plaintext_output) {
            $decoded_content = html_entity_decode($field->content, ENT_QUOTES);
            $content = strip_tags($decoded_content);
          }
          else {
            $content = $field->content;
          }
          if (!mb_check_encoding($content, 'UTF-8')) {
            $content = utf8_encode($content);
          }
        }
        else {
          $content = array();
          foreach ($field->content as $n => $oc) {
            if ($plaintext_output) {
              $content[$n] = strip_tags($oc);
            }
            else {
              $content[$n] = $oc;
            }
          }
        }
      }
      elseif ($options["field_output"] == "raw") {
        if (!$field->is_multiple) {
          $content = $plaintext_output ? strip_tags($field->raw) : $field->raw;
        }
        else {
          $content = array();
          foreach ($field->raw as $n => $oc) {
            $content[$n] = $plaintext_output ? strip_tags($oc) : $oc;
          }
        }
      }

      // First field is the key.
      if ($k++ == 0) {
        $label = $content;
      }
      else {

        // Second field is value, so now we can stop.
        break;
      }
    }
    $autocomplete[$label] = $content;
  }
  $vars["rows"] = $autocomplete;
}