PHP Classes

File: Grid/Deploy/Word.php

Recommend this page to a friend!
  Classes of Filipe Sá   Zend Framework Data Grid   Grid/Deploy/Word.php   Download  
File: Grid/Deploy/Word.php
Role: Class source
Content type: text/plain
Description: Class source
Class: Zend Framework Data Grid
Display and edit data from a database in a grid
Author: By
Last change:
Date: 12 years ago
Size: 5,342 bytes
 

Contents

Class file image Download
<?php

/**
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license
 * It is available through the world-wide-web at this URL:
 * http://www.petala-azul.com/bsd.txt
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to geral@petala-azul.com so we can send you a copy immediately.
 *
 * @package Bvb_Grid
 * @copyright Copyright (c) (http://www.petala-azul.com)
 * @license http://www.petala-azul.com/bsd.txt New BSD License
 * @version $Id$
 * @author Bento Vilas Boas <geral@petala-azul.com >
 */
class Bvb_Grid_Deploy_Word extends Bvb_Grid implements Bvb_Grid_Deploy_DeployInterface
{
    public function
__construct (array $options = array())
    {
       
$this->_setRemoveHiddenFields(true);
       
parent::__construct($options);

       
$this->addTemplateDir('Bvb/Grid/Template', 'Bvb_Grid_Template', 'word');
    }

    public function
deploy()
    {
       
$this->checkExportRights();
       
$this->setRecordsPerPage(0);

       
parent::deploy();

        if (!
$this->_temp['word'] instanceof Bvb_Grid_Template_Word) {
           
$this->setTemplate('word', 'word');
        }

       
$titles = parent::_buildTitles();
       
$wsData = parent::_buildGrid();
       
$sql = parent::_buildSqlExp();

       
$xml = $this->_temp['word']->globalStart();

       
$xml .= $this->_temp['word']->titlesStart();

        foreach (
$titles as $value) {
            if ((
$value ['field'] != $this->getInfo('hRow,field') && $this->getInfo('hRow,title') != '') || $this->getInfo('hRow,title') == '') {
               
$xml .= str_replace("{{value}}", $value ['value'], $this->_temp['word']->titlesLoop());
            }
        }
       
$xml .= $this->_temp['word']->titlesEnd();

        if (
is_array($wsData)) {
            if (
$this->getInfo('hRow,title') != '') {
               
$bar = $wsData;

               
$hbar = trim($this->getInfo('hRow,title'));

               
$p = 0;
                foreach (
$wsData [0] as $value) {
                    if (
$value ['field'] == $hbar) {
                       
$hRowIndex = $p;
                    }

                   
$p++;
                }
               
$aa = 0;
            }

           
$i = 1;
           
$aa = 0;
            foreach (
$wsData as $row) {
               
//A linha horizontal
               
if ($this->getInfo('hRow,title') != '') {
                    if (!isset(
$bar[$aa - 1][$hRowIndex])) {
                       
$bar[$aa - 1][$hRowIndex]['value'] = '';
                    }

                    if (
$bar [$aa][$hRowIndex]['value'] != $bar [$aa - 1][$hRowIndex]['value']) {
                       
$xml .= str_replace("{{value}}", $bar [$aa][$hRowIndex]['value'], $this->_temp['word']->hRow());
                    }
                }

               
$xml .= $this->_temp['word']->loopStart();
               
$a = 1;
                foreach (
$row as $value) {
                   
$value ['value'] = strip_tags($value ['value']);

                    if ((@
$value ['field'] != $this->getInfo('hRow,field') && $this->getInfo('hRow,title') != '') || $this->getInfo('hRow,title') == '') {
                       
$xml .= str_replace("{{value}}", $value ['value'], $this->_temp['word']->loopLoop(2));
                    }
                   
$a++;
                }
               
$xml .= $this->_temp['word']->loopEnd();
               
$aa++;
               
$i++;
            }
        }

        if (
is_array($sql)) {
           
$xml .= $this->_temp['word']->sqlExpStart();
            foreach (
$sql as $value) {
               
$xml .= str_replace("{{value}}", $value ['value'], $this->_temp['word']->sqlExpLoop());
            }
           
$xml .= $this->_temp['word']->sqlExpEnd();
        }

       
$xml .= $this->_temp['word']->globalEnd();

        if (!isset(
$this->_deploy['save'])) {
           
$this->_deploy['save'] = false;
        }

        if (!isset(
$this->_deploy['download'])) {
           
$this->_deploy['download'] = false;
        }

        if (
$this->_deploy['save'] != 1 && $this->_deploy['download'] != 1) {
            throw new
Exception('Nothing to do. Please specify download&&|save options');
        }

        if (empty(
$this->_deploy['name'])) {
           
$this->_deploy['name'] = date('H_m_d_H_i_s');
        }

        if (
substr($this->_deploy['name'], - 4) == '.doc') {
           
$this->_deploy['name'] = substr($this->_deploy['name'], 0, - 4);
        }

       
$this->_deploy['dir'] = rtrim($this->_deploy['dir'], '/') . '/';

        if (!
is_dir($this->_deploy['dir']) && $this->_deploy['save']==1) {
            throw new
Bvb_Grid_Exception($this->_deploy['dir'] . ' is not a dir');
        }

        if (!
is_writable($this->_deploy['dir']) && $this->_deploy['save']==1) {
            throw new
Bvb_Grid_Exception($this->_deploy['dir'] . ' is not writable');
        }


        if (
$this->_deploy['save'] == 1 ) {
           
file_put_contents($this->_deploy['dir'] . $this->_deploy['name'] . ".doc", $xml);
        }


        if (
$this->_deploy['download'] == 1) {
           
header('Content-type: application/word');
           
header('Content-Disposition: attachment; filename="' . $this->_deploy['name'] . '.doc"');
            echo
$xml;
        }

        die ();
    }
}