Viewing file: dataresult.php (2.62 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php
/**
* Abstract class, parent for QueryResult and ArrayResult
*/
class DataResult
{
// list of column names in the fetched query
protected $fieldNames = array();
protected $upperMap = array();
protected $fieldMap = array();
/**
* Field substitutions
* @var Array of "source field name" => "output field name"
*
*/
protected $fieldSubs = array();
protected $data;
function __construct() {}
/** abstract methods */
public function getQueryHandle() { return null; }
public function fetchAssoc() { return null; }
public function fetchNumeric() { return null; }
public function closeQuery() {}
public function numFields() { return 0; }
public function fieldName( $offset ) { return ""; }
public function seekRecord( $n ) {}
public function eof() { return true; }
public function next() {}
public function getData() {}
public function getNumData() {}
protected function prepareRecord() { return false; }
protected function fillColumnNames() {}
/** end abstract methods */
/** utility methods */
protected function numericToAssoc( $data ) {
if( !$data ) {
return $data;
}
$ret = array();
$nFields = $this->numFields();
for( $i = 0; $i < $nFields; ++$i ) {
$ret[ $this->fieldNames[ $i ] ] = $data[ $i ];
}
if( $this->fieldSubs ) {
return $this->substituteField( $ret );
}
return $ret;
}
protected function assocToNumeric( $data ) {
if( !$data ) {
return $data;
}
$ret = array();
$nFields = $this->numFields();
for( $i = 0; $i < $nFields; ++$i )
$ret[ $i ] = $data[ $this->fieldNames[ $i ] ];
return $ret;
}
public function value( $field )
{
if( !$this->prepareRecord() )
return null;
if( is_int($field) )
return $this->data[ $field ];
if( isset( $this->fieldMap[ $field ] ) )
return $this->data[ $this->fieldMap[ $field ] ];
if( isset( $this->upperMap[ strtoupper( $field ) ] ) )
return $this->data[ $this->upperMap[ strtoupper( $field ) ] ];
return null;
}
public function seekPage( $pageSize, $page )
{
$this->seekRecord( $pageSize * ( $page - 1 ) );
}
/**
* @param Array
*/
function setFieldSubstitutions( $fieldSubs ) {
$this->fieldSubs = $fieldSubs;
}
/**
* change field names according to subst
* @param Array
* @return Array
*/
function substituteFields( &$data ) {
if( !$this->fieldSubs )
return;
$ret = array();
foreach( $data as $field => $val ) {
if( $this->fieldSubs[ $field ] ) {
$ret[ $this->fieldSubs[ $field ] ] = $val;
} else {
$ret[ $field ] = $val;
}
}
return $ret;
}
}
?>
|