123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230 |
- <?php
- /*
- * Module written by Herman Kuiper <herman@ozuzo.net>
- *
- * License Information:
- *
- * Spreadsheet_Excel_Writer: A library for generating Excel Spreadsheets
- * Copyright (c) 2002-2003 Xavier Noguer xnoguer@rezebra.com
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
- //require_once('PEAR.php');
- // Possible operator types
- /*
- FIXME: change prefixes
- */
- define("OP_BETWEEN", 0x00);
- define("OP_NOTBETWEEN", 0x01);
- define("OP_EQUAL", 0x02);
- define("OP_NOTEQUAL", 0x03);
- define("OP_GT", 0x04);
- define("OP_LT", 0x05);
- define("OP_GTE", 0x06);
- define("OP_LTE", 0x07);
- /**
- * Baseclass for generating Excel DV records (validations)
- *
- * @author Herman Kuiper
- * @category FileFormats
- * @package Spreadsheet_Excel_Writer
- */
- class Spreadsheet_Excel_Writer_Validator
- {
- var $_type;
- var $_style;
- var $_fixedList;
- var $_blank;
- var $_incell;
- var $_showprompt;
- var $_showerror;
- var $_title_prompt;
- var $_descr_prompt;
- var $_title_error;
- var $_descr_error;
- var $_operator;
- var $_formula1;
- var $_formula2;
- /**
- * The parser from the workbook. Used to parse validation formulas also
- * @var Spreadsheet_Excel_Writer_Parser
- */
- var $_parser;
- function Spreadsheet_Excel_Writer_Validator(&$parser)
- {
- $this->_parser = $parser;
- $this->_type = 0x01; // FIXME: add method for setting datatype
- $this->_style = 0x00;
- $this->_fixedList = false;
- $this->_blank = false;
- $this->_incell = false;
- $this->_showprompt = false;
- $this->_showerror = true;
- $this->_title_prompt = "\x00";
- $this->_descr_prompt = "\x00";
- $this->_title_error = "\x00";
- $this->_descr_error = "\x00";
- $this->_operator = 0x00; // default is equal
- $this->_formula1 = '';
- $this->_formula2 = '';
- }
- function setPrompt($promptTitle = "\x00", $promptDescription = "\x00", $showPrompt = true)
- {
- $this->_showprompt = $showPrompt;
- $this->_title_prompt = $promptTitle;
- $this->_descr_prompt = $promptDescription;
- }
- function setError($errorTitle = "\x00", $errorDescription = "\x00", $showError = true)
- {
- $this->_showerror = $showError;
- $this->_title_error = $errorTitle;
- $this->_descr_error = $errorDescription;
- }
- function allowBlank()
- {
- $this->_blank = true;
- }
- function onInvalidStop()
- {
- $this->_style = 0x00;
- }
- function onInvalidWarn()
- {
- $this->_style = 0x01;
- }
- function onInvalidInfo()
- {
- $this->_style = 0x02;
- }
- function setFormula1($formula)
- {
- // Parse the formula using the parser in Parser.php
- $error = $this->_parser->parse($formula);
- if (PEAR::isError($error)) {
- return $this->_formula1;
- }
- $this->_formula1 = $this->_parser->toReversePolish();
- if (PEAR::isError($this->_formula1)) {
- return $this->_formula1;
- }
- return true;
- }
- function setFormula2($formula)
- {
- // Parse the formula using the parser in Parser.php
- $error = $this->_parser->parse($formula);
- if (PEAR::isError($error)) {
- return $this->_formula2;
- }
- $this->_formula2 = $this->_parser->toReversePolish();
- if (PEAR::isError($this->_formula2)) {
- return $this->_formula2;
- }
- return true;
- }
- function _getOptions()
- {
- $options = $this->_type;
- $options |= $this->_style << 3;
- if ($this->_fixedList) {
- $options |= 0x80;
- }
- if ($this->_blank) {
- $options |= 0x100;
- }
- if (!$this->_incell) {
- $options |= 0x200;
- }
- if ($this->_showprompt) {
- $options |= 0x40000;
- }
- if ($this->_showerror) {
- $options |= 0x80000;
- }
- $options |= $this->_operator << 20;
- return $options;
- }
- function _getData()
- {
- $title_prompt_len = strlen($this->_title_prompt);
- $descr_prompt_len = strlen($this->_descr_prompt);
- $title_error_len = strlen($this->_title_error);
- $descr_error_len = strlen($this->_descr_error);
- $formula1_size = strlen($this->_formula1);
- $formula2_size = strlen($this->_formula2);
- $data = pack("V", $this->_getOptions());
- $data .= pack("vC", $title_prompt_len, 0x00) . $this->_title_prompt;
- $data .= pack("vC", $title_error_len, 0x00) . $this->_title_error;
- $data .= pack("vC", $descr_prompt_len, 0x00) . $this->_descr_prompt;
- $data .= pack("vC", $descr_error_len, 0x00) . $this->_descr_error;
- $data .= pack("vv", $formula1_size, 0x0000) . $this->_formula1;
- $data .= pack("vv", $formula2_size, 0x0000) . $this->_formula2;
- return $data;
- }
- }
- /*class Spreadsheet_Excel_Writer_Validation_List extends Spreadsheet_Excel_Writer_Validation
- {
- function Spreadsheet_Excel_Writer_Validation_list()
- {
- parent::Spreadsheet_Excel_Writer_Validation();
- $this->_type = 0x03;
- }
- function setList($source, $incell = true)
- {
- $this->_incell = $incell;
- $this->_fixedList = true;
- $source = implode("\x00", $source);
- $this->_formula1 = pack("CCC", 0x17, strlen($source), 0x0c) . $source;
- }
- function setRow($row, $col1, $col2, $incell = true)
- {
- $this->_incell = $incell;
- //$this->_formula1 = ...;
- }
- function setCol($col, $row1, $row2, $incell = true)
- {
- $this->_incell = $incell;
- //$this->_formula1 = ...;
- }
- }*/
- ?>
|