MySQLTable.php 4.9 KB
<?php
namespace Tz\WordPress\Tools\MySQLTable;

use PHPExcel;

function array2table($arr, $width = "100%", $with_form = false) {
    $count = count($arr);
    if (!$count) echo '';

    reset($arr);
    $num = count(current($arr));

    if ($with_form) {
        echo <<<HTML

        <form id="report-form" action="http://cbv/wp-admin/admin.php?page=report_manager&action=run_action&report_id={$_GET['report_id']}&action_to_run=change_user_status" method="post">

            <div style="margin-bottom: 20px">

                <label for="action-list"><h4 style="margin-bottom: 5px">With Selected:</h4></label>
                <select id="action-list">
                    <option value="change_user_status">Change User Status</option>
                    <option value="change_user_role">Change User Role</option>
                    <option value="add_ce_hours">Add Continuing Education Hours</option>
                    <option value="send_notification">Send Notification</option>
                    <option value="create_invoice">Create an Invoice / Credit Note</option>
                </select>

                <input type="submit" value="Go" />

            </div>
HTML;
    }

    echo "<table border=\"0\" cellpadding=\"5\" cellspacing=\"0\" width=\"$width\"  id=\"cbv-report-list\" class=\"cbv-report-list\">\n";
    echo "<thead>\n";
    echo "<tr>\n";

    if ($with_form) {
        echo '<th style ="min-width: 30px"><input type="checkbox" checked="checked" name="selector" id="selector" /></th>';
    }

    foreach(current($arr) as $key => $value){
        echo "<th valign='bottom'>";
        echo $key."&nbsp;";
        echo "</th>\n";
    }
    echo "</tr>\n";
    echo "<tr class='filters' >\n";
    foreach(current($arr) as $key => $value){
        echo "<th valign='bottom'>";
        echo $key."&nbsp;";
        echo "</th>\n";
    }
    echo "</tr>\n";
    echo "</thead>\n";
    echo "<tbody>\n";

    $wi = 0;
    while ($curr_row = current($arr)) {
        $rclass = ($wi%2) ? "odd" : "";
        echo "<tr class='".$rclass."'>\n";
        $col = 1;

        if ($with_form) {
            echo '<td style="min-width: 30px"><input type="checkbox" checked="checked" name="records[' . $curr_row['ID'] . ']" value="1" /></td>';
        }

        while (false !== ($curr_field = current($curr_row))) {
            echo "<td>";
            echo $curr_field."&nbsp;";
            echo "</td>\n";
            next($curr_row);
            $col++;
        }

        while($col <= $num){
            echo "<td>&nbsp;</td>\n";
            $col++;
        }

        echo "</tr>\n";
        $wi++;
        next($arr);
    }

    echo "</tbody>\n";
    echo "</table>\n";

    if ($with_form) {
        echo '</form>';
    }
    echo '<style>.filters{display: none;}</style>';
}

function CSVExport($arr) {
    $out = "";
    $count = count($arr);
    if( $count > 0 ) {
        reset($arr);
        $num = count(current($arr));
        $k = 0;
        foreach(current($arr) as $key => $value){
            if ($k > 0) {
                $out .= ",";
            }
            $out .= '"'.str_replace( '"', '\"',$key).'"';
            $k++;
        }
        $out .= "\n";
        while ($curr_row = current($arr)) {
            $col = 1;
           foreach($curr_row as $curr_field) {
                if ($col > 1) {
                    $out .= ",";
                }
                $out .= '"'.str_replace( '"', '\"',$curr_field).'"';
             
                $col++;
            }
            while($col <= $num) {
                if ($col > 1) {
                    $out .= ",";
                }
                $out .= '""';
                $col++;
            }
            $out .= "\n";
            next($arr);
        }
    }
    return $out;
}

function XLSExport ($arr, PHPExcel $writer) {
    if (count($arr) < 1) {
        return false;
    }

    $sheet = $writer->getActiveSheet();
    $styleArray = Array(
        'font' => Array(
            'bold' => true
        )
    );

    // Set the headers
    $row_count = 2;
    $columns = Array();
    foreach ($arr as $data) {
        $i = $j = ord('A');
        $alphabet_count = 0;
        $prefix = '';

        foreach ($data as $key => $value) {
            // Check if we're at the character past 'Z'
            if ($i == 91) {
                $i = ord('A') + $alphabet_count;
            }

            if ($j == 91) {
                $j = ord('A');
                $prefix = chr($i++);
            }

            // Set headers
            $cell = $prefix . chr($j++);
            $sheet->setCellValue($cell . '1', $key);
            $sheet->getStyle($cell . '1')->applyFromArray($styleArray);

            // Put in data
            $sheet->setCellValue($cell . $row_count, $value);

            $columns[] = $cell;
            $alphabet_count++;
        }
        $row_count++;
    }

    // Set column dimensions
    foreach ($columns as $column) {
        $sheet->getColumnDimension($column)->setAutoSize(true);
    }
}