00001 <?php 00002 00018 class PGTStorageDB extends PGTStorage 00019 { 00032 var $_url=''; 00033 00041 function getURL() 00042 { 00043 return $this->_url; 00044 } 00045 00053 var $_link = null; 00054 00063 function getLink() 00064 { 00065 return $this->_link; 00066 } 00067 00075 var $_table = ''; 00076 00084 function getTable() 00085 { 00086 return $this->_table; 00087 } 00088 00089 // ######################################################################## 00090 // DEBUGGING 00091 // ######################################################################## 00092 00100 function getStorageType() 00101 { 00102 return "database"; 00103 } 00104 00111 function getStorageInfo() 00112 { 00113 return 'url=`'.$this->getURL().'\', table=`'.$this->getTable().'\''; 00114 } 00115 00116 // ######################################################################## 00117 // CONSTRUCTOR 00118 // ######################################################################## 00119 00134 function PGTStorageDB($cas_parent,$user,$password,$database_type,$hostname,$port,$database,$table) 00135 { 00136 phpCAS::traceBegin(); 00137 00138 // call the ancestor's constructor 00139 $this->PGTStorage($cas_parent); 00140 00141 if ( empty($database_type) ) $database_type = CAS_PGT_STORAGE_DB_DEFAULT_DATABASE_TYPE; 00142 if ( empty($hostname) ) $hostname = CAS_PGT_STORAGE_DB_DEFAULT_HOSTNAME; 00143 if ( $port==0 ) $port = CAS_PGT_STORAGE_DB_DEFAULT_PORT; 00144 if ( empty($database) ) $database = CAS_PGT_STORAGE_DB_DEFAULT_DATABASE; 00145 if ( empty($table) ) $table = CAS_PGT_STORAGE_DB_DEFAULT_TABLE; 00146 00147 // build and store the PEAR DB URL 00148 $this->_url = $database_type.':'.'//'.$user.':'.$password.'@'.$hostname.':'.$port.'/'.$database; 00149 00150 // XXX should use setURL and setTable 00151 phpCAS::traceEnd(); 00152 } 00153 00154 // ######################################################################## 00155 // INITIALIZATION 00156 // ######################################################################## 00157 00163 function init() 00164 { 00165 phpCAS::traceBegin(); 00166 // if the storage has already been initialized, return immediatly 00167 if ( $this->isInitialized() ) 00168 return; 00169 // call the ancestor's method (mark as initialized) 00170 parent::init(); 00171 00172 //include phpDB library (the test was introduced in release 0.4.8 for 00173 //the integration into Tikiwiki). 00174 if (!class_exists('DB')) { 00175 include_once('DB.php'); 00176 } 00177 00178 // try to connect to the database 00179 $this->_link = DB::connect($this->getURL()); 00180 if ( DB::isError($this->_link) ) { 00181 phpCAS::error('could not connect to database ('.DB::errorMessage($this->_link).')'); 00182 } 00183 var_dump($this->_link); 00184 phpCAS::traceBEnd(); 00185 } 00186 00188 } 00189 00190 ?>