mirror of
https://github.com/Lastorder-DC/rhymix.git
synced 2026-05-09 20:12:14 +09:00
Updated code comments for PHPDocumentor - column classes
git-svn-id: http://xe-core.googlecode.com/svn/branches/luminous@12418 201d5d3c-b55e-5fd7-737f-ddc643e51545
This commit is contained in:
parent
2334535831
commit
39c2f06aa7
11 changed files with 457 additions and 367 deletions
|
|
@ -44,6 +44,7 @@ if(!defined('__XE_LOADED_XML_CLASS__')){
|
||||||
*
|
*
|
||||||
* @author Corina Udrescu (corina.udrescu@arnia.ro)
|
* @author Corina Udrescu (corina.udrescu@arnia.ro)
|
||||||
* @package /classes/xml
|
* @package /classes/xml
|
||||||
|
* @version 0.1
|
||||||
*/
|
*/
|
||||||
class XmlQueryParser extends XmlParser {
|
class XmlQueryParser extends XmlParser {
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -9,6 +9,7 @@
|
||||||
*
|
*
|
||||||
* @author Corina Udrescu (corina.udrescu@arnia.ro)
|
* @author Corina Udrescu (corina.udrescu@arnia.ro)
|
||||||
* @package /classes/xml/xmlquery
|
* @package /classes/xml/xmlquery
|
||||||
|
* @version 0.1
|
||||||
*/
|
*/
|
||||||
class DBParser
|
class DBParser
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,7 @@
|
||||||
*
|
*
|
||||||
* @author Corina Udrescu (corina.udrescu@arnia.ro)
|
* @author Corina Udrescu (corina.udrescu@arnia.ro)
|
||||||
* @package /classes/xml/xmlquery
|
* @package /classes/xml/xmlquery
|
||||||
|
* @version 0.1
|
||||||
*/
|
*/
|
||||||
class QueryParser {
|
class QueryParser {
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,28 +1,30 @@
|
||||||
<?php
|
<?php
|
||||||
|
/**
|
||||||
|
* ColumnTag class
|
||||||
|
* Models the <column> tag inside an XML Query file
|
||||||
|
* Since the <column> tag supports different attributes depending on
|
||||||
|
* the type of query (select, update, insert, delete) this is only
|
||||||
|
* the base class for the classes that will model each type <column> tag.
|
||||||
|
*
|
||||||
|
* @author Corina Udrescu (corina.udrescu@arnia.ro)
|
||||||
|
* @package /classes/xml/xmlquery/tags/column
|
||||||
|
* @version 0.1
|
||||||
|
*/
|
||||||
|
class ColumnTag
|
||||||
|
{
|
||||||
/**
|
/**
|
||||||
* ColumnTag class
|
* Column name
|
||||||
* Models the <column> tag inside an XML Query file
|
* @var string
|
||||||
* Since the <column> tag supports different attributes depending on
|
|
||||||
* the type of query (select, update, insert, delete) this is only
|
|
||||||
* the base class for the classes that will model each type <column> tag.
|
|
||||||
*
|
|
||||||
* @author Arnia Software
|
|
||||||
* @package /classes/xml/xmlquery/tags/column
|
|
||||||
* @version 0.1
|
|
||||||
*/
|
*/
|
||||||
class ColumnTag {
|
var $name;
|
||||||
/**
|
|
||||||
* Column name
|
/**
|
||||||
* @var string
|
* Constructor
|
||||||
*/
|
* @param string $name
|
||||||
var $name;
|
* @return void
|
||||||
|
*/
|
||||||
/**
|
function ColumnTag($name)
|
||||||
* constructor
|
{
|
||||||
* @param string $name
|
$this->name = $name;
|
||||||
* @return void
|
|
||||||
*/
|
|
||||||
function ColumnTag($name){
|
|
||||||
$this->name = $name;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,40 +1,53 @@
|
||||||
<?php
|
<?php
|
||||||
|
/**
|
||||||
|
* InsertColumnTag
|
||||||
|
* Models the <column> tag inside an XML Query file whose action is 'insert'
|
||||||
|
*
|
||||||
|
* @author Corina Udrescu (corina.udrescu@arnia.ro)
|
||||||
|
* @package /classes/xml/xmlquery/tags/column
|
||||||
|
* @version 0.1
|
||||||
|
*/
|
||||||
|
class InsertColumnTag extends ColumnTag
|
||||||
|
{
|
||||||
/**
|
/**
|
||||||
* InsertColumnTag
|
* Argument
|
||||||
* Models the <column> tag inside an XML Query file whose action is 'insert'
|
* @var QueryArgument object
|
||||||
*
|
|
||||||
* @author Arnia Software
|
|
||||||
* @package /classes/xml/xmlquery/tags/column
|
|
||||||
* @version 0.1
|
|
||||||
*/
|
*/
|
||||||
class InsertColumnTag extends ColumnTag {
|
var $argument;
|
||||||
/**
|
|
||||||
* argument
|
|
||||||
* @var QueryArgument object
|
|
||||||
*/
|
|
||||||
var $argument;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* constructor
|
|
||||||
* @param object $column
|
|
||||||
* @return void
|
|
||||||
*/
|
|
||||||
function InsertColumnTag($column) {
|
|
||||||
parent::ColumnTag($column->attrs->name);
|
|
||||||
$dbParser = DB::getParser();
|
|
||||||
$this->name = $dbParser->parseColumnName($this->name);
|
|
||||||
$this->argument = new QueryArgument($column);
|
|
||||||
}
|
|
||||||
|
|
||||||
function getExpressionString(){
|
|
||||||
return sprintf('new InsertExpression(\'%s\', ${\'%s_argument\'})'
|
|
||||||
, $this->name
|
|
||||||
, $this->argument->argument_name);
|
|
||||||
}
|
|
||||||
|
|
||||||
function getArgument(){
|
|
||||||
return $this->argument;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Constructor
|
||||||
|
* @param object $column
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
function InsertColumnTag($column) {
|
||||||
|
parent::ColumnTag($column->attrs->name);
|
||||||
|
$dbParser = DB::getParser();
|
||||||
|
$this->name = $dbParser->parseColumnName($this->name);
|
||||||
|
$this->argument = new QueryArgument($column);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the string to be output in the cache file
|
||||||
|
* used for instantiating an InsertExpression when a
|
||||||
|
* query is executed
|
||||||
|
*
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
function getExpressionString(){
|
||||||
|
return sprintf('new InsertExpression(\'%s\', ${\'%s_argument\'})'
|
||||||
|
, $this->name
|
||||||
|
, $this->argument->argument_name);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the QueryArgument object associated with this INSERT statement
|
||||||
|
*
|
||||||
|
* @return QueryArgument
|
||||||
|
*/
|
||||||
|
function getArgument(){
|
||||||
|
return $this->argument;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
?>
|
?>
|
||||||
|
|
|
||||||
|
|
@ -1,31 +1,46 @@
|
||||||
<?php
|
<?php
|
||||||
|
/**
|
||||||
|
* InsertColumnTagWithoutArgument
|
||||||
|
* Models the <column> tag inside an XML Query file whose action is 'insert-select'
|
||||||
|
*
|
||||||
|
* @author Corina Udrescu (corina.udrescu@arnia.ro)
|
||||||
|
* @package /classes/xml/xmlquery/tags/column
|
||||||
|
* @version 0.1
|
||||||
|
*/
|
||||||
|
class InsertColumnTagWithoutArgument extends ColumnTag
|
||||||
|
{
|
||||||
/**
|
/**
|
||||||
* InsertColumnTagWithoutArgument
|
* Constructor
|
||||||
* Models the <column> tag inside an XML Query file whose action is 'insert-select'
|
|
||||||
*
|
*
|
||||||
* @author Arnia Software
|
* @param object $column
|
||||||
* @package /classes/xml/xmlquery/tags/column
|
* @return void
|
||||||
* @version 0.1
|
|
||||||
*/
|
*/
|
||||||
class InsertColumnTagWithoutArgument extends ColumnTag {
|
function InsertColumnTagWithoutArgument($column)
|
||||||
/**
|
{
|
||||||
* constructor
|
parent::ColumnTag($column->attrs->name);
|
||||||
* @param object $column
|
$dbParser = DB::getParser();
|
||||||
* @return void
|
$this->name = $dbParser->parseColumnName($this->name);
|
||||||
*/
|
|
||||||
function InsertColumnTagWithoutArgument($column) {
|
|
||||||
parent::ColumnTag($column->attrs->name);
|
|
||||||
$dbParser = DB::getParser();
|
|
||||||
$this->name = $dbParser->parseColumnName($this->name);
|
|
||||||
}
|
|
||||||
|
|
||||||
function getExpressionString(){
|
|
||||||
return sprintf('new Expression(\'%s\')', $this->name);
|
|
||||||
}
|
|
||||||
|
|
||||||
function getArgument(){
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the string to be output in the cache file
|
||||||
|
*
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
function getExpressionString()
|
||||||
|
{
|
||||||
|
return sprintf('new Expression(\'%s\')', $this->name);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the QueryArgument object associated with this INSERT statement
|
||||||
|
*
|
||||||
|
* @return null
|
||||||
|
*/
|
||||||
|
function getArgument()
|
||||||
|
{
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
?>
|
?>
|
||||||
|
|
|
||||||
|
|
@ -1,65 +1,68 @@
|
||||||
<?php
|
<?php
|
||||||
|
/**
|
||||||
|
* InsertColumnsTag class
|
||||||
|
* Models the <columns> tag inside an XML Query file whose action is 'insert'
|
||||||
|
*
|
||||||
|
* @author Corina Udrescu (corina.udrescu@arnia.ro)
|
||||||
|
* @package /classes/xml/xmlquery/tags/column
|
||||||
|
* @version 0.1
|
||||||
|
*/
|
||||||
|
class InsertColumnsTag{
|
||||||
/**
|
/**
|
||||||
* InsertColumnsTag class
|
* Column list
|
||||||
* Models the <column> tag inside an XML Query file whose action is 'insert'
|
* @var array value is InsertColumnTag object
|
||||||
*
|
|
||||||
* @author Arnia Software
|
|
||||||
* @package /classes/xml/xmlquery/tags/column
|
|
||||||
* @version 0.1
|
|
||||||
*/
|
*/
|
||||||
class InsertColumnsTag{
|
var $columns;
|
||||||
/**
|
|
||||||
* Column list
|
|
||||||
* @var array value is InsertColumnTag object
|
|
||||||
*/
|
|
||||||
var $columns;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* constructor
|
* Constructor
|
||||||
* @param array|string $xml_columns
|
* @param array|string $xml_columns
|
||||||
* @return void
|
* @return void
|
||||||
*/
|
*/
|
||||||
function InsertColumnsTag($xml_columns) {
|
function InsertColumnsTag($xml_columns)
|
||||||
$this->columns = array();
|
{
|
||||||
|
$this->columns = array();
|
||||||
|
|
||||||
if(!$xml_columns)
|
if(!$xml_columns)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if(!is_array($xml_columns)) $xml_columns = array($xml_columns);
|
if(!is_array($xml_columns)) $xml_columns = array($xml_columns);
|
||||||
|
|
||||||
foreach($xml_columns as $column){
|
foreach($xml_columns as $column){
|
||||||
if($column->name === 'query') $this->columns[] = new QueryTag($column, true);
|
if($column->name === 'query') $this->columns[] = new QueryTag($column, true);
|
||||||
else if(!isset($column->attrs->var) && !isset($column->attrs->default)) $this->columns[] = new InsertColumnTagWithoutArgument($column);
|
else if(!isset($column->attrs->var) && !isset($column->attrs->default)) $this->columns[] = new InsertColumnTagWithoutArgument($column);
|
||||||
else $this->columns[] = new InsertColumnTag($column);
|
else $this->columns[] = new InsertColumnTag($column);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* InsertColumnTag object to string
|
|
||||||
* @return string
|
|
||||||
*/
|
|
||||||
function toString(){
|
|
||||||
$output_columns = 'array(' . PHP_EOL;
|
|
||||||
foreach($this->columns as $column){
|
|
||||||
$output_columns .= $column->getExpressionString() . PHP_EOL . ',';
|
|
||||||
}
|
|
||||||
$output_columns = substr($output_columns, 0, -1);
|
|
||||||
$output_columns .= ')';
|
|
||||||
return $output_columns;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Return argument list
|
|
||||||
* @return array
|
|
||||||
*/
|
|
||||||
function getArguments(){
|
|
||||||
$arguments = array();
|
|
||||||
foreach($this->columns as $column){
|
|
||||||
$arguments[] = $column->getArgument();
|
|
||||||
}
|
|
||||||
return $arguments;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* InsertColumnTag object to string
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
function toString()
|
||||||
|
{
|
||||||
|
$output_columns = 'array(' . PHP_EOL;
|
||||||
|
foreach($this->columns as $column){
|
||||||
|
$output_columns .= $column->getExpressionString() . PHP_EOL . ',';
|
||||||
|
}
|
||||||
|
$output_columns = substr($output_columns, 0, -1);
|
||||||
|
$output_columns .= ')';
|
||||||
|
return $output_columns;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return argument list
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
function getArguments()
|
||||||
|
{
|
||||||
|
$arguments = array();
|
||||||
|
foreach($this->columns as $column){
|
||||||
|
$arguments[] = $column->getArgument();
|
||||||
|
}
|
||||||
|
return $arguments;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
?>
|
?>
|
||||||
|
|
|
||||||
|
|
@ -1,53 +1,66 @@
|
||||||
<?php
|
<?php
|
||||||
|
/**
|
||||||
|
* SelectColumnTag
|
||||||
|
* Models the <column> tag inside an XML Query file whose action is 'select'
|
||||||
|
*
|
||||||
|
* @author Corina Udrescu (corina.udrescu@arnia.ro)
|
||||||
|
* @package /classes/xml/xmlquery/tags/column
|
||||||
|
* @version 0.1
|
||||||
|
*/
|
||||||
|
class SelectColumnTag extends ColumnTag
|
||||||
|
{
|
||||||
/**
|
/**
|
||||||
* SelectColumnTag
|
* Column alias
|
||||||
* Models the <column> tag inside an XML Query file whose action is 'select'
|
* @var string
|
||||||
*
|
|
||||||
* @author Arnia Software
|
|
||||||
* @package /classes/xml/xmlquery/tags/column
|
|
||||||
* @version 0.1
|
|
||||||
*/
|
*/
|
||||||
class SelectColumnTag extends ColumnTag{
|
var $alias;
|
||||||
/**
|
|
||||||
* alias
|
/**
|
||||||
* @var string
|
* Click count status
|
||||||
*/
|
* @var bool
|
||||||
var $alias;
|
*/
|
||||||
/**
|
var $click_count;
|
||||||
* click count status
|
|
||||||
* @var bool
|
/**
|
||||||
*/
|
* Constructor
|
||||||
var $click_count;
|
* @param string|object $column
|
||||||
|
* @return void
|
||||||
/**
|
*/
|
||||||
* constructor
|
function SelectColumnTag($column)
|
||||||
* @param string|object $column
|
{
|
||||||
* @return void
|
if ($column == "*" || $column->attrs->name == '*')
|
||||||
*/
|
{
|
||||||
function SelectColumnTag($column){
|
parent::ColumnTag(NULL);
|
||||||
if ($column == "*" || $column->attrs->name == '*')
|
$this->name = "*";
|
||||||
{
|
|
||||||
parent::ColumnTag(NULL);
|
|
||||||
$this->name = "*";
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
parent::ColumnTag($column->attrs->name);
|
|
||||||
$dbParser = new DB(); $dbParser = &$dbParser->getParser();
|
|
||||||
$this->name = $dbParser->parseExpression($this->name);
|
|
||||||
|
|
||||||
$this->alias = $column->attrs->alias;
|
|
||||||
$this->click_count = $column->attrs->click_count;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
else
|
||||||
function getExpressionString(){
|
{
|
||||||
if($this->name == '*') return "new StarExpression()";
|
parent::ColumnTag($column->attrs->name);
|
||||||
if($this->click_count)
|
$dbParser = new DB(); $dbParser = &$dbParser->getParser();
|
||||||
return sprintf('new ClickCountExpression(\'%s\', %s, $args->%s)', $this->name, $this->alias ? '\'' . $this->alias . '\'' : "''",$this->click_count);
|
$this->name = $dbParser->parseExpression($this->name);
|
||||||
if(strpos($this->name, '$') === 0)
|
|
||||||
return sprintf('new SelectExpression($args->%s)', substr($this->name, 1));
|
$this->alias = $column->attrs->alias;
|
||||||
$dbParser = DB::getParser();
|
$this->click_count = $column->attrs->click_count;
|
||||||
return sprintf('new SelectExpression(\'%s\'%s)', $this->name, $this->alias ? ', \''.$dbParser->escape($this->alias) .'\'': '');
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the string to be output in the cache file
|
||||||
|
*
|
||||||
|
* A select column tag in an XML query can be used for:
|
||||||
|
* - a star expression: SELECT *
|
||||||
|
* - a click count expression: SELECT + UPDATE
|
||||||
|
* - any other select expression (column name, function call etc).
|
||||||
|
*
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
function getExpressionString(){
|
||||||
|
if($this->name == '*') return "new StarExpression()";
|
||||||
|
if($this->click_count)
|
||||||
|
return sprintf('new ClickCountExpression(\'%s\', %s, $args->%s)', $this->name, $this->alias ? '\'' . $this->alias . '\'' : "''",$this->click_count);
|
||||||
|
if(strpos($this->name, '$') === 0)
|
||||||
|
return sprintf('new SelectExpression($args->%s)', substr($this->name, 1));
|
||||||
|
$dbParser = DB::getParser();
|
||||||
|
return sprintf('new SelectExpression(\'%s\'%s)', $this->name, $this->alias ? ', \''.$dbParser->escape($this->alias) .'\'': '');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,83 +1,92 @@
|
||||||
<?php
|
<?php
|
||||||
|
/**
|
||||||
|
* SelectColumnsTag class
|
||||||
|
* Models the <columns> tag inside an XML Query file whose action is 'select'
|
||||||
|
*
|
||||||
|
* @author Corina Udrescu (corina.udrescu@arnia.ro)
|
||||||
|
* @package /classes/xml/xmlquery/tags/column
|
||||||
|
* @version 0.1
|
||||||
|
*/
|
||||||
|
class SelectColumnsTag
|
||||||
|
{
|
||||||
/**
|
/**
|
||||||
* SelectColumnTag class
|
* Column list
|
||||||
*
|
* @var array value is SelectColumnTag object
|
||||||
* @author Arnia Software
|
|
||||||
* @package /classes/xml/xmlquery/tags/column
|
|
||||||
* @version 0.1
|
|
||||||
*/
|
*/
|
||||||
class SelectColumnsTag {
|
var $columns;
|
||||||
/**
|
|
||||||
* Column list
|
|
||||||
* @var array value is SelectColumnTag object
|
|
||||||
*/
|
|
||||||
var $columns;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* constructor
|
* Constructor
|
||||||
* @param Xml_Node_ $xml_columns
|
*
|
||||||
* @return void
|
* @param $xml_columns_tag
|
||||||
*/
|
* @internal param \Xml_Node_ $xml_columns
|
||||||
function SelectColumnsTag($xml_columns_tag){
|
* @return void
|
||||||
if (!$xml_columns_tag)
|
*/
|
||||||
$xml_columns_tag = new Xml_Node_();
|
function SelectColumnsTag($xml_columns_tag)
|
||||||
|
{
|
||||||
|
if (!$xml_columns_tag)
|
||||||
|
$xml_columns_tag = new Xml_Node_();
|
||||||
|
|
||||||
$xml_columns = $xml_columns_tag->column;
|
$xml_columns = $xml_columns_tag->column;
|
||||||
$xml_queries = $xml_columns_tag->query;
|
$xml_queries = $xml_columns_tag->query;
|
||||||
|
|
||||||
$this->columns = array();
|
$this->columns = array();
|
||||||
|
|
||||||
if(!$xml_columns) {
|
if(!$xml_columns) {
|
||||||
$this->columns[] = new SelectColumnTag("*");
|
$this->columns[] = new SelectColumnTag("*");
|
||||||
return;
|
return;
|
||||||
}
|
|
||||||
|
|
||||||
if(!is_array($xml_columns)) $xml_columns = array($xml_columns);
|
|
||||||
|
|
||||||
foreach($xml_columns as $column){
|
|
||||||
$this->columns[] = new SelectColumnTag($column);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
if(!$xml_queries) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if(!is_array($xml_queries)) $xml_queries = array($xml_queries);
|
|
||||||
|
|
||||||
foreach($xml_queries as $column){
|
|
||||||
$this->columns[] = new QueryTag($column, true);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
if(!is_array($xml_columns)) $xml_columns = array($xml_columns);
|
||||||
* SelectColumnTag object to string
|
|
||||||
* @return string
|
foreach($xml_columns as $column){
|
||||||
*/
|
$this->columns[] = new SelectColumnTag($column);
|
||||||
function toString(){
|
|
||||||
$output_columns = 'array(' . PHP_EOL;
|
|
||||||
foreach($this->columns as $column){
|
|
||||||
if(is_a($column, 'QueryTag'))
|
|
||||||
$output_columns .= $column->toString() . PHP_EOL . ',';
|
|
||||||
else
|
|
||||||
$output_columns .= $column->getExpressionString() . PHP_EOL . ',';
|
|
||||||
}
|
|
||||||
$output_columns = substr($output_columns, 0, -1);
|
|
||||||
$output_columns .= ')';
|
|
||||||
return $output_columns;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Return argument list
|
if(!$xml_queries) {
|
||||||
* @return array
|
return;
|
||||||
*/
|
}
|
||||||
function getArguments(){
|
|
||||||
$arguments = array();
|
if(!is_array($xml_queries)) $xml_queries = array($xml_queries);
|
||||||
foreach($this->columns as $column){
|
|
||||||
if(is_a($column, 'QueryTag'))
|
foreach($xml_queries as $column){
|
||||||
$arguments = array_merge($arguments, $column->getArguments());
|
$this->columns[] = new QueryTag($column, TRUE);
|
||||||
}
|
|
||||||
return $arguments;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the string to be output in the cache file
|
||||||
|
*
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
function toString()
|
||||||
|
{
|
||||||
|
$output_columns = 'array(' . PHP_EOL;
|
||||||
|
foreach($this->columns as $column){
|
||||||
|
if(is_a($column, 'QueryTag'))
|
||||||
|
$output_columns .= $column->toString() . PHP_EOL . ',';
|
||||||
|
else
|
||||||
|
$output_columns .= $column->getExpressionString() . PHP_EOL . ',';
|
||||||
|
}
|
||||||
|
$output_columns = substr($output_columns, 0, -1);
|
||||||
|
$output_columns .= ')';
|
||||||
|
return $output_columns;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return argument list
|
||||||
|
*
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
function getArguments()
|
||||||
|
{
|
||||||
|
$arguments = array();
|
||||||
|
foreach($this->columns as $column){
|
||||||
|
if(is_a($column, 'QueryTag'))
|
||||||
|
$arguments = array_merge($arguments, $column->getArguments());
|
||||||
|
}
|
||||||
|
return $arguments;
|
||||||
|
}
|
||||||
|
}
|
||||||
?>
|
?>
|
||||||
|
|
|
||||||
|
|
@ -1,73 +1,100 @@
|
||||||
<?php
|
<?php
|
||||||
|
/**
|
||||||
|
* UpdateColumnTag
|
||||||
|
* Models the <column> tag inside an XML Query file whose action is 'update'
|
||||||
|
*
|
||||||
|
* @author Corina Udrescu (corina.udrescu@arnia.ro)
|
||||||
|
* @package /classes/xml/xmlquery/tags/column
|
||||||
|
* @version 0.1
|
||||||
|
*/
|
||||||
|
class UpdateColumnTag extends ColumnTag {
|
||||||
/**
|
/**
|
||||||
* UpdateColumnTag
|
* Argument
|
||||||
* Models the <column> tag inside an XML Query file whose action is 'update'
|
* @var QueryArgument object
|
||||||
*
|
|
||||||
* @author Arnia Software
|
|
||||||
* @package /classes/xml/xmlquery/tags/column
|
|
||||||
* @version 0.1
|
|
||||||
*/
|
*/
|
||||||
class UpdateColumnTag extends ColumnTag {
|
var $argument;
|
||||||
/**
|
|
||||||
* argument
|
|
||||||
* @var QueryArgument object
|
|
||||||
*/
|
|
||||||
var $argument;
|
|
||||||
/**
|
|
||||||
* default value
|
|
||||||
* @var string
|
|
||||||
*/
|
|
||||||
var $default_value;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* constructor
|
* Default value
|
||||||
* @param object $column
|
* @var string
|
||||||
* @return void
|
*/
|
||||||
*/
|
var $default_value;
|
||||||
function UpdateColumnTag($column) {
|
|
||||||
parent::ColumnTag($column->attrs->name);
|
/**
|
||||||
$dbParser = DB::getParser();
|
* Constructor
|
||||||
$this->name = $dbParser->parseColumnName($this->name);
|
* @param object $column
|
||||||
if($column->attrs->var)
|
* @return void
|
||||||
$this->argument = new QueryArgument($column);
|
*/
|
||||||
else {
|
function UpdateColumnTag($column)
|
||||||
if(strpos($column->attrs->default, '.') !== false)
|
{
|
||||||
$this->default_value = "'" . $dbParser->parseColumnName($column->attrs->default) . "'";
|
parent::ColumnTag($column->attrs->name);
|
||||||
else {
|
|
||||||
$default_value = new DefaultValue($this->name, $column->attrs->default);
|
$dbParser = DB::getParser();
|
||||||
if($default_value->isOperation())
|
$this->name = $dbParser->parseColumnName($this->name);
|
||||||
$this->argument = new QueryArgument($column, true);
|
|
||||||
//else $this->default_value = $dbParser->parseColumnName($column->attrs->default);
|
if($column->attrs->var)
|
||||||
else {
|
$this->argument = new QueryArgument($column);
|
||||||
$this->default_value = $default_value->toString();
|
else {
|
||||||
if($default_value->isStringFromFunction()){
|
if(strpos($column->attrs->default, '.') !== FALSE)
|
||||||
$this->default_value = '"\'".' . $this->default_value . '."\'"';
|
{
|
||||||
}
|
$this->default_value = "'" . $dbParser->parseColumnName($column->attrs->default) . "'";
|
||||||
if($default_value->isString()){
|
}
|
||||||
$this->default_value = '"' . $this->default_value . '"';
|
else
|
||||||
}
|
{
|
||||||
}
|
$default_value = new DefaultValue($this->name, $column->attrs->default);
|
||||||
|
if($default_value->isOperation())
|
||||||
|
{
|
||||||
|
$this->argument = new QueryArgument($column, TRUE);
|
||||||
|
}
|
||||||
|
//else $this->default_value = $dbParser->parseColumnName($column->attrs->default);
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$this->default_value = $default_value->toString();
|
||||||
|
if($default_value->isStringFromFunction())
|
||||||
|
{
|
||||||
|
$this->default_value = '"\'".' . $this->default_value . '."\'"';
|
||||||
|
}
|
||||||
|
if($default_value->isString())
|
||||||
|
{
|
||||||
|
$this->default_value = '"' . $this->default_value . '"';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function getExpressionString(){
|
|
||||||
if($this->argument)
|
|
||||||
return sprintf('new UpdateExpression(\'%s\', ${\'%s_argument\'})'
|
|
||||||
, $this->name
|
|
||||||
, $this->argument->argument_name);
|
|
||||||
else {
|
|
||||||
return sprintf('new UpdateExpressionWithoutArgument(\'%s\', %s)'
|
|
||||||
, $this->name
|
|
||||||
, $this->default_value);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function getArgument(){
|
|
||||||
return $this->argument;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the string to be output in the cache file
|
||||||
|
*
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
function getExpressionString()
|
||||||
|
{
|
||||||
|
if($this->argument)
|
||||||
|
{
|
||||||
|
return sprintf('new UpdateExpression(\'%s\', ${\'%s_argument\'})'
|
||||||
|
, $this->name
|
||||||
|
, $this->argument->argument_name);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return sprintf('new UpdateExpressionWithoutArgument(\'%s\', %s)'
|
||||||
|
, $this->name
|
||||||
|
, $this->default_value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the Argument associated with this update statement
|
||||||
|
*
|
||||||
|
* @return QueryArgument
|
||||||
|
*/
|
||||||
|
function getArgument()
|
||||||
|
{
|
||||||
|
return $this->argument;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
?>
|
?>
|
||||||
|
|
|
||||||
|
|
@ -1,61 +1,66 @@
|
||||||
<?php
|
<?php
|
||||||
|
/**
|
||||||
|
* UpdateColumnsTag
|
||||||
|
* Models the <columns> tag inside an XML Query file whose action is 'update'
|
||||||
|
*
|
||||||
|
* @author Corina Udrescu (corina.udrescu@arnia.ro)
|
||||||
|
* @package /classes/xml/xmlquery/tags/column
|
||||||
|
* @version 0.1
|
||||||
|
*/
|
||||||
|
class UpdateColumnsTag{
|
||||||
/**
|
/**
|
||||||
* UpdateColumnsTag
|
* Column list
|
||||||
* Models the <column> tag inside an XML Query file whose action is 'update'
|
* @var array value is UpdateColumnTag object
|
||||||
*
|
|
||||||
* @author Arnia Software
|
|
||||||
* @package /classes/xml/xmlquery/tags/column
|
|
||||||
* @version 0.1
|
|
||||||
*/
|
*/
|
||||||
class UpdateColumnsTag{
|
var $columns;
|
||||||
/**
|
|
||||||
* Column list
|
|
||||||
* @var array value is UpdateColumnTag object
|
|
||||||
*/
|
|
||||||
var $columns;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* constructor
|
* Constructor
|
||||||
* @param array|string $xml_columns
|
* @param array|object $xml_columns
|
||||||
* @return void
|
* @return void
|
||||||
*/
|
*/
|
||||||
function UpdateColumnsTag($xml_columns) {
|
function UpdateColumnsTag($xml_columns)
|
||||||
$this->columns = array();
|
{
|
||||||
|
$this->columns = array();
|
||||||
|
|
||||||
if(!is_array($xml_columns)) $xml_columns = array($xml_columns);
|
if(!is_array($xml_columns)) $xml_columns = array($xml_columns);
|
||||||
|
|
||||||
foreach($xml_columns as $column){
|
foreach($xml_columns as $column){
|
||||||
if($column->name === 'query') $this->columns[] = new QueryTag($column, true);
|
if($column->name === 'query') $this->columns[] = new QueryTag($column, true);
|
||||||
else $this->columns[] = new UpdateColumnTag($column);
|
else $this->columns[] = new UpdateColumnTag($column);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* UpdateColumnTag object to string
|
|
||||||
* @return string
|
|
||||||
*/
|
|
||||||
function toString(){
|
|
||||||
$output_columns = 'array(' . PHP_EOL;
|
|
||||||
foreach($this->columns as $column){
|
|
||||||
$output_columns .= $column->getExpressionString() . PHP_EOL . ',';
|
|
||||||
}
|
|
||||||
$output_columns = substr($output_columns, 0, -1);
|
|
||||||
$output_columns .= ')';
|
|
||||||
return $output_columns;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Return argument list
|
|
||||||
* @return array
|
|
||||||
*/
|
|
||||||
function getArguments(){
|
|
||||||
$arguments = array();
|
|
||||||
foreach($this->columns as $column){
|
|
||||||
$arguments[] = $column->getArgument();
|
|
||||||
}
|
|
||||||
return $arguments;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the string to be output in the cache file
|
||||||
|
*
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
function toString()
|
||||||
|
{
|
||||||
|
$output_columns = 'array(' . PHP_EOL;
|
||||||
|
foreach($this->columns as $column){
|
||||||
|
$output_columns .= $column->getExpressionString() . PHP_EOL . ',';
|
||||||
|
}
|
||||||
|
$output_columns = substr($output_columns, 0, -1);
|
||||||
|
$output_columns .= ')';
|
||||||
|
return $output_columns;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return argument list
|
||||||
|
*
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
function getArguments()
|
||||||
|
{
|
||||||
|
$arguments = array();
|
||||||
|
foreach($this->columns as $column){
|
||||||
|
$arguments[] = $column->getArgument();
|
||||||
|
}
|
||||||
|
return $arguments;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
?>
|
?>
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue