<?
/**
 * @version    5.0.0
 * @category   Goweb
 * @package    Goweb_Excel
 * @copyright  Copyright (c) 2009 Goweb (http://www.goweb.pt)
 * @author     I&D <dev@goweb.pt>, Pedro Pinto <ppinto@goweb.pt>
*/

/**
 * Goweb_Excel_Maker
 *
 * @version    5.0.0
 * @category   Goweb
 * @package    Goweb_Excel
 * @copyright  Copyright (c) 2009 Goweb (http://www.goweb.pt)
 * @author     I&D <dev@goweb.pt>, Pedro Pinto <ppinto@goweb.pt>
*/
class  Goweb_Excel_Maker {

    /** @var string $_dataStore */
    protected $_dataStore; // antiga $armazena_dados;

    /** @var string $_fileName */
    protected $_fileName;  // antiga $nomeDoArquivoXls;

    /**
     * Construtor da Classe Goweb_Excel_Maker
     *
     * Este metodo inicializa as propriedades $_dataStore e _fileName e chama o metodo
     * excelStart(), que monta o cabecalho do ficheiro excel que sere gerado.
     *
     * @return void
    */
    public function  __construct() {
        $this->_dataStore = "";
        $this->_fileName  = "";
    }

    /**
     * Este metodo monta o conteudo do ficheiro CSV e guarda estes valores
     * ao concatenar os dados e propriedade $_dataStore.
     *
     * @param   string  $excelLine
     * @param   string  $excelCol
     * @param   string  $value
     *
     * @return void
    */
    public function buildContent($value) {
        $length            = strlen( $value );
        $this->_dataStore .= $value;
    }

    /**
     * Este metodo faz um print do conteudo da propriedade $_dataStore.
     *
     * @return void
    */
    public function getFile() {
        $ctype = 'application/force-download';
        if (strstr($_SERVER['HTTP_USER_AGENT'], "MSIE")){
            header('Content-Type: "'.$ctype.'"');
            header('Content-Disposition: attachment; filename="' . $this->_fileName . '.csv' . '"');
            header('Expires: 0');
            header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
            header("Content-Transfer-Encoding: binary");
            header('Pragma: public');
        } else {
            header('Content-Type: "'.$ctype.'"');
            header('Content-Disposition: attachment; filename="' . $this->_fileName . '.csv' . '"');
            header("Content-Transfer-Encoding: binary");
            header('Expires: 0');
            header('Pragma: no-cache');
        }
        echo $this->_dataStore;
    }

}