00001 <?php
00012 abstract class ModelBase extends SDatabaseModel {
00013 public static $DB_INFO = array(
00014
00015 0 => array(
00016 'host' => 'mysql-be-yes-i-really-mean-prod.shodor.org',
00017 'user' => 'adm_sdr',
00018 'name' => 'db_sdr'
00019 ),
00020 'adm_sdr' => 'S9W6FMTbdJaR',
00021 'submit_sdr' => '3KnNwmUs'
00022 );
00023
00024 public static $DEPENDENCIES = array(
00025 'SDRVersionFieldValue' => array(
00026 'SDRValue' => 'valueId',
00027 'SDRField' => 'fieldId',
00028 'SDRVersion' => 'versionId'
00029 ),
00030 'SDRDateValue' => array(
00031 'SDRValue' => 'valueId'
00032 ),
00033 'SDRFieldValue' => array(
00034 'SDRValue' => 'valueId',
00035 'SDRField' => 'fieldId'
00036 ),
00037 'SDRVersionCache' => array(
00038 'SDRResource' => 'cserdId',
00039 'SDRVersion' => 'versionId'
00040 ),
00041 'SDRSearchWordCount' => array(
00042 'SDRResource' => 'cserdId',
00043 'SDRField' => 'fieldId',
00044 'SDRSearchWord' => 'searchWordId'
00045 ),
00046 'SDRResourceCache' => array(
00047 'SDRVersionCache' => 'pendingVersionId'
00048 ),
00049 'SDRTextValue' => array(
00050 'SDRValue' => 'valueId'
00051 ),
00052 'SDRProjectField' => array(
00053 'SDRProject' => 'projectId',
00054 'SDRField' => 'fieldId'
00055 ),
00056 'SDRIntValue' => array(
00057 'SDRValue' => 'valueId'
00058 ),
00059 'SDRVersion' => array(
00060 'SDRResource' => 'cserdId',
00061 'SDRAgent' => 'modifiedAgentId'
00062 ),
00063 'SDRResource' => array(
00064 'SDRProject' => 'primaryProject'
00065 ),
00066 'SDRResourceProject' => array(
00067 'SDRResource' => 'cserdId',
00068 'SDRProject' => 'projectId'
00069 )
00070 );
00071
00072 public static $REVERSE_DEPENDENCIES = array(
00073 'SDRVersionCache' => array(
00074 'SDRResourceCache' => 'pendingVersionId'
00075 ),
00076 'SDRVersion' => array(
00077 'SDRVersionFieldValue' => 'versionId',
00078 'SDRVersionCache' => 'versionId'
00079 ),
00080 'SDRAgent' => array(
00081 'SDRVersion' => 'modifiedAgentId'
00082 ),
00083 'SDRValue' => array(
00084 'SDRVersionFieldValue' => 'valueId',
00085 'SDRDateValue' => 'valueId',
00086 'SDRFieldValue' => 'valueId',
00087 'SDRTextValue' => 'valueId',
00088 'SDRIntValue' => 'valueId'
00089 ),
00090 'SDRResource' => array(
00091 'SDRVersionCache' => 'cserdId',
00092 'SDRSearchWordCount' => 'cserdId',
00093 'SDRResourceProject' => 'cserdId',
00094 'SDRVersion' => 'cserdId'
00095 ),
00096 'SDRProject' => array(
00097 'SDRResource' => 'primaryProject',
00098 'SDRResourceProject' => 'projectId',
00099 'SDRProjectField' => 'projectId'
00100 ),
00101 'SDRField' => array(
00102 'SDRVersionFieldValue' => 'fieldId',
00103 'SDRFieldValue' => 'fieldId',
00104 'SDRSearchWordCount' => 'fieldId',
00105 'SDRProjectField' => 'fieldId'
00106 ),
00107 'SDRSearchWord' => array(
00108 'SDRSearchWordCount' => 'searchWordId'
00109 )
00110 );
00111
00112 public function __construct() {
00113 parent::__construct();
00114
00115 $this->registerDBI(self::getDBI());
00116
00117
00118 }
00119
00143 public static function init($user = false, $server = false) {
00144 global $sdr_DB_INFO;
00145
00146 if(isset($GLOBALS['sdr_DB_INFO'])) {
00147 self::$DB_INFO = array_merge(self::$DB_INFO, $GLOBALS['sdr_DB_INFO']);
00148 if(isset($GLOBALS['sdr_DB_INFO'][0])) {
00149 self::$DB_INFO[0] = array_merge(self::$DB_INFO[0], $GLOBALS['sdr_DB_INFO'][0]);
00150 unset(self::$DB_INFO[1]);
00151 }
00152 }
00153
00154 if($user === false) {
00155 if(isset($GLOBALS['sdr_DB_USER']))
00156 $user = $GLOBALS['sdr_DB_USER'];
00157 else
00158 $user = self::$DB_INFO[0]['user'];
00159 }
00160
00161 if(!isset(self::$DB_INFO[$user])) {
00162 self::setStaticError('Unknown database user "' . $user . '" given!');
00163 return false;
00164 }
00165
00166 $pass = self::$DB_INFO[$user];
00167
00168 if($server === false) {
00169 if(isset($GLOBALS['sdr_DB_SERVER']))
00170 $server = $GLOBALS['sdr_DB_SERVER'];
00171 else
00172 $server = self::$DB_INFO[0]['host'];
00173 }
00174
00175 $name = self::$DB_INFO[0]['name'];
00176
00177 new DBI2('sdr', $server, $name, $user, $pass);
00178
00179
00180
00181 return true;
00182 }
00183
00192 public static function getDBI() {
00193 $dbi = DBI2::getDBI('sdr');
00194 if(!$dbi) {
00195 if(!self::init())
00196 return null;
00197 $dbi = DBI2::getDBI('sdr');
00198 }
00199 return $dbi;
00200 }
00201 }
00202
00203 ?>