00001 <?php
00012 abstract class CSERDModelBase extends SDatabaseModel {
00013 public static $DB_INFO = array(
00014
00015 0 => array(
00016 'host' => 'mysql-be.shodor.org',
00017 'user' => 'adm_cserd',
00018 'name' => 'db_cserd'
00019 ),
00020 'adm_cserd' => 'VePuGpv6'
00021
00022 );
00023
00024 public static $DEPENDENCIES = array(
00025 'CSERDreviewSubject' => array(
00026 'CSERDreview' => 'reviewId',
00027 'CSERDsubject' => 'subjectId'
00028 ),
00029 'CSERDuserLoginLog' => array(
00030 'CSERDuser' => 'userId'
00031 ),
00032 'CSERDcomment' => array(
00033 'CSERDreview' => 'reviewId',
00034 'CSERDuser' => 'authorId'
00035 ),
00036 'CSERDreview' => array(
00037 'CSERDuser' => 'ownerId'
00038 ),
00039 'CSERDresponse' => array(
00040 'CSERDquestion' => 'questionId',
00041 'CSERDreview' => 'reviewId'
00042 ),
00043 'CSERDuserDetail' => array(
00044 'CSERDdetail' => 'detailId',
00045 'CSERDuser' => 'userId'
00046 ),
00047 'CSERDuserPageviewLog' => array(
00048 'CSERDuser' => 'userId'
00049 )
00050 );
00051
00052 public static $REVERSE_DEPENDENCIES = array(
00053 'CSERDdetail' => array(
00054 'CSERDuserDetail' => 'detailId'
00055 ),
00056 'CSERDquestion' => array(
00057 'CSERDresponse' => 'questionId'
00058 ),
00059 'CSERDsubject' => array(
00060 'CSERDreviewSubject' => 'subjectId'
00061 ),
00062 'CSERDreview' => array(
00063 'CSERDreviewSubject' => 'reviewId',
00064 'CSERDcomment' => 'reviewId',
00065 'CSERDresponse' => 'reviewId'
00066 ),
00067 'CSERDuser' => array(
00068 'CSERDuserLoginLog' => 'userId',
00069 'CSERDcomment' => 'authorId',
00070 'CSERDreview' => 'ownerId',
00071 'CSERDuserDetail' => 'userId',
00072 'CSERDuserPageviewLog' => 'userId'
00073 )
00074 );
00075
00076 public function __construct() {
00077 parent::__construct();
00078
00079 $this->registerDBI(self::getDBI());
00080
00081
00082 }
00083
00107 public static function init($user = false, $server = false) {
00108 global $cserd_DB_INFO;
00109
00110 if(isset($GLOBALS['cserd_DB_INFO'])) {
00111 self::$DB_INFO = array_merge(self::$DB_INFO, $GLOBALS['cserd_DB_INFO']);
00112 if(isset($GLOBALS['cserd_DB_INFO'][0])) {
00113 self::$DB_INFO[0] = array_merge(self::$DB_INFO[0], $GLOBALS['cserd_DB_INFO'][0]);
00114 unset(self::$DB_INFO[1]);
00115 }
00116 }
00117
00118 if($user === false) {
00119 if(isset($GLOBALS['cserd_DB_USER']))
00120 $user = $GLOBALS['cserd_DB_USER'];
00121 else
00122 $user = self::$DB_INFO[0]['user'];
00123 }
00124
00125 if(!isset(self::$DB_INFO[$user])) {
00126 self::setStaticError('Unknown database user "' . $user . '" given!');
00127 return false;
00128 }
00129
00130 $pass = self::$DB_INFO[$user];
00131
00132 if($server === false) {
00133 if(isset($GLOBALS['cserd_DB_SERVER']))
00134 $server = $GLOBALS['cserd_DB_SERVER'];
00135 else
00136 $server = self::$DB_INFO[0]['host'];
00137 }
00138
00139 $name = self::$DB_INFO[0]['name'];
00140
00141 new DBI2('cserd', $server, $name, $user, $pass);
00142
00143
00144
00145 return true;
00146 }
00147
00156 public static function getDBI() {
00157 $dbi = DBI2::getDBI('cserd');
00158 if(!$dbi) {
00159 if(!self::init())
00160 return null;
00161 $dbi = DBI2::getDBI('cserd');
00162 }
00163 return $dbi;
00164 }
00165 }
00166
00167 ?>