From f66f26e21cdfa8acfdd6bfc1496d0ab0c2973a2a Mon Sep 17 00:00:00 2001 From: =?utf8?q?Rapha=C3=ABl=20Barrois?= Date: Wed, 20 Jan 2010 23:58:55 +0100 Subject: [PATCH] Merge all plfilter-related files, and make it an include MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Signed-off-by: Raphaël Barrois --- classes/plfiltercondition.php | 172 --------------------- classes/plfilterorder.php | 57 ------- classes/plfilter.php => include/plfilter.inc.php | 187 +++++++++++++++++++++++ 3 files changed, 187 insertions(+), 229 deletions(-) delete mode 100644 classes/plfiltercondition.php delete mode 100644 classes/plfilterorder.php rename classes/plfilter.php => include/plfilter.inc.php (55%) diff --git a/classes/plfiltercondition.php b/classes/plfiltercondition.php deleted file mode 100644 index 450aad9..0000000 --- a/classes/plfiltercondition.php +++ /dev/null @@ -1,172 +0,0 @@ -setChild($child); - } - } - - public function setChild(PlFilterCondition &$cond) - { - $this->child =& $cond; - } -} -// }}} - -// {{{ class PFC_NChildren -abstract class PFC_NChildren implements PlFilterCondition -{ - protected $children = array(); - - public function __construct() - { - $children = func_get_args(); - foreach ($children as &$child) { - if (!is_null($child) && ($child instanceof PlFilterCondition)) { - $this->addChild($child); - } - } - } - - public function addChild(PlFilterCondition &$cond) - { - $this->children[] =& $cond; - } - - protected function catConds(array $cond, $op, $fallback) - { - if (count($cond) == 0) { - return $fallback; - } else if (count($cond) == 1) { - return $cond[0]; - } else { - return '(' . implode(') ' . $op . ' (', $cond) . ')'; - } - } -} -// }}} - -// {{{ class PFC_True -class PFC_True implements PlFilterCondition -{ - public function buildCondition(PlFilter &$uf) - { - return self::COND_TRUE; - } -} -// }}} - -// {{{ class PFC_False -class PFC_False implements PlFilterCondition -{ - public function buildCondition(PlFilter &$uf) - { - return self::COND_FALSE; - } -} -// }}} - -// {{{ class PFC_Not -class PFC_Not extends PFC_OneChild -{ - public function buildCondition(PlFilter &$uf) - { - $val = $this->child->buildCondition($uf); - if ($val == self::COND_TRUE) { - return self::COND_FALSE; - } else if ($val == self::COND_FALSE) { - return self::COND_TRUE; - } else { - return 'NOT (' . $val . ')'; - } - } -} -// }}} - -// {{{ class PFC_And -class PFC_And extends PFC_NChildren -{ - public function buildCondition(PlFilter &$uf) - { - if (empty($this->children)) { - return self::COND_FALSE; - } else { - $true = self::COND_FALSE; - $conds = array(); - foreach ($this->children as &$child) { - $val = $child->buildCondition($uf); - if ($val == self::COND_TRUE) { - $true = self::COND_TRUE; - } else if ($val == self::COND_FALSE) { - return self::COND_FALSE; - } else { - $conds[] = $val; - } - } - return $this->catConds($conds, 'AND', $true); - } - } -} -// }}} - -// {{{ class PFC_Or -class PFC_Or extends PFC_NChildren -{ - public function buildCondition(PlFilter &$uf) - { - if (empty($this->children)) { - return self::COND_TRUE; - } else { - $true = self::COND_TRUE; - $conds = array(); - foreach ($this->children as &$child) { - $val = $child->buildCondition($uf); - if ($val == self::COND_TRUE) { - return self::COND_TRUE; - } else if ($val == self::COND_FALSE) { - $true = self::COND_FALSE; - } else { - $conds[] = $val; - } - } - return $this->catConds($conds, 'OR', $true); - } - } -} -// }}} -?> diff --git a/classes/plfilterorder.php b/classes/plfilterorder.php deleted file mode 100644 index a9b61d9..0000000 --- a/classes/plfilterorder.php +++ /dev/null @@ -1,57 +0,0 @@ -desc = $desc; - } - - public function toggleDesc() - { - $this->desc = !$desc; - } - - public function setDescending($desc = true) - { - $this->desc = $desc; - } - - public function buildSort(PlFilter &$pf) - { - $sel = $this->getSortTokens($pf); - if (!is_array($sel)) { - $sel = array($sel); - } - if ($this->desc) { - foreach ($sel as $k => $s) { - $sel[$k] = $s . ' DESC'; - } - } - return $sel; - } - - abstract protected function getSortTokens(PlFilter &$pf); -} - -?> diff --git a/classes/plfilter.php b/include/plfilter.inc.php similarity index 55% rename from classes/plfilter.php rename to include/plfilter.inc.php index 592d3d5..2548574 100644 --- a/classes/plfilter.php +++ b/include/plfilter.inc.php @@ -113,6 +113,193 @@ class PlSqlJoin } } +abstract class PlFilterOrder +{ + protected $desc = false; + public function __construct($desc = false) + { + $this->desc = $desc; + } + + public function toggleDesc() + { + $this->desc = !$desc; + } + + public function setDescending($desc = true) + { + $this->desc = $desc; + } + + public function buildSort(PlFilter &$pf) + { + $sel = $this->getSortTokens($pf); + if (!is_array($sel)) { + $sel = array($sel); + } + if ($this->desc) { + foreach ($sel as $k => $s) { + $sel[$k] = $s . ' DESC'; + } + } + return $sel; + } + +// abstract protected function getSortTokens(&$pf); +} + +// {{{ interface PlFilterCondition +interface PlFilterCondition +{ + const COND_TRUE = 'TRUE'; + const COND_FALSE = 'FALSE'; + + public function buildCondition(PlFilter &$pf); +} +// }}} + +// {{{ class PFC_OneChild +abstract class PFC_OneChild implements PlFilterCondition +{ + protected $child; + + public function __construct(&$child = null) + { + if (!is_null($child) && ($child instanceof PlFilterCondition)) { + $this->setChild($child); + } + } + + public function setChild(PlFilterCondition &$cond) + { + $this->child =& $cond; + } +} +// }}} + +// {{{ class PFC_NChildren +abstract class PFC_NChildren implements PlFilterCondition +{ + protected $children = array(); + + public function __construct() + { + $children = func_get_args(); + foreach ($children as &$child) { + if (!is_null($child) && ($child instanceof PlFilterCondition)) { + $this->addChild($child); + } + } + } + + public function addChild(PlFilterCondition &$cond) + { + $this->children[] =& $cond; + } + + protected function catConds(array $cond, $op, $fallback) + { + if (count($cond) == 0) { + return $fallback; + } else if (count($cond) == 1) { + return $cond[0]; + } else { + return '(' . implode(') ' . $op . ' (', $cond) . ')'; + } + } +} +// }}} + +// {{{ class PFC_True +class PFC_True implements PlFilterCondition +{ + public function buildCondition(PlFilter &$uf) + { + return self::COND_TRUE; + } +} +// }}} + +// {{{ class PFC_False +class PFC_False implements PlFilterCondition +{ + public function buildCondition(PlFilter &$uf) + { + return self::COND_FALSE; + } +} +// }}} + +// {{{ class PFC_Not +class PFC_Not extends PFC_OneChild +{ + public function buildCondition(PlFilter &$uf) + { + $val = $this->child->buildCondition($uf); + if ($val == self::COND_TRUE) { + return self::COND_FALSE; + } else if ($val == self::COND_FALSE) { + return self::COND_TRUE; + } else { + return 'NOT (' . $val . ')'; + } + } +} +// }}} + +// {{{ class PFC_And +class PFC_And extends PFC_NChildren +{ + public function buildCondition(PlFilter &$uf) + { + if (empty($this->children)) { + return self::COND_FALSE; + } else { + $true = self::COND_FALSE; + $conds = array(); + foreach ($this->children as &$child) { + $val = $child->buildCondition($uf); + if ($val == self::COND_TRUE) { + $true = self::COND_TRUE; + } else if ($val == self::COND_FALSE) { + return self::COND_FALSE; + } else { + $conds[] = $val; + } + } + return $this->catConds($conds, 'AND', $true); + } + } +} +// }}} + +// {{{ class PFC_Or +class PFC_Or extends PFC_NChildren +{ + public function buildCondition(PlFilter &$uf) + { + if (empty($this->children)) { + return self::COND_TRUE; + } else { + $true = self::COND_TRUE; + $conds = array(); + foreach ($this->children as &$child) { + $val = $child->buildCondition($uf); + if ($val == self::COND_TRUE) { + return self::COND_TRUE; + } else if ($val == self::COND_FALSE) { + $true = self::COND_FALSE; + } else { + $conds[] = $val; + } + } + return $this->catConds($conds, 'OR', $true); + } + } +} +// }}} + + abstract class PlFilter { /** Filters objects matching the PlFilter -- 2.1.4