function wp_statistics_export_data() { global $WP_Statistics, $wpdb; // this is how you get access to the database $manage_cap = wp_statistics_validate_capability($WP_Statistics->get_option('manage_capability', 'manage_options')); if (current_user_can($manage_cap)) { $table = $_POST['table-to-export']; $type = $_POST['export-file-type']; $headers = $_POST['export-headers']; // Validate the table name the user passed to us. if (!($table == "useronline" || $table == "visit" || $table == "visitor" || $table == "exclusions" || $table == "pages")) { $table = FALSE; } // Validate the file type the user passed to us. if (!($type == "excel" || $type == "xml" || $type == "csv" || $type == "tsv")) { $table = FALSE; } if ($table && $type) { require $WP_Statistics->plugin_dir . '/includes/classes/php-export-data.class.php'; $file_name = WPS_EXPORT_FILE_NAME . '-' . $WP_Statistics->Current_Date('Y-m-d-H-i'); switch ($type) { case 'excel': $exporter = new ExportDataExcel('browser', "{$file_name}.xls"); break; case 'xml': $exporter = new ExportDataExcel('browser', "{$file_name}.xml"); break; case 'csv': $exporter = new ExportDataCSV('browser', "{$file_name}.csv"); break; case 'tsv': $exporter = new ExportDataTSV('browser', "{$file_name}.tsv"); break; } $exporter->initialize(); // We need to limit the number of results we retrieve to ensure we don't run out of memory $query_base = "SELECT * FROM {$wpdb->prefix}statistics_{$table}"; $query = $query_base . ' LIMIT 0,1000'; $i = 1; $more_results = true; $result = $wpdb->get_results($query, ARRAY_A); if ($headers) { foreach ($result[0] as $key => $col) { $columns[] = $key; } $exporter->addRow($columns); } while ($more_results) { foreach ($result as $row) { $exporter->addRow($row); // Make sure we've flushed the output buffer so we don't run out of memory on large exports. ob_flush(); flush(); } unset($result); $wpdb->flush(); $query = $query_base . ' LIMIT ' . $i * 1000 . ',1000'; $result = $wpdb->get_results($query, ARRAY_A); if (count($result) == 0) { $more_results = false; } $i++; } $exporter->finalize(); exit; } } }
if ($type) { global $wpdb, $table_prefix; require 'includes/classes/php-export-data.class.php'; $file_name = date('Y-m-d_H-i'); $result = $wpdb->get_results("SELECT `ID`,`date`,`name`,`mobile`,`status`,`group_ID` FROM {$table_prefix}sms_subscribes"); switch ($type) { case 'excel': $exporter = new ExportDataExcel('browser', "{$file_name}.xls"); break; case 'xml': $exporter = new ExportDataExcel('browser', "{$file_name}.xml"); break; case 'csv': $exporter = new ExportDataCSV('browser', "{$file_name}.csv"); break; case 'tsv': $exporter = new ExportDataTSV('browser', "{$file_name}.tsv"); break; } $exporter->initialize(); foreach ($result[0] as $key => $col) { $columns[] = $key; } $exporter->addRow($columns); foreach ($result as $row) { $exporter->addRow($row); } $exporter->finalize(); } else { wp_die(__('Please select the desired items.', 'wp-sms'), false, array('back_link' => true)); }
<?php // Shows how exporting to string works. // This isn't a good way to export very large datasets, since all the exported data must be kept in memory require "../php-export-data.class.php"; $tsv = new ExportDataTSV('string'); $tsv->filename = "test.xls"; $data = array(array(1, 2, 3), array("asdf", "jkl", "semi"), array("1273623874628374634876", "=asdf", "10-10")); $tsv->initialize(); foreach ($data as $row) { $tsv->addRow($row); } $tsv->finalize(); $exportedData = $tsv->getString(); print $exportedData;