<?php
/**
* ÐлаÑÑ Data.
*
* @package energine
* @subpackage core
* @author dr.Pavka
* @copyright ColoCall 2006
* @version $Id: Data.class.php,v 1.4 2007/12/17 14:16:03 pavka Exp $
*/
//require_once('core/framework/Object.class.php');
//require_once('core/framework/Field.class.php');
/**
* ÐаннÑе.
*
* @package energine
* @subpackage core
*/
class Data extends Object {
/**
* @access private
* @var array Ð¿Ð¾Ð»Ñ Ð´Ð°Ð½Ð½ÑÑ
*/
private $fields = array();
/**
* @access private
* @var int колиÑеÑÑво полей даннÑÑ
*/
private $length = 0;
/**
* @access private
* @var int колиÑеÑÑво ÑÑÑок даннÑÑ
*/
private $rows = 0;
/**
* ÐонÑÑÑÑкÑÐ¾Ñ ÐºÐ»Ð°ÑÑа.
*
* @access public
* @return void
*/
public function __construct() {
parent::__construct();
}
/**
* ÐагÑÑÐ¶Ð°ÐµÑ Ð½Ð°Ð±Ð¾Ñ Ð´Ð°Ð½Ð½ÑÑ
, полÑÑеннÑÑ
из ÐÐ.
*
* @access public
* @param array $data
* @return void
* @see DBA::selectRequest()
*/
public function load(array $data) {
$data = inverseDBResult($data);
foreach ($data as $fieldName => $fieldValues) {
$fieldObject = new Field($fieldName);
$fieldObject->setData($fieldValues);
$this->addField($fieldObject);
}
}
/**
* ÐобавлÑÐµÑ ÑÑÑÐ¾ÐºÑ Ð´Ð°Ð½Ð½ÑÑ
ко вÑем полÑм.
*
* @access public
* @param array $rowData
* @return void
*/
public function addRow(array $rowData) {
foreach ($rowData as $fieldName => $fieldValue) {
$field = $this->getFieldByName($fieldName);
if ($field) {
$field->addRowData($fieldValue);
}
}
}
/**
* УдалÑÐµÑ ÑÑÑÐ¾ÐºÑ Ð´Ð°Ð½Ð½ÑÑ
из вÑеÑ
полей.
*
* @access public
* @param int $rowIndex
* @return void
*/
public function removeRow($rowIndex) {
foreach ($this->fields as $field) {
$field->removeRowData($rowIndex);
}
}
/**
* ÐзменÑÐµÑ ÑÑÑÐ¾ÐºÑ Ð´Ð°Ð½Ð½ÑÑ
Ð´Ð»Ñ Ð²ÑеÑ
полей.
*
* @access public
* @param int $rowIndex
* @param array $rowData
* @return boolean
*/
public function changeRow($rowIndex, array $rowData) {
$result = false;
foreach ($rowData as $fieldName => $fieldValue) {
$field = $this->getFieldByName($fieldName);
if ($field) {
$result = $field->changeRowData($rowIndex, $fieldValue);
}
}
return $result;
}
/**
* ÐобавлÑÐµÑ Ð¿Ð¾Ð»Ðµ даннÑÑ
.
*
* @access public
* @param Field $field
* @return void
*/
public function addField(Field $field) {
$this->fields[$field->getName()] = $field;
$this->length++;
}
/**
* УдалÑÐµÑ Ð¿Ð¾Ð»Ðµ даннÑÑ
.
*
* @access public
* @param Field $field
* @return void
*/
public function removeField(Field $field) {
if (isset($this->fields[$field->getName()])) {
unset($this->fields[$field->getName()]);
$this->length--;
}
}
/**
* ÐозвÑаÑÐ°ÐµÑ Ð¿Ð¾Ð»Ðµ Ñ ÑказаннÑм именем.
*
* @access public
* @param string $name
* @return Field
*/
public function getFieldByName($name) {
$field = false;
if (isset($this->fields[$name])) {
$field = $this->fields[$name];
}
return $field;
}
/**
* ÐозвÑаÑÐ°ÐµÑ Ð½Ð°Ð±Ð¾Ñ Ð¿Ð¾Ð»ÐµÐ¹ даннÑÑ
.
*
* @access public
* @return array
*/
public function getFields() {
return $this->fields;
}
/**
* ÐозвÑаÑÐ°ÐµÑ ÐºÐ¾Ð»Ð¸ÑеÑÑво полей даннÑÑ
.
*
* @access public
* @return int
*/
public function getLength() {
return $this->length;
}
/**
* ÐозвÑаÑÐ°ÐµÑ ÐºÐ¾Ð»Ð¸ÑеÑÑво ÑÑÑок даннÑÑ
.
*
* @return int
* @access public
*/
public function getRowCount() {
if ($this->length > 0) {
$fieldNames = array_keys($this->fields);
$firstFieldName = $fieldNames[0];
$this->rows = $this->getFieldByName($firstFieldName)->getRowCount();
}
return $this->rows;
}
}