[ class tree: phpchartPlus ] [ index: phpchartPlus ] [ all elements ]

Source for file PEARDBData_Strategy.php

Documentation is available at PEARDBData_Strategy.php

  1. <?php
  2.  
  3. /*
  4. **************************************************
  5. Class: PEARDBData_Strategy.php
  6. **************************************************
  7. Author: Tsiavos Chris <jaames@freemail.gr>
  8. Date: October 2004
  9. **************************************************/
  10.  
  11. /**
  12. *Includes the DataStrategy Interface
  13. */
  14. require_once("DataStrategy_Interface.php");
  15.  
  16. /**
  17. *Includes the PEAR DB class
  18. */
  19. require_once("DB.php");
  20.  
  21. /**
  22. *Strategy for importing chart data from databases
  23. *@author Tsiavos Chris <jaames@freemail.gr>
  24. *@uses PEAR DB Abstraction Layer http://pear.php.net
  25. *@license http://opensource.org/licenses/gpl-license.php GNU Public License
  26. */
  27.  
  28. class PEARDBData_Strategy implements DataStrategy_Interface {
  29.  
  30. private $PEAR_DB;
  31. private $DB_Type;
  32. private $DB_Username;
  33. private $DB_Passwd;
  34. private $DB_Host;
  35. private $DB_Name;
  36. private $DB_Table;
  37. private $Field_GroupName;
  38. private $Field_ItemName;
  39. private $Field_ItemValue;
  40. /**
  41. *Initializes the strategy object
  42. *@param string[assoc] $Params $Params["DB_Type"]<br/>
  43. * $Params["DB_Username"]<br/>
  44. * $Params["DB_Passwd"]<br/>
  45. * $Params["DB_Host"]<br/>
  46. * $Params["DB_Name"]<br/><br/>
  47. * $Params["Field_GroupName"]<br/>
  48. * $Params["Field_ItemName"]<br/>
  49. * $Params["Field_ItemValue"]
  50. */
  51. public function initialize($params=NULL) {
  52. $this->DB_Type=$params["DB_Type"];
  53. $this->DB_Username=$params["DB_Username"];
  54. $this->DB_Passwd=$params["DB_Passwd"];
  55. $this->DB_Host=$params["DB_Host"];
  56. $this->DB_Name=$params["DB_Name"];
  57. $this->Field_GroupName=$params["Field_GroupName"];
  58. $this->Field_ItemName=$params["Field_ItemName"];
  59. $this->Field_ItemValue=$params["Field_ItemValue"];
  60. $this->PEAR_DB=DB::connect($this->DB_Type."://".$this->DB_Username.":".$this->DB_Passwd."@".$this->DB_Host."/".$this->DB_Name);
  61. if (DB::isError($this->PEAR_DB))
  62. throw new DataStrategy_Exception("PEARDBData_Strategy: ".$this->PEAR_DB->getMessage());
  63. }
  64. public function perform($params=NULL) {
  65. $Query=$params["Query"];
  66. $DB_RecordSet=$this->PEAR_DB->getAll($Query,DB_FETCHMODE_ASSOC);
  67. if (DB::isError($DB_RecordSet))
  68. throw new DataStrategy_Exception("PEARDBData_Strategy: ".$DB_RecordSet->getMessage());
  69. $Groups=array();
  70. $GroupsName=array();
  71. for ($Record=0;$Record<count($DB_RecordSet);$Record++) {
  72. if (!in_array($DB_RecordSet[$Record][$this->Field_GroupName],$GroupsName))
  73. array_push($GroupsName,$DB_RecordSet[$Record][$this->Field_GroupName]);
  74. }
  75. $GroupItemsNum=count($DB_RecordSet)/count($GroupsName);
  76. $CurrentRecord=0;
  77. for ($Group=0;$Group<count($GroupsName);$Group++) {
  78. $Groups[$Group]=new Group();
  79. $Groups[$Group]->GroupName=$GroupsName[$Group];
  80. for ($Record=$CurrentRecord;$Record<($CurrentRecord+$GroupItemsNum);$Record++) {
  81. $Groups[$Group]->GroupItems[$Record-$CurrentRecord]=new GroupItem();
  82. $Groups[$Group]->GroupItems[$Record-$CurrentRecord]->ItemName=$DB_RecordSet[$Record][$this->Field_ItemName];
  83. $Groups[$Group]->GroupItems[$Record-$CurrentRecord]->ItemValue=$DB_RecordSet[$Record][$this->Field_ItemValue];
  84. }
  85. $CurrentRecord+=$GroupItemsNum;
  86. }
  87. return $Groups;
  88. }
  89. public function finalize() {
  90. $this->PEAR_DB->disconnect();
  91. }
  92.  
  93.  
  94. }
  95.  
  96. ?>

Documentation generated on Sun, 3 Oct 2004 14:59:22 +0300 by phpDocumentor 1.3.0RC3