[xoops-cvslog 207] CVS update: xoops2jp/html/class

Back to archive index

onokazu onoka****@users*****
2005年 6月 28日 (火) 16:45:06 JST


Index: xoops2jp/html/class/criteria.php
diff -u xoops2jp/html/class/criteria.php:1.3 xoops2jp/html/class/criteria.php:1.4
--- xoops2jp/html/class/criteria.php:1.3	Sat Jun 11 11:32:38 2005
+++ xoops2jp/html/class/criteria.php	Tue Jun 28 16:45:05 2005
@@ -1,381 +1,405 @@
-<?php
-// $Id: criteria.php,v 1.3 2005/06/11 02:32:38 onokazu Exp $
-//  ------------------------------------------------------------------------ //
-//                XOOPS - PHP Content Management System                      //
-//                    Copyright (c) 2000 XOOPS.org                           //
-//                       <http://www.xoops.org/>                             //
-//  ------------------------------------------------------------------------ //
-//  This program is free software; you can redistribute it and/or modify     //
-//  it under the terms of the GNU General Public License as published by     //
-//  the Free Software Foundation; either version 2 of the License, or        //
-//  (at your option) any later version.                                      //
-//                                                                           //
-//  You may not change or alter any portion of this comment or credits       //
-//  of supporting developers from this source code or any supporting         //
-//  source code which is considered copyrighted (c) material of the          //
-//  original comment or credit authors.                                      //
-//                                                                           //
-//  This program 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 General Public License for more details.                             //
-//                                                                           //
-//  You should have received a copy of the GNU General Public License        //
-//  along with this program; if not, write to the Free Software              //
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA //
-//  ------------------------------------------------------------------------ //
-// Author: Kazumi Ono (AKA onokazu)                                          //
-// URL: http://www.myweb.ne.jp/, http://www.xoops.org/, http://jp.xoops.org/ //
-// Project: The XOOPS Project                                                //
-// ------------------------------------------------------------------------- //
-// Modified by: Nathan Dial                                                  //
-// Date: 20 March 2003                                                       //
-// Desc: added experimental LDAP filter generation code                      //
-//       also refactored to remove about 20 lines of redundant code.         //
-// ------------------------------------------------------------------------- //
-
-/**
- *
- *
- * @package     kernel
- * @subpackage  database
- *
- * @author      Kazumi Ono  <onoka****@xoops*****>
- * @copyright   copyright (c) 2000-2003 XOOPS.org
- */
-
-/**
- * A criteria (grammar?) for a database query.
- *
- * Abstract base class should never be instantiated directly.
- *
- * @abstract
- *
- * @package     kernel
- * @subpackage  database
- *
- * @author      Kazumi Ono  <onoka****@xoops*****>
- * @copyright   copyright (c) 2000-2003 XOOPS.org
- */
-class CriteriaElement
-{
-    /**
-     * Sort order
-     * @var string
-     */
-    var $order = 'ASC';
-
-    /**
-     * @var string
-     */
-    var $sort = '';
-
-    /**
-     * Number of records to retrieve
-     * @var int
-     */
-    var $limit = 0;
-
-    /**
-     * Offset of first record
-     * @var int
-     */
-    var $start = 0;
-
-    /**
-     * @var string
-     */
-    var $groupby = '';
-
-    /**
-     * Constructor
-     **/
-    function CriteriaElement()
-    {
-
-    }
-
-    /**
-     * Render the criteria element
-     */
-    function render()
-    {
-
-    }
-
-    /**#@+
-     * Accessor
-     */
-    /**
-     * @param   string  $sort
-     */
-    function setSort($sort)
-    {
-        $this->sort = $sort;
-    }
-
-    /**
-     * @return  string
-     */
-    function getSort()
-    {
-        return $this->sort;
-    }
-
-    /**
-     * @param   string  $order
-     */
-    function setOrder($order)
-    {
-        if ('DESC' == strtoupper($order)) {
-            $this->order = 'DESC';
-        }
-    }
-
-    /**
-     * @return  string
-     */
-    function getOrder()
-    {
-        return $this->order;
-    }
-
-    /**
-     * @param   int $limit
-     */
-    function setLimit($limit=0)
-    {
-        $this->limit = intval($limit);
-    }
-
-    /**
-     * @return  int
-     */
-    function getLimit()
-    {
-        return $this->limit;
-    }
-
-    /**
-     * @param   int $start
-     */
-    function setStart($start=0)
-    {
-        $this->start = intval($start);
-    }
-
-    /**
-     * @return  int
-     */
-    function getStart()
-    {
-        return $this->start;
-    }
-
-    /**
-     * @param   string  $group
-     */
-    function setGroupby($group){
-        $this->groupby = $group;
-    }
-
-    /**
-     * @return  string
-     */
-    function getGroupby(){
-        return ' GROUP BY '.$this->groupby;
-    }
-    /**#@-*/
-}
-
-/**
- * Collection of multiple {@link CriteriaElement}s
- *
- * @package     kernel
- * @subpackage  database
- *
- * @author      Kazumi Ono  <onoka****@xoops*****>
- * @copyright   copyright (c) 2000-2003 XOOPS.org
- */
-class CriteriaCompo extends CriteriaElement
-{
-
-    /**
-     * The elements of the collection
-     * @var array   Array of {@link CriteriaElement} objects
-     */
-    var $criteriaElements = array();
-
-    /**
-     * Conditions
-     * @var array
-     */
-    var $conditions = array();
-
-    /**
-     * Constructor
-     *
-     * @param   object  $ele
-     * @param   string  $condition
-     **/
-    function CriteriaCompo($ele=null, $condition='AND')
-    {
-        if (isset($ele) && is_object($ele)) {
-            $this->add($ele, $condition);
-        }
-    }
-
-    /**
-     * Add an element
-     *
-     * @param   object  &$criteriaElement
-     * @param   string  $condition
-     *
-     * @return  object  reference to this collection
-     **/
-    function &add(&$criteriaElement, $condition='AND')
-    {
-        $this->criteriaElements[] =& $criteriaElement;
-        $this->conditions[] = $condition;
-        return $this;
-    }
-
-    /**
-     * Make the criteria into a query string
-     *
-     * @return  string
-     */
-    function render()
-    {
-        $ret = '';
-        $count = count($this->criteriaElements);
-        if ($count > 0) {
-            $ret = '('. $this->criteriaElements[0]->render();
-            for ($i = 1; $i < $count; $i++) {
-                $ret .= ' '.$this->conditions[$i].' '.$this->criteriaElements[$i]->render();
-            }
-            $ret .= ')';
-        }
-        return $ret;
-    }
-
-    /**
-     * Make the criteria into a SQL "WHERE" clause
-     *
-     * @return  string
-     */
-    function renderWhere()
-    {
-        $ret = $this->render();
-        $ret = ($ret != '') ? 'WHERE ' . $ret : $ret;
-        return $ret;
-    }
-
-    /**
-     * Generate an LDAP filter from criteria
-     *
-     * @return string
-     * @author Nathan Dial ndial****@trill*****
-     */
-    function renderLdap(){
-        $retval = '';
-        $count = count($this->criteriaElements);
-        if ($count > 0) {
-            $retval = $this->criteriaElements[0]->renderLdap();
-            for ($i = 1; $i < $count; $i++) {
-                $cond = $this->conditions[$i];
-                if(strtoupper($cond) == 'AND'){
-                    $op = '&';
-                } elseif (strtoupper($cond)=='OR'){
-                    $op = '|';
-                }
-                $retval = "($op$retval" . $this->criteriaElements[$i]->renderLdap().")";
-            }
-        }
-        return $retval;
-    }
-}
-
-
-/**
- * A single criteria
- *
- * @package     kernel
- * @subpackage  database
- *
- * @author      Kazumi Ono  <onoka****@xoops*****>
- * @copyright   copyright (c) 2000-2003 XOOPS.org
- */
-class Criteria extends CriteriaElement
-{
-
-    /**
-     * @var string
-     */
-    var $prefix;
-    var $function;
-    var $column;
-    var $operator;
-    var $value;
-
-    /**
-     * Constructor
-     *
-     * @param   string  $column
-     * @param   string  $value
-     * @param   string  $operator
-     **/
-    function Criteria($column, $value='', $operator='=', $prefix = '', $function = '') {
-        $this->prefix = $prefix;
-        $this->function = $function;
-        $this->column = $column;
-        $this->value = $value;
-        $this->operator = $operator;
-    }
-
-    /**
-     * Make a sql condition string
-     *
-     * @return  string
-     **/
-    function render() {
-        if (is_numeric($this->value) || in_array(strtoupper($this->operator), array('IN', 'NOT IN'))) {
-            $value = $this->value;
-        } else {
-            if ( '' === ($value = trim($this->value)) ) {
-                return '';
-            }
-            if ( (substr($value, 0, 1) != '`') && (substr($value, -1) != '`') ) {
-                $value = "'$value'";
-            }
-        }
-        $clause = (!empty($this->prefix) ? "{$this->prefix}." : "") . $this->column;
-        if ( !empty($this->function) ) {
-            $clause = sprintf($this->function, $clause);
-        }
-        $clause .= " {$this->operator} $value";
-        return $clause;
-    }
-
-   /**
-     * Generate an LDAP filter from criteria
-     *
-     * @return string
-     * @author Nathan Dial ndial****@trill*****
-     */
-    function renderLdap(){
-        $clause = "(" . $this->column . $this->operator . $this->value . ")";
-        return $clause;
-    }
-
-    /**
-     * Make a SQL "WHERE" clause
-     *
-     * @return  string
-     */
-    function renderWhere() {
-        $cond = $this->render();
-        return empty($cond) ? '' : "WHERE $cond";
-    }
-}
-?>
+<?php
+// $Id: criteria.php,v 1.4 2005/06/28 07:45:05 onokazu Exp $
+//  ------------------------------------------------------------------------ //
+//                XOOPS - PHP Content Management System                      //
+//                    Copyright (c) 2000 XOOPS.org                           //
+//                       <http://www.xoops.org/>                             //
+//  ------------------------------------------------------------------------ //
+//  This program is free software; you can redistribute it and/or modify     //
+//  it under the terms of the GNU General Public License as published by     //
+//  the Free Software Foundation; either version 2 of the License, or        //
+//  (at your option) any later version.                                      //
+//                                                                           //
+//  You may not change or alter any portion of this comment or credits       //
+//  of supporting developers from this source code or any supporting         //
+//  source code which is considered copyrighted (c) material of the          //
+//  original comment or credit authors.                                      //
+//                                                                           //
+//  This program 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 General Public License for more details.                             //
+//                                                                           //
+//  You should have received a copy of the GNU General Public License        //
+//  along with this program; if not, write to the Free Software              //
+//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA //
+//  ------------------------------------------------------------------------ //
+// Author: Kazumi Ono (AKA onokazu)                                          //
+// URL: http://www.myweb.ne.jp/, http://www.xoops.org/, http://jp.xoops.org/ //
+// Project: The XOOPS Project                                                //
+// ------------------------------------------------------------------------- //
+// Modified by: Nathan Dial                                                  //
+// Date: 20 March 2003                                                       //
+// Desc: added experimental LDAP filter generation code                      //
+//       also refactored to remove about 20 lines of redundant code.         //
+// ------------------------------------------------------------------------- //
+
+/**
+ *
+ *
+ * @package     kernel
+ * @subpackage  database
+ *
+ * @author      Kazumi Ono  <onoka****@xoops*****>
+ * @copyright   copyright (c) 2000-2003 XOOPS.org
+ */
+
+/**
+ * A criteria (grammar?) for a database query.
+ *
+ * Abstract base class should never be instantiated directly.
+ *
+ * @abstract
+ *
+ * @package     kernel
+ * @subpackage  database
+ *
+ * @author      Kazumi Ono  <onoka****@xoops*****>
+ * @copyright   copyright (c) 2000-2003 XOOPS.org
+ */
+class CriteriaElement
+{
+    /**
+     * Sort order
+     * @var string
+     */
+    var $order = 'ASC';
+
+    /**
+     * @var string
+     */
+    var $sort = '';
+
+    /**
+     * Number of records to retrieve
+     * @var int
+     */
+    var $limit = 0;
+
+    /**
+     * Offset of first record
+     * @var int
+     */
+    var $start = 0;
+
+    /**
+     * @var string
+     */
+    var $groupby = '';
+
+    /**
+     * Constructor
+     **/
+    function CriteriaElement()
+    {
+
+    }
+
+    /**
+     * Render the criteria element
+     */
+    function render()
+    {
+
+    }
+
+    /**#@+
+     * Accessor
+     */
+    /**
+     * @param   string  $sort
+     */
+    function setSort($sort)
+    {
+        $this->sort = $sort;
+    }
+
+    /**
+     * @return  string
+     */
+    function getSort()
+    {
+        return $this->sort;
+    }
+
+    /**
+     * @param   string  $order
+     */
+    function setOrder($order)
+    {
+        if ('DESC' == strtoupper($order)) {
+            $this->order = 'DESC';
+        }
+    }
+
+    /**
+     * @return  string
+     */
+    function getOrder()
+    {
+        return $this->order;
+    }
+
+    /**
+     * @param   int $limit
+     */
+    function setLimit($limit=0)
+    {
+        $this->limit = intval($limit);
+    }
+
+    /**
+     * @return  int
+     */
+    function getLimit()
+    {
+        return $this->limit;
+    }
+
+    /**
+     * @param   int $start
+     */
+    function setStart($start=0)
+    {
+        $this->start = intval($start);
+    }
+
+    /**
+     * @return  int
+     */
+    function getStart()
+    {
+        return $this->start;
+    }
+
+    /**
+     * @param   string  $group
+     */
+    function setGroupby($group){
+        $this->groupby = $group;
+    }
+
+    /**
+     * @return  string
+     */
+    function getGroupby(){
+        return ' GROUP BY '.$this->groupby;
+    }
+    /**#@-*/
+}
+
+/**
+ * Collection of multiple {@link CriteriaElement}s
+ *
+ * @package     kernel
+ * @subpackage  database
+ *
+ * @author      Kazumi Ono  <onoka****@xoops*****>
+ * @copyright   copyright (c) 2000-2003 XOOPS.org
+ */
+class CriteriaCompo extends CriteriaElement
+{
+
+    /**
+     * The elements of the collection
+     * @var array   Array of {@link CriteriaElement} objects
+     */
+    var $criteriaElements = array();
+
+    /**
+     * Conditions
+     * @var array
+     */
+    var $conditions = array();
+
+    /**
+     * Constructor
+     *
+     * @param   object  $ele
+     * @param   string  $condition
+     **/
+    function CriteriaCompo($ele=null, $condition='AND')
+    {
+        if (isset($ele) && is_object($ele)) {
+            $this->add($ele, $condition);
+        }
+    }
+
+    /**
+     * Add an element
+     *
+     * @param   object  &$criteriaElement
+     * @param   string  $condition
+     *
+     * @return  object  reference to this collection
+     **/
+    function &add(&$criteriaElement, $condition='AND')
+    {
+        $this->criteriaElements[] =& $criteriaElement;
+        $this->conditions[] = $condition;
+        return $this;
+    }
+
+    /**
+     * Make the criteria into a query string
+     *
+     * @return  string
+     */
+    function render()
+    {
+        $ret = '';
+        $count = count($this->criteriaElements);
+        if ($count > 0) {
+            $ret = '('. $this->criteriaElements[0]->render();
+            for ($i = 1; $i < $count; $i++) {
+                $ret .= ' '.$this->conditions[$i].' '.$this->criteriaElements[$i]->render();
+            }
+            $ret .= ')';
+        }
+        return $ret;
+    }
+
+    /**
+     * Make the criteria into a SQL "WHERE" clause
+     *
+     * @return  string
+     */
+    function renderWhere()
+    {
+        $ret = $this->render();
+        $ret = ($ret != '') ? 'WHERE ' . $ret : $ret;
+        return $ret;
+    }
+
+    /**
+     * Generate an LDAP filter from criteria
+     *
+     * @return string
+     * @author Nathan Dial ndial****@trill*****
+     */
+    function renderLdap(){
+        $retval = '';
+        $count = count($this->criteriaElements);
+        if ($count > 0) {
+            $retval = $this->criteriaElements[0]->renderLdap();
+            for ($i = 1; $i < $count; $i++) {
+                $cond = $this->conditions[$i];
+                if(strtoupper($cond) == 'AND'){
+                    $op = '&';
+                } elseif (strtoupper($cond)=='OR'){
+                    $op = '|';
+                }
+                $retval = "($op$retval" . $this->criteriaElements[$i]->renderLdap().")";
+            }
+        }
+        return $retval;
+    }
+}
+
+
+/**
+ * A single criteria
+ *
+ * @package     kernel
+ * @subpackage  database
+ *
+ * @author      Kazumi Ono  <onoka****@xoops*****>
+ * @copyright   copyright (c) 2000-2003 XOOPS.org
+ */
+class Criteria extends CriteriaElement
+{
+
+    /**
+     * @var string
+     */
+    var $prefix;
+    var $function;
+    var $column;
+    var $operator;
+    var $value;
+
+    /**
+     * Constructor
+     *
+     * @param   string  $column
+     * @param   string  $value
+     * @param   string  $operator
+     **/
+    function Criteria($column, $value='', $operator='=', $prefix = '', $function = '') {
+        $this->prefix = $prefix;
+        $this->function = $function;
+        $this->column = $column;
+        $this->value = $value;
+        $this->operator = $operator;
+    }
+
+    /**
+     * Make a sql condition string
+     *
+     * @return  string
+     **/
+    function render() {
+        if (is_numeric($this->value) || in_array(strtoupper($this->operator), array('IN', 'NOT IN'))) {
+            $value = $this->value;
+        } else {
+            if ( '' === ($value = trim($this->value)) ) {
+                return '';
+            }
+            if ( (substr($value, 0, 1) != '`') && (substr($value, -1) != '`') ) {
+                $value = "'$value'";
+            }
+        }
+        $clause = (!empty($this->prefix) ? "{$this->prefix}." : "") . $this->column;
+        if ( !empty($this->function) ) {
+            $clause = sprintf($this->function, $clause);
+        }
+        $clause .= " {$this->operator} $value";
+        return $clause;
+    }
+
+   /**
+     * Generate an LDAP filter from criteria
+     *
+     * @return string
+     * @author Nathan Dial ndial****@trill*****
+     */
+    function renderLdap(){
+        $clause = "(" . $this->column . $this->operator . $this->value . ")";
+        return $clause;
+    }
+
+    /**
+     * Make a SQL "WHERE" clause
+     *
+     * @return  string
+     */
+    function renderWhere() {
+        $cond = $this->render();
+        return empty($cond) ? '' : "WHERE $cond";
+    }
+}
+
+/**
+ * @Deprecated
+ */
+class CriteriaString extends Criteria {
+    function render() {
+        if (is_numeric($this->value) || in_array(strtoupper($this->operator), array('IN', 'NOT IN'))) {
+            $value = "'".$this->value."'";
+        } else {
+            if ( '' === ($value = trim($this->value)) ) {
+                return '';
+            }
+            if ( (substr($value, 0, 1) != '`') && (substr($value, -1) != '`') ) {
+                $value = "'$value'";
+            }
+        }
+        $clause = (!empty($this->prefix) ? "{$this->prefix}." : "") . $this->column;
+        if ( !empty($this->function) ) {
+            $clause = sprintf($this->function, $clause);
+        }
+        $clause .= " {$this->operator} $value";
+        return $clause;
+    }
+}
+?>


xoops-cvslog メーリングリストの案内
Back to archive index