Example #1
0
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;
        }
    }
}
Example #2
0
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;