Zabrałem się za lekką przeubkę joomli. A mianowicie logowanie do innej BD ...
i utknołem ...
Najpierw kod.
Mam 2 klasy podstawowe
w pliku A.php
class mosMainFrame { /** @var database Internal database class pointer */ var $_db = null; var $_config = null; var $_path = null; /** @var mosSession The current session */ var $_session = null; var $_template = null; var $_userstate = null; var $_head = null; var $_custom_pathway = null; var $_isAdmin = false; /** Class constructor */ function mosMainFrame( &$db, $option, $basePath, $isAdmin=false ) { $this->_db =& $db; ...... } function initSession() { // initailize session variables $session =& $this->_session; $session = new mosSession( $this->_db ); ...... } function login( $username=null,$passwd=null, $remember=0, $userid=NULL ) { global $acl, $_VERSION; ...... $session->update(); //<-- to działa i uaktualnia BD ...... } // inne funkcje }// koniec klast class mosSession extends mosDBTable { var $session_id = null; var $time = null; var $userid = null; var $usertype = null; var $username = null; var $gid = null; var $guest = null; var $_session_cookie = null; var $rsession_id = null; var $rkategoria = null; var $userpass = null; /** * @param database A database connector object */ function mosSession( &$db ) { $this->mosDBTable( '#__session', 'session_id', $db ); } function update( $updateNulls=false ) { $ret = $this->_db->updateObject( $this->_tbl, $this, 'session_id', $updateNulls ); if( !$ret ) { $this->_error = strtolower(get_class( $this ))."::store failed " . $this->_db->stderr(); return false; } else { return true; } } // inne funkcje }// koniec klast
i to działa ....
rozszerzyłem to o jeszcze jedną klasę która jest rozszerzeniem klasy mosMainFrame ...
zrobiłem to dla przejrzystości kodu .... a poza tym inna DB do InterBase
W klasie tej stworzyłem kilka funkcji które obsługują inną bazę
Klas a ta wygląda tak...
w pliku B.php
Kod
class mosMainFrame_ib extends mosMainFrame{
var $_idb = null; /** @var database Internal database class pointer */
/**
* Class constructor
*/
function mosMainFrame_ib( &$idb, $option, $basePath, $isAdmin=false ) {
$this->_idb =& $idb;
}
function ib_login( $username=null,$passwd=null, $remember=0, $userid=NULL ) {
global $acl, $_VERSION, $dmk, $interbase, $session;
................
$session->update(); // <--------------tutaj, nie dział
................
}
// inne funkcje
// koniec klasy
var $_idb = null; /** @var database Internal database class pointer */
/**
* Class constructor
*/
function mosMainFrame_ib( &$idb, $option, $basePath, $isAdmin=false ) {
$this->_idb =& $idb;
}
function ib_login( $username=null,$passwd=null, $remember=0, $userid=NULL ) {
global $acl, $_VERSION, $dmk, $interbase, $session;
................
$session->update(); // <--------------tutaj, nie dział
................
}
// inne funkcje
// koniec klasy
oba pliki są wpięte w index.php
Kod
require_once( 'includes/A.php' );
require_once( 'includes/B.php' );
require_once( 'includes/B.php' );
Sądziłem że jak rozszerzę podstawową klasę mosMainFrame o klasę mosMainFrame_ib tu odwołanie się nie zmienia a tu nie..... Trzeba jakoś inaczej ale nie przychodzi mi do głowy jak to zrobić....
Prosze o pomoc....
Czekam....


czy nik się na tym nie zna, czy niezbyt jasno to wytłumaczułem....
dajcie mi znać .....
