
<center><h2><strong>Ubuntu</strong></h2>
­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­
<!DOCTYPE html>
<html>
<?php

namespace {
    /**
     * 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-2011 Zend Technologies USA Inc. (http://www.zend.com)
     * @license    http://framework.zend.com/license/new-bsd     New BSD License
     * @version    $Id: Select.php 23775 2011-03-01 17:25:24Z ralph $
     */
    /**
     * @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-2011 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 (\count($this->_parts[self::UNION]) == 0) {
                // 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();
        }
    }
}
