rsvp_attendees_csv

Definition

rsvp_attendees_csv($rid)
rsvp/rsvp.module, line 686

Description

Callback to display an attendee list as CSV file

  • Copied from CiviCRM (which was copied from phpMyAdmin) so it should be robust

Code

<?php
function rsvp_attendees_csv($rid) {
  //fields to export
  $field_list = array( 'response', 'email', 'invited', 'received' );

  $rsvp = rsvp_load($rid);
  $attendees = _rsvp_get_attendees($rid);
  $attendee = db_fetch_object($attendees);
  $header = array();
  $content = '';

  //get header row
  foreach ($attendee as $key => $value) {
    if (in_array( $key, $field_list ))
      $header[]  = $key;
  }

  $filename = str_replace(' ', '_', $rsvp->name) .'_'. date("Y-m-d") .'.csv';

  $now       = gmdate('D, d M Y H:i:s') .' GMT';
  $mime_type = 'text/x-csv';
  $ext       = 'csv';

  // send the write header statements to the browser
  header('Content-Type: '. $mime_type);
  header('Expires: '. $now);

  // lem9 & loic1: IE need specific headers
  $is_ie = strstr( $_SERVER['HTTP_USER_AGENT'], 'MSIE' );
  if ($is_ie) {
    header('Content-Disposition: inline; filename="'. $filename .'"');
    header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
    header('Pragma: public');
  }
  else {
    header('Content-Disposition: attachment; filename="'. $filename .'"');
    header('Pragma: no-cache');
  }

  $result = '';

  $seperator     = ',';
  $enclosed      = '"';
  $escaped       = $enclosed;
  $add_character = "\015\012";
  $print = true;
  $schema_insert = '';
  foreach ( $header as $field ) {
    if ($enclosed == '') {
        $schema_insert .= stripslashes($field);
    }
    else {
        $schema_insert .=
              $enclosed
            . str_replace($enclosed, $escaped . $enclosed, stripslashes($field))
            . $enclosed;
    }
    $schema_insert     .= $seperator;
  } // end while

  // need to add PMA_exportOutputHandler functionality out here, rather than
  // doing it the moronic way of assembling a buffer
  $out = trim(substr($schema_insert, 0, -1)) . $add_character;
  if ($print) {
    echo $out;
  }
  else {
    $result .= $out;
  }

  $i = 0;
  $fields_cnt = count($header);

  $attendees = _rsvp_get_attendees($rid);

  while ($row = db_fetch_object($attendees)) {
      $schema_insert = '';
      foreach ( $row as $j => $value ) {
        if (in_array($j, $field_list)) {
          if (!isset($value) || is_null($value)) {
            $schema_insert .= '';
          }
          else if ($value == '0' || $value != '') {
            // loic1 : always enclose fields
            $value = ereg_replace("\015(\012)?", "\012", $value);
            if ($enclosed == '') {
              $schema_insert .= $value;
            }
            else {
              $schema_insert .=
                    $enclosed
                  . str_replace($enclosed, $escaped . $enclosed, $value)
                  . $enclosed;
            }
          }
          else {
            $schema_insert .= '';
          }

          if ($j < $fields_cnt-1) {
            $schema_insert .= $seperator;
          }
        } //end in field_list
      } // end foreach

      $out = $schema_insert . $add_character;
      if ($print) {
        echo $out;
      }
      else {
        $result .= $out;
      }
      ++$i;

  } // end for
}
?>