mirror of
https://github.com/Lastorder-DC/rhymix.git
synced 2026-04-28 06:42:14 +09:00
Update new xml query classes with xe 1.5
with improved query argument support and update and delete queries git-svn-id: http://xe-core.googlecode.com/svn/branches/1.5.0-DB@8378 201d5d3c-b55e-5fd7-737f-ddc643e51545
This commit is contained in:
parent
5f9a5249ac
commit
7dbe0626b6
39 changed files with 1619 additions and 540 deletions
|
|
@ -0,0 +1,26 @@
|
|||
<?php
|
||||
class ConditionQueryArgument extends QueryArgument{
|
||||
var $argument_name;
|
||||
var $argument_validator;
|
||||
var $column_name;
|
||||
|
||||
function ConditionQueryArgument($tag){
|
||||
$this->argument_name = $tag->attrs->var;
|
||||
|
||||
$name = $tag->attrs->column;
|
||||
if(strpos($name, '.') === false) $this->column_name = $name;
|
||||
else {
|
||||
list($prefix, $name) = explode('.', $name);
|
||||
$this->column_name = $name;
|
||||
}
|
||||
|
||||
require_once(_XE_PATH_.'classes/xml/xmlquery/queryargument/validator/QueryArgumentValidator.class.php');
|
||||
require_once(_XE_PATH_.'classes/xml/xmlquery/queryargument/validator/ConditionQueryArgumentValidator.class.php');
|
||||
$this->argument_validator = new ConditionQueryArgumentValidator($tag);
|
||||
}
|
||||
|
||||
function getColumnName(){
|
||||
return $this->column_name;
|
||||
}
|
||||
}
|
||||
?>
|
||||
61
classes/xml/xmlquery/queryargument/DefaultValue.class.php
Normal file
61
classes/xml/xmlquery/queryargument/DefaultValue.class.php
Normal file
|
|
@ -0,0 +1,61 @@
|
|||
<?php
|
||||
|
||||
class DefaultValue {
|
||||
var $column_name;
|
||||
var $value;
|
||||
|
||||
function DefaultValue($column_name, $value){
|
||||
$this->column_name = $column_name;
|
||||
$this->value = $value;
|
||||
}
|
||||
|
||||
function isString(){
|
||||
$str_pos = strpos($this->value, '(');
|
||||
if($str_pos===false) return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
function toString(){
|
||||
if(!isset($this->value)) return;
|
||||
|
||||
$str_pos = strpos($this->value, '(');
|
||||
if($str_pos===false) return '"'.$this->value.'"';
|
||||
|
||||
$func_name = substr($this->value, 0, $str_pos);
|
||||
$args = substr($this->value, $str_pos+1, strlen($value)-1);
|
||||
|
||||
switch($func_name) {
|
||||
case 'ipaddress' :
|
||||
$val = '$_SERVER[\'REMOTE_ADDR\']';
|
||||
break;
|
||||
case 'unixtime' :
|
||||
$val = 'time()';
|
||||
break;
|
||||
case 'curdate' :
|
||||
$val = 'date("YmdHis")';
|
||||
break;
|
||||
case 'sequence' :
|
||||
$val = '$this->getNextSequence()';
|
||||
break;
|
||||
case 'plus' :
|
||||
$args = abs($args);
|
||||
// TODO Make sure column name is escaped
|
||||
$val = sprintf('"%s+%d"', $this->column_name, $args);
|
||||
break;
|
||||
case 'minus' :
|
||||
$args = abs($args);
|
||||
$val = sprintf('"%s-%d"', $this->column_name, $args);
|
||||
break;
|
||||
case 'multiply' :
|
||||
$args = intval($args);
|
||||
$val = sprintf('"%s*%d"', $this->column_name, $args);
|
||||
break;
|
||||
default :
|
||||
$val = '"' . $this->value . '"';
|
||||
}
|
||||
|
||||
return $val;
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
||||
52
classes/xml/xmlquery/queryargument/QueryArgument.class.php
Normal file
52
classes/xml/xmlquery/queryargument/QueryArgument.class.php
Normal file
|
|
@ -0,0 +1,52 @@
|
|||
<?php
|
||||
|
||||
class QueryArgument {
|
||||
var $argument_name;
|
||||
var $argument_validator;
|
||||
var $column_name;
|
||||
|
||||
function QueryArgument($tag){
|
||||
$this->argument_name = $tag->attrs->var;
|
||||
|
||||
$name = $tag->attrs->name;
|
||||
if(!$name) $name = $tag->attrs->column;
|
||||
if(strpos($name, '.') === false) $this->column_name = $name;
|
||||
else {
|
||||
list($prefix, $name) = explode('.', $name);
|
||||
$this->column_name = $name;
|
||||
}
|
||||
|
||||
if(!$this->argument_name) $this->argument_name = $tag->attrs->name;
|
||||
require_once(_XE_PATH_.'classes/xml/xmlquery/queryargument/validator/QueryArgumentValidator.class.php');
|
||||
$this->argument_validator = new QueryArgumentValidator($tag);
|
||||
|
||||
}
|
||||
|
||||
function getArgumentName(){
|
||||
return $this->argument_name;
|
||||
}
|
||||
|
||||
function getColumnName(){
|
||||
return $this->column_name;
|
||||
}
|
||||
|
||||
function getValidatorString(){
|
||||
return $this->argument_validator->toString();
|
||||
}
|
||||
|
||||
function toString(){
|
||||
$arg = sprintf("\n$%s_argument = new Argument('%s', %s);\n"
|
||||
, $this->argument_name
|
||||
, $this->argument_name
|
||||
, '$args->'.$this->argument_name);
|
||||
$arg .= $this->argument_validator->toString();
|
||||
$arg .= sprintf("if(!$%s_argument->isValid()) return $%s_argument->getErrorMessage();\n"
|
||||
, $this->argument_name
|
||||
, $this->argument_name
|
||||
);
|
||||
return $arg;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
?>
|
||||
|
|
@ -0,0 +1,20 @@
|
|||
<?php
|
||||
class ConditionQueryArgumentValidator extends QueryArgumentValidator {
|
||||
|
||||
function ConditionQueryArgumentValidator($tag){
|
||||
parent::QueryArgumentValidator($tag);
|
||||
}
|
||||
|
||||
function toString(){
|
||||
if(!$this->argument_name) return '';
|
||||
if(!isset($this->validator_string)){
|
||||
$validator = parent::toString();
|
||||
require_once(_XE_PATH_.'classes/xml/xmlquery/queryargument/validator/EscapeCheck.class.php');
|
||||
$v = new EscapeCheck($this->argument_name);
|
||||
$validator .= $v->toString();
|
||||
$this->validator_string = $validator;
|
||||
}
|
||||
return $this->validator_string;
|
||||
}
|
||||
}
|
||||
?>
|
||||
|
|
@ -0,0 +1,25 @@
|
|||
<?php
|
||||
|
||||
class DefaultCheck extends Validator {
|
||||
var $argument_name;
|
||||
var $value;
|
||||
|
||||
function DefaultCheck($argument_name, $value) {
|
||||
$this->argument_name = $argument_name;
|
||||
$this->value = $value;
|
||||
}
|
||||
|
||||
function toString(){
|
||||
if(!isset($this->argument_name)) return '';
|
||||
|
||||
$value = $this->value->toString();
|
||||
|
||||
if($this->value->isString()) {
|
||||
$value = "'".$value."'";
|
||||
}
|
||||
|
||||
return 'if(!isset($args->'.$this->argument_name.')) $args->'.$this->argument_name.' = '.$value.';'."\n";
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
||||
|
|
@ -0,0 +1,21 @@
|
|||
<?php
|
||||
// TODO This is temporary for when column types will be
|
||||
// used to prepare input
|
||||
|
||||
class EscapeCheck {
|
||||
var $argument_name;
|
||||
|
||||
function EscapeCheck($argument_name){
|
||||
$this->argument_name = $argument_name;
|
||||
}
|
||||
|
||||
function toString(){
|
||||
return sprintf("if(is_string(\$args->%s) && !is_numeric(\$args->%s)) \$args->%s = \$dbParser->escapeString(\$args->%s);\n"
|
||||
, $this->argument_name
|
||||
, $this->argument_name
|
||||
, $this->argument_name
|
||||
, $this->argument_name);
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
||||
|
|
@ -0,0 +1,16 @@
|
|||
<?php
|
||||
class FilterValidator extends Validator {
|
||||
var $argument_name;
|
||||
var $filter;
|
||||
|
||||
function FilterValidator($argument_name, $filter) {
|
||||
$this->argument_name = $argument_name;
|
||||
$this->filter = $filter;
|
||||
}
|
||||
|
||||
function toString(){
|
||||
return sprintf('if(isset($args->%s)) { unset($_output); $_output = $this->checkFilter("%s",$args->%s,"%s"); if(!$_output->toBool()) return $_output; } %s',$this->argument_name, $this->argument_name,$this->argument_name,$this->filter,"\n");
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
||||
|
|
@ -0,0 +1,22 @@
|
|||
<?php
|
||||
|
||||
class MaxLengthValidator extends Validator {
|
||||
var $argument_name;
|
||||
var $value;
|
||||
|
||||
function MaxLengthValidator($argument_name, $value) {
|
||||
$this->argument_name = $argument_name;
|
||||
$this->value = $value;
|
||||
}
|
||||
|
||||
function toString(){
|
||||
return 'if($args->'
|
||||
.$this->argument_name
|
||||
.'&&strlen($args->'.$this->argument_name.')>'.$this->value
|
||||
.') return new Object(-1, sprintf($lang->filter->outofrange, $lang->'
|
||||
.$this->argument_name.'?$lang->'
|
||||
.$this->argument_name.':\''.$this->argument_name.'\'));'."\n";
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
||||
|
|
@ -0,0 +1,22 @@
|
|||
<?php
|
||||
|
||||
class MinLengthValidator extends Validator{
|
||||
var $argument_name;
|
||||
var $value;
|
||||
|
||||
function MinLengthValidator($argument_name, $value) {
|
||||
$this->argument_name = $argument_name;
|
||||
$this->value = $value;
|
||||
}
|
||||
|
||||
function toString(){
|
||||
return 'if($args->'
|
||||
.$this->argument_name
|
||||
.'&&strlen($args->'.$this->argument_name.')<'.$this->value
|
||||
.') return new Object(-1, sprintf($lang->filter->outofrange, $lang->'
|
||||
.$this->argument_name.'?$lang->'
|
||||
.$this->argument_name.':\''.$this->argument_name.'\'));'."\n";
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
||||
|
|
@ -0,0 +1,18 @@
|
|||
<?php
|
||||
|
||||
class NotNullValidator extends Validator {
|
||||
var $argument_name;
|
||||
var $value;
|
||||
|
||||
function NotNullValidator($argument_name, $value) {
|
||||
$this->argument_name = $argument_name;
|
||||
$this->value = $value;
|
||||
}
|
||||
|
||||
function toString(){
|
||||
return 'if(!isset($args->'.$this->argument_name.')) return new Object(-1, sprintf($lang->filter->isnull, $lang->'
|
||||
.$this->argument_name.'?$lang->'.$this->argument_name.':\''.$this->argument_name.'\'));'."\n";
|
||||
}
|
||||
|
||||
}
|
||||
?>
|
||||
|
|
@ -0,0 +1,62 @@
|
|||
<?php
|
||||
require_once(_XE_PATH_.'classes/xml/xmlquery/queryargument/DefaultValue.class.php');
|
||||
|
||||
class QueryArgumentValidator {
|
||||
var $argument_name;
|
||||
var $default_value;
|
||||
var $notnull;
|
||||
var $filter;
|
||||
var $min_length;
|
||||
var $max_length;
|
||||
|
||||
var $validator_string;
|
||||
|
||||
function QueryArgumentValidator($tag){
|
||||
$this->argument_name = $tag->attrs->var;
|
||||
if(!$this->argument_name) $this->argument_name = $tag->attrs->name;
|
||||
$this->default_value = $tag->attrs->default;
|
||||
$this->notnull = $tag->attrs->notnull;
|
||||
$this->filter = $tag->attrs->filter;
|
||||
$this->min_length = $tag->attrs->min_length;
|
||||
$this->max_length = $tag->attrs->max_length;
|
||||
}
|
||||
|
||||
function toString(){
|
||||
$validator = '';
|
||||
if(isset($this->default_value)){
|
||||
$this->default_value = new DefaultValue($this->argument_name, $this->default_value);
|
||||
//$v = new DefaultCheck($this->argument_name, $this->default_value);
|
||||
//$validator .= $v->toString();
|
||||
$validator .= sprintf("$%s_argument->ensureDefaultValue(%s);\n"
|
||||
, $this->argument_name
|
||||
, $this->default_value->toString()
|
||||
);
|
||||
}
|
||||
if($this->notnull){
|
||||
$validator .= sprintf("$%s_argument->checkNotNull();\n"
|
||||
, $this->argument_name
|
||||
);
|
||||
}
|
||||
if($this->filter){
|
||||
$validator .= sprintf("$%s_argument->checkFilter(%s);\n"
|
||||
, $this->argument_name
|
||||
, $this->filter
|
||||
);
|
||||
}
|
||||
if($this->min_length){
|
||||
$validator .= sprintf("$%s_argument->checkMinLength(%s);\n"
|
||||
, $this->argument_name
|
||||
, $this->min_length
|
||||
);
|
||||
}
|
||||
if($this->max_length){
|
||||
$validator .= sprintf("$%s_argument->checkMaxLength(%s);\n"
|
||||
, $this->argument_name
|
||||
, $this->max_length
|
||||
);
|
||||
}
|
||||
return $validator;
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
||||
|
|
@ -0,0 +1,7 @@
|
|||
<?php
|
||||
|
||||
class Validator {
|
||||
|
||||
}
|
||||
|
||||
?>
|
||||
Loading…
Add table
Add a link
Reference in a new issue