Ejemplo n.º 1
0
 /**
  * Constructs where statement for retrieving row(s).
  *
  * @param bool $useDirty
  * @return array
  */
 protected function _getWhereQuery($useDirty = true)
 {
     $where = array();
     $db = $this->_getTable()->getAdapter();
     $primaryKey = $this->_getPrimaryKeyValues($useDirty);
     $info = $this->_getTable()->info();
     $metadata = $info[Kwf_Db_Table::METADATA];
     // retrieve recently updated row using primary keys
     $where = array();
     foreach ($primaryKey as $column => $value) {
         $tableName = $db->quoteIdentifier($this->_table->getTableName(), true);
         $type = $metadata[$column]['DATA_TYPE'];
         $columnName = $db->quoteIdentifier($column, true);
         $where[] = $db->quoteInto("{$tableName}.{$columnName} = ?", $value, $type);
     }
     return $where;
 }
Ejemplo n.º 2
0
 /**
  * Performs a validation on the select query before passing back to the parent class.
  * Ensures that only columns from the primary Kwf_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(Kwf_Db_Table_Select::COLUMNS);
     $primary = $this->_table->getTableName();
     $schema = $this->_table->getSchemaName();
     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(Kwf_Db_Table_Select::COLUMNS);
         }
         $from = $this->getPart(Kwf_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) {
                         throw new Kwf_Exception('Select query cannot join with another table');
                     }
                 }
             }
         }
     }
     return parent::assemble();
 }