PhpSpreadsheet/Classes/PHPExcel/Style/Conditional.php

278 lines
6.2 KiB
PHP
Raw Normal View History

<?php
/**
* PHPExcel
*
2015-05-02 22:50:37 +00:00
* Copyright (c) 2006 - 2015 PHPExcel
*
* 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*
* @category PHPExcel
* @package PHPExcel_Style
2015-05-02 22:50:37 +00:00
* @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
* @version ##VERSION##, ##DATE##
*/
/**
* PHPExcel_Style_Conditional
*
* @category PHPExcel
* @package PHPExcel_Style
2015-05-02 22:50:37 +00:00
* @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel)
*/
class PHPExcel_Style_Conditional implements PHPExcel_IComparable
{
/* Condition types */
const CONDITION_NONE = 'none';
const CONDITION_CELLIS = 'cellIs';
const CONDITION_CONTAINSTEXT = 'containsText';
const CONDITION_EXPRESSION = 'expression';
/* Operator types */
const OPERATOR_NONE = '';
const OPERATOR_BEGINSWITH = 'beginsWith';
const OPERATOR_ENDSWITH = 'endsWith';
const OPERATOR_EQUAL = 'equal';
const OPERATOR_GREATERTHAN = 'greaterThan';
const OPERATOR_GREATERTHANOREQUAL = 'greaterThanOrEqual';
const OPERATOR_LESSTHAN = 'lessThan';
const OPERATOR_LESSTHANOREQUAL = 'lessThanOrEqual';
const OPERATOR_NOTEQUAL = 'notEqual';
const OPERATOR_CONTAINSTEXT = 'containsText';
const OPERATOR_NOTCONTAINS = 'notContains';
const OPERATOR_BETWEEN = 'between';
/**
* Condition type
*
* @var int
*/
private $_conditionType;
/**
* Operator type
*
* @var int
*/
private $_operatorType;
/**
* Text
*
* @var string
*/
private $_text;
/**
* Condition
*
* @var string[]
*/
private $_condition = array();
/**
* Style
*
* @var PHPExcel_Style
*/
private $_style;
/**
* Create a new PHPExcel_Style_Conditional
*/
public function __construct()
{
// Initialise values
$this->_conditionType = PHPExcel_Style_Conditional::CONDITION_NONE;
$this->_operatorType = PHPExcel_Style_Conditional::OPERATOR_NONE;
$this->_text = null;
$this->_condition = array();
$this->_style = new PHPExcel_Style(FALSE, TRUE);
}
/**
* Get Condition type
*
* @return string
*/
public function getConditionType() {
return $this->_conditionType;
}
/**
* Set Condition type
*
* @param string $pValue PHPExcel_Style_Conditional condition type
* @return PHPExcel_Style_Conditional
*/
public function setConditionType($pValue = PHPExcel_Style_Conditional::CONDITION_NONE) {
$this->_conditionType = $pValue;
return $this;
}
/**
* Get Operator type
*
* @return string
*/
public function getOperatorType() {
return $this->_operatorType;
}
/**
* Set Operator type
*
* @param string $pValue PHPExcel_Style_Conditional operator type
* @return PHPExcel_Style_Conditional
*/
public function setOperatorType($pValue = PHPExcel_Style_Conditional::OPERATOR_NONE) {
$this->_operatorType = $pValue;
return $this;
}
/**
* Get text
*
* @return string
*/
public function getText() {
return $this->_text;
}
/**
* Set text
*
* @param string $value
* @return PHPExcel_Style_Conditional
*/
public function setText($value = null) {
$this->_text = $value;
return $this;
}
/**
* Get Condition
*
* @deprecated Deprecated, use getConditions instead
* @return string
*/
public function getCondition() {
if (isset($this->_condition[0])) {
return $this->_condition[0];
}
return '';
}
/**
* Set Condition
*
* @deprecated Deprecated, use setConditions instead
* @param string $pValue Condition
* @return PHPExcel_Style_Conditional
*/
public function setCondition($pValue = '') {
if (!is_array($pValue))
$pValue = array($pValue);
return $this->setConditions($pValue);
}
/**
* Get Conditions
*
* @return string[]
*/
public function getConditions() {
return $this->_condition;
}
/**
* Set Conditions
*
* @param string[] $pValue Condition
* @return PHPExcel_Style_Conditional
*/
public function setConditions($pValue) {
if (!is_array($pValue))
$pValue = array($pValue);
$this->_condition = $pValue;
return $this;
}
/**
* Add Condition
*
* @param string $pValue Condition
* @return PHPExcel_Style_Conditional
*/
public function addCondition($pValue = '') {
$this->_condition[] = $pValue;
return $this;
}
/**
* Get Style
*
* @return PHPExcel_Style
*/
public function getStyle() {
return $this->_style;
}
/**
* Set Style
*
* @param PHPExcel_Style $pValue
* @throws PHPExcel_Exception
* @return PHPExcel_Style_Conditional
*/
public function setStyle(PHPExcel_Style $pValue = null) {
$this->_style = $pValue;
return $this;
}
/**
* Get hash code
*
* @return string Hash code
*/
public function getHashCode() {
return md5(
$this->_conditionType
. $this->_operatorType
. implode(';', $this->_condition)
. $this->_style->getHashCode()
. __CLASS__
);
}
/**
* Implement PHP __clone to create a deep clone, not just a shallow copy.
*/
public function __clone() {
$vars = get_object_vars($this);
foreach ($vars as $key => $value) {
if (is_object($value)) {
$this->$key = clone $value;
} else {
$this->$key = $value;
}
}
}
}