public static function loadCsv($mData, $sFilename = '', $bHeaderRow = true)
    {
        //  Determine what type of data has been supplied
        if (is_array($mData) || get_class($mData) == 'CI_DB_mysqli_result') {

            //  If filename has been specified then set some additional headers
            if (!empty($sFilename)) {

                $oInput  = Factory::service('Input');
                $oOutput = Factory::service('Output');

                //  Common headers
                $oOutput->set_content_type('text/csv');
                $oOutput->set_header('Content-Disposition: attachment; filename="' . $sFilename . '"');
                $oOutput->set_header('Expires: 0');
                $oOutput->set_header("Content-Transfer-Encoding: binary");

                //  Handle IE, classic.
                $userAgent = $oInput->server('HTTP_USER_AGENT');

                if (strpos($userAgent, "MSIE") !== false) {

                    $oOutput->set_header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
                    $oOutput->set_header('Pragma: public');

                } else {

                    $oOutput->set_header('Pragma: no-cache');
                }
            }

            //  Not using self::loadInlineView() as this may be called from many contexts
            $oView = Factory::service('View');
            if (is_array($mData)) {
                $oView->load('admin/_components/csv/array', ['data' => $mData, 'header' => $bHeaderRow]);
            } elseif (get_class($mData) == 'CI_DB_mysqli_result') {
                $oView->load('admin/_components/csv/dbResult', ['data' => $mData, 'header' => $bHeaderRow]);
            }

        } else {
            throw new NailsException('Unsupported object type passed to ' . get_class() . '::loadCSV');
        }
    }
public static function loadCsv($mData, $sFilename = '', $bHeaderRow = true)
    {
        //  Determine what type of data has been supplied
        if (is_array($mData) || get_class($mData) == 'CI_DB_mysqli_result') {

            //  If filename has been specified then set some additional headers
            if (!empty($sFilename)) {

                $oInput  = Factory::service('Input');
                $oOutput = Factory::service('Output');

                //  Common headers
                $oOutput->set_content_type('text/csv');
                $oOutput->set_header('Content-Disposition: attachment; filename="' . $sFilename . '"');
                $oOutput->set_header('Expires: 0');
                $oOutput->set_header("Content-Transfer-Encoding: binary");

                //  Handle IE, classic.
                $userAgent = $oInput->server('HTTP_USER_AGENT');

                if (strpos($userAgent, "MSIE") !== false) {

                    $oOutput->set_header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
                    $oOutput->set_header('Pragma: public');

                } else {

                    $oOutput->set_header('Pragma: no-cache');
                }
            }

            //  Not using self::loadInlineView() as this may be called from many contexts
            $oView = Factory::service('View');
            if (is_array($mData)) {
                $oView->load('admin/_components/csv/array', ['data' => $mData, 'header' => $bHeaderRow]);
            } elseif (get_class($mData) == 'CI_DB_mysqli_result') {
                $oView->load('admin/_components/csv/dbResult', ['data' => $mData, 'header' => $bHeaderRow]);
            }

        } else {
            throw new NailsException('Unsupported object type passed to ' . get_class() . '::loadCSV');
        }
    }
public static function loadCsv ( $ mData , $ sFilename = '' , $ bHeaderRow = true ) { //  Determine what type of data has been supplied if ( is_array ( $ mData ) || get_class ( $ mData ) == 'CI_DB_mysqli_result' ) { //  If filename has been specified then set some additional headers if ( ! empty ( $ sFilename ) ) { $ oInput = Factory :: service ( 'Input' ) ; $ oOutput = Factory :: service ( 'Output' ) ; //  Common headers $ oOutput -> set_content_type ( 'text/csv' ) ; $ oOutput -> set_header ( 'Content-Disposition: attachment; filename="' . $ sFilename . '"' ) ; $ oOutput -> set_header ( 'Expires: 0' ) ; $ oOutput -> set_header ( "Content-Transfer-Encoding: binary" ) ; //  Handle IE, classic. $ userAgent = $ oInput -> server ( 'HTTP_USER_AGENT' ) ; if ( strpos ( $ userAgent , "MSIE" ) !== false ) { $ oOutput -> set_header ( 'Cache-Control: must-revalidate, post-check=0, pre-check=0' ) ; $ oOutput -> set_header ( 'Pragma: public' ) ; } else { $ oOutput -> set_header ( 'Pragma: no-cache' ) ; } } //  Not using self::loadInlineView() as this may be called from many contexts $ oView = Factory :: service ( 'View' ) ; if ( is_array ( $ mData ) ) { $ oView -> load ( 'admin/_components/csv/array' , [ 'data' => $ mData , 'header' => $ bHeaderRow ] ) ; } elseif ( get_class ( $ mData ) == 'CI_DB_mysqli_result' ) { $ oView -> load ( 'admin/_components/csv/dbResult' , [ 'data' => $ mData , 'header' => $ bHeaderRow ] ) ; } } else { throw new NailsException ( 'Unsupported object type passed to ' . get_class ( ) . '::loadCSV' ) ; } }
Generates a CSV and sends to the browser, if a filename is given then it's
sent as a download

@param  mixed   $mData      The data to render, either an array or a DB query object
@param  string  $sFilename  The filename to give the file if downloading
@param  boolean $bHeaderRow The first element in the $mData resultset is a header row

@return void
@throws \Nails\Common\Exception\FactoryException
Generates a CSV and sends to the browser if a filename is given then it s sent as a download