Page Menu
Home
Phorge
Search
Configure Global Search
Log In
Files
F8199309
Select.php
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Flag For Later
Award Token
Size
6 KB
Referenced Files
None
Subscribers
None
Select.php
View Options
<?php
/**
* Zend Framework
*
* LICENSE
*
* This source file is subject to the new BSD license that is bundled
* with this package in the file LICENSE.txt.
* It is also available through the world-wide-web at this URL:
* http://framework.zend.com/license/new-bsd
* If you did not receive a copy of the license and are unable to
* obtain it through the world-wide-web, please send an email
* to license@zend.com so we can send you a copy immediately.
*
* @category Zend
* @package Zend_Db
* @subpackage Select
* @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
* @version $Id: Select.php 10020 2009-08-18 14:34:09Z j.fischer@metaways.de $
*/
/**
* @see Zend_Db_Select
*/
require_once
'Zend/Db/Select.php'
;
/**
* @see Zend_Db_Table_Abstract
*/
require_once
'Zend/Db/Table/Abstract.php'
;
/**
* Class for SQL SELECT query manipulation for the Zend_Db_Table component.
*
* @category Zend
* @package Zend_Db
* @subpackage Table
* @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
*/
class
Zend_Db_Table_Select
extends
Zend_Db_Select
{
/**
* Table schema for parent Zend_Db_Table.
*
* @var array
*/
protected
$_info
;
/**
* Table integrity override.
*
* @var array
*/
protected
$_integrityCheck
=
true
;
/**
* Table instance that created this select object
*
* @var Zend_Db_Table_Abstract
*/
protected
$_table
;
/**
* Class constructor
*
* @param Zend_Db_Table_Abstract $adapter
*/
public
function
__construct
(
Zend_Db_Table_Abstract
$table
)
{
parent
::
__construct
(
$table
->
getAdapter
());
$this
->
setTable
(
$table
);
}
/**
* Return the table that created this select object
*
* @return Zend_Db_Table_Abstract
*/
public
function
getTable
()
{
return
$this
->
_table
;
}
/**
* Sets the primary table name and retrieves the table schema.
*
* @param Zend_Db_Table_Abstract $adapter
* @return Zend_Db_Select This Zend_Db_Select object.
*/
public
function
setTable
(
Zend_Db_Table_Abstract
$table
)
{
$this
->
_adapter
=
$table
->
getAdapter
();
$this
->
_info
=
$table
->
info
();
$this
->
_table
=
$table
;
return
$this
;
}
/**
* Sets the integrity check flag.
*
* Setting this flag to false skips the checks for table joins, allowing
* 'hybrid' table rows to be created.
*
* @param Zend_Db_Table_Abstract $adapter
* @return Zend_Db_Select This Zend_Db_Select object.
*/
public
function
setIntegrityCheck
(
$flag
=
true
)
{
$this
->
_integrityCheck
=
$flag
;
return
$this
;
}
/**
* Tests query to determine if expressions or aliases columns exist.
*
* @return boolean
*/
public
function
isReadOnly
()
{
$readOnly
=
false
;
$fields
=
$this
->
getPart
(
Zend_Db_Table_Select
::
COLUMNS
);
$cols
=
$this
->
_info
[
Zend_Db_Table_Abstract
::
COLS
];
if
(!
count
(
$fields
))
{
return
$readOnly
;
}
foreach
(
$fields
as
$columnEntry
)
{
$column
=
$columnEntry
[
1
];
$alias
=
$columnEntry
[
2
];
if
(
$alias
!==
null
)
{
$column
=
$alias
;
}
switch
(
true
)
{
case
(
$column
==
self
::
SQL_WILDCARD
):
break
;
case
(
$column
instanceof
Zend_Db_Expr
):
case
(!
in_array
(
$column
,
$cols
)):
$readOnly
=
true
;
break
2
;
}
}
return
$readOnly
;
}
/**
* Adds a FROM table and optional columns to the query.
*
* The table name can be expressed
*
* @param array|string|Zend_Db_Expr|Zend_Db_Table_Abstract $name The table name or an
associative array relating
table name to correlation
name.
* @param array|string|Zend_Db_Expr $cols The columns to select from this table.
* @param string $schema The schema name to specify, if any.
* @return Zend_Db_Table_Select This Zend_Db_Table_Select object.
*/
public
function
from
(
$name
,
$cols
=
self
::
SQL_WILDCARD
,
$schema
=
null
)
{
if
(
$name
instanceof
Zend_Db_Table_Abstract
)
{
$info
=
$name
->
info
();
$name
=
$info
[
Zend_Db_Table_Abstract
::
NAME
];
if
(
isset
(
$info
[
Zend_Db_Table_Abstract
::
SCHEMA
]))
{
$schema
=
$info
[
Zend_Db_Table_Abstract
::
SCHEMA
];
}
}
return
$this
->
joinInner
(
$name
,
null
,
$cols
,
$schema
);
}
/**
* Performs a validation on the select query before passing back to the parent class.
* Ensures that only columns from the primary Zend_Db_Table are returned in the result.
*
* @return string|null This object as a SELECT string (or null if a string cannot be produced)
*/
public
function
assemble
()
{
$fields
=
$this
->
getPart
(
Zend_Db_Table_Select
::
COLUMNS
);
$primary
=
$this
->
_info
[
Zend_Db_Table_Abstract
::
NAME
];
$schema
=
$this
->
_info
[
Zend_Db_Table_Abstract
::
SCHEMA
];
// If no fields are specified we assume all fields from primary table
if
(!
count
(
$fields
))
{
$this
->
from
(
$primary
,
self
::
SQL_WILDCARD
,
$schema
);
$fields
=
$this
->
getPart
(
Zend_Db_Table_Select
::
COLUMNS
);
}
$from
=
$this
->
getPart
(
Zend_Db_Table_Select
::
FROM
);
if
(
$this
->
_integrityCheck
!==
false
)
{
foreach
(
$fields
as
$columnEntry
)
{
list
(
$table
,
$column
)
=
$columnEntry
;
// Check each column to ensure it only references the primary table
if
(
$column
)
{
if
(!
isset
(
$from
[
$table
])
||
$from
[
$table
][
'tableName'
]
!=
$primary
)
{
require_once
'Zend/Db/Table/Select/Exception.php'
;
throw
new
Zend_Db_Table_Select_Exception
(
'Select query cannot join with another table'
);
}
}
}
}
return
parent
::
assemble
();
}
}
File Metadata
Details
Attached
Mime Type
text/x-php
Expires
Wed, Jul 8, 10:42 PM (1 d, 4 h)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
1051959
Default Alt Text
Select.php (6 KB)
Attached To
Mode
R4 syncroton
Attached
Detach File
Event Timeline
Log In to Comment