Documentation is available at PEARDBData_Strategy.php
<?php /* ************************************************** Class: PEARDBData_Strategy.php ************************************************** Author: Tsiavos Chris <jaames@freemail.gr> Date: October 2004 **************************************************/ /** *Includes the DataStrategy Interface */ require_once("DataStrategy_Interface.php"); /** *Includes the PEAR DB class */ require_once("DB.php"); /** *Strategy for importing chart data from databases *@author Tsiavos Chris <jaames@freemail.gr> *@uses PEAR DB Abstraction Layer http://pear.php.net *@license http://opensource.org/licenses/gpl-license.php GNU Public License */ class PEARDBData_Strategy implements DataStrategy_Interface { private $PEAR_DB; private $DB_Type; private $DB_Username; private $DB_Passwd; private $DB_Host; private $DB_Name; private $DB_Table; private $Field_GroupName; private $Field_ItemName; private $Field_ItemValue; /** *Initializes the strategy object *@param string[assoc] $Params $Params["DB_Type"]<br/> * $Params["DB_Username"]<br/> * $Params["DB_Passwd"]<br/> * $Params["DB_Host"]<br/> * $Params["DB_Name"]<br/><br/> * $Params["Field_GroupName"]<br/> * $Params["Field_ItemName"]<br/> * $Params["Field_ItemValue"] */ public function initialize($params=NULL) { $this->DB_Type=$params["DB_Type"]; $this->DB_Username=$params["DB_Username"]; $this->DB_Passwd=$params["DB_Passwd"]; $this->DB_Host=$params["DB_Host"]; $this->DB_Name=$params["DB_Name"]; $this->Field_GroupName=$params["Field_GroupName"]; $this->Field_ItemName=$params["Field_ItemName"]; $this->Field_ItemValue=$params["Field_ItemValue"]; $this->PEAR_DB=DB::connect($this->DB_Type."://".$this->DB_Username.":".$this->DB_Passwd."@".$this->DB_Host."/".$this->DB_Name); if (DB::isError($this->PEAR_DB)) throw new DataStrategy_Exception("PEARDBData_Strategy: ".$this->PEAR_DB->getMessage()); } public function perform($params=NULL) { $Query=$params["Query"]; $DB_RecordSet=$this->PEAR_DB->getAll($Query,DB_FETCHMODE_ASSOC); if (DB::isError($DB_RecordSet)) throw new DataStrategy_Exception("PEARDBData_Strategy: ".$DB_RecordSet->getMessage()); $Groups=array(); $GroupsName=array(); for ($Record=0;$Record<count($DB_RecordSet);$Record++) { if (!in_array($DB_RecordSet[$Record][$this->Field_GroupName],$GroupsName)) array_push($GroupsName,$DB_RecordSet[$Record][$this->Field_GroupName]); } $GroupItemsNum=count($DB_RecordSet)/count($GroupsName); $CurrentRecord=0; for ($Group=0;$Group<count($GroupsName);$Group++) { $Groups[$Group]=new Group(); $Groups[$Group]->GroupName=$GroupsName[$Group]; for ($Record=$CurrentRecord;$Record<($CurrentRecord+$GroupItemsNum);$Record++) { $Groups[$Group]->GroupItems[$Record-$CurrentRecord]=new GroupItem(); $Groups[$Group]->GroupItems[$Record-$CurrentRecord]->ItemName=$DB_RecordSet[$Record][$this->Field_ItemName]; $Groups[$Group]->GroupItems[$Record-$CurrentRecord]->ItemValue=$DB_RecordSet[$Record][$this->Field_ItemValue]; } $CurrentRecord+=$GroupItemsNum; } return $Groups; } public function finalize() { $this->PEAR_DB->disconnect(); } } ?>