Spaces:
Sleeping
Sleeping
processmaker-community / processmaker-files /thirdparty /pear /Spreadsheet /Excel /Writer /Validator.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 = ...; | |
| } | |
| }*/ | |