Exemple #1
0
 /**
  * ExportStats
  * For a given Split Test Campaign save the data to a file on the filesystem.
  *
  * @param Array $stats Split Test Campaign send statistic for a single campaign send as derived from this GetStats API method.
  *
  * @return String $exportFileName The name of the file written to disk.
  */
 private static function ExportStats($stats, $jobids, $splitName = null)
 {
     $dateFormat = self::getDateFormat();
     // if no split campaign name has been passed use the name of the first one we find
     $filename = $splitName == null ? $stats[$jobids[0]]['splitname'] : $splitName;
     $dateStr = date('Y-m-d_His');
     $temp = str_replace(" ", "_", strtolower($filename));
     $filenameSafe = '';
     for ($i = 0; $i < strlen($temp); $i++) {
         if (preg_match('([0-9]|[a-z]|_)', $temp[$i])) {
             $filenameSafe = $filenameSafe . $temp[$i];
         }
     }
     $exportFileName = $filenameSafe . '__' . $dateStr . '.csv';
     $path = TEMP_DIRECTORY . '/';
     $headers = implode(',', array('Newsletter Name', 'Split Test Name', 'Split Type', 'Start Sending', 'Finished Sending', 'Recipients', 'Total Opened', 'Unique Opened', '% Opened', 'Recipients who Clicked Links', '% Recipients who Clicked', 'Hard Bounced', 'Soft Bounced', 'Total Bounced', '% Bounced', 'Unsubscribed', '% Unsubscribed'));
     $file = $path . $exportFileName;
     // we shouldn't be overwriting anything becuase there is a timestamp in the filename - but just in case so as we don't create a fatal error
     if (file_exists($file)) {
         unlink($file);
     }
     $f = fopen($file, 'w');
     fwrite($f, $headers);
     fwrite($f, "\n");
     while (list($job_id, $statistics) = each($stats)) {
         if (in_array($job_id, $jobids)) {
             while (list($id, $data) = each($statistics['campaigns'])) {
                 fwrite($f, $data['campaign_name'] . ',');
                 fwrite($f, $statistics['splitname'] . ',');
                 fwrite($f, $statistics['splittype'] . ',');
                 fwrite($f, SendStudio_Functions::PrintDate($statistics['starttime'], $dateFormat) . ',');
                 fwrite($f, SendStudio_Functions::PrintDate($statistics['finishtime'], $dateFormat) . ',');
                 fwrite($f, $data['stats_newsletters']['recipients'] . ',');
                 fwrite($f, $data['stats_newsletters']['emailopens'] . ',');
                 fwrite($f, $data['stats_newsletters']['emailopens_unique'] . ',');
                 fwrite($f, $data['stats_newsletters']['percent_emailopens_unique'] . ',');
                 fwrite($f, $data['stats_newsletters']['linkclicks_unique'] . ',');
                 fwrite($f, $data['stats_newsletters']['percent_linkclicks_unique'] . ',');
                 fwrite($f, $data['stats_newsletters']['bouncecount_hard'] . ',');
                 fwrite($f, $data['stats_newsletters']['bouncecount_soft'] . ',');
                 fwrite($f, $data['stats_newsletters']['bouncecount_total'] . ',');
                 fwrite($f, $data['stats_newsletters']['percent_bouncecount_total'] . ',');
                 fwrite($f, $data['stats_newsletters']['unsubscribecount'] . ',');
                 fwrite($f, $data['stats_newsletters']['percent_unsubscribecount']);
                 fwrite($f, "\n");
             }
         }
     }
     fclose($f);
     return $exportFileName;
 }