[ Index ] |
|
Code source de CMS made simple 1.0.5 |
1 <?php 2 /** 3 * ADOdb Lite Date Module for Postgres 7 4 * 5 */ 6 7 if (!defined('TIMESTAMP_FIRST_YEAR')) define('TIMESTAMP_FIRST_YEAR',100); 8 9 @include(ADODB_DIR . '/adodb-time.inc.php'); 10 11 eval('class postgres7_date_EXTENDER extends '. $last_module . '_ADOConnection { }'); 12 13 class postgres7_date_ADOConnection extends postgres7_date_EXTENDER 14 { 15 var $fmtDate = "'Y-m-d'"; // used by DBDate() as the default date format used by the database 16 var $fmtTimeStamp = "'Y-m-d H:i:s'"; // used by DBTimeStamp as the default timestamp fmt. 17 var $emptyDate = ' '; 18 var $emptyTimeStamp = ' '; 19 var $sysDate = "CURRENT_DATE"; 20 var $sysTimeStamp = "CURRENT_TIMESTAMP"; 21 var $isoDates = true; /// accepts dates in ISO format 22 23 function Time() 24 { 25 $rs =& $this->_Execute("select $this->sysTimeStamp"); 26 if ($rs && !$rs->EOF) 27 return $this->UnixTimeStamp(reset($rs->fields)); 28 29 return false; 30 } 31 32 function OffsetDate($dayFraction, $date=false) 33 { 34 if (!$date) 35 $date = $this->sysDate; 36 else if (strncmp($date,"'",1) == 0) { 37 $len = strlen($date); 38 if (10 <= $len && $len <= 12) 39 $date = 'date ' . $date; 40 else $date = 'timestamp ' . $date; 41 } 42 return "($date+interval'$dayFraction days')"; 43 } 44 45 function SetDateLocale($locale = 'En') 46 { 47 $this->locale = $locale; 48 switch (strtoupper($locale)) 49 { 50 case 'EN': 51 $this->fmtDate="'Y-m-d'"; 52 $this->fmtTimeStamp = "'Y-m-d H:i:s'"; 53 break; 54 55 case 'US': 56 $this->fmtDate = "'m-d-Y'"; 57 $this->fmtTimeStamp = "'m-d-Y H:i:s'"; 58 break; 59 60 case 'NL': 61 case 'FR': 62 case 'RO': 63 case 'IT': 64 $this->fmtDate="'d-m-Y'"; 65 $this->fmtTimeStamp = "'d-m-Y H:i:s'"; 66 break; 67 68 case 'GE': 69 $this->fmtDate="'d.m.Y'"; 70 $this->fmtTimeStamp = "'d.m.Y H:i:s'"; 71 break; 72 73 default: 74 $this->fmtDate="'Y-m-d'"; 75 $this->fmtTimeStamp = "'Y-m-d H:i:s'"; 76 break; 77 } 78 } 79 80 function DBDate($date) 81 { 82 if (empty($date) && $date !== 0) 83 return 'null'; 84 85 if (is_string($date) && !is_numeric($date)) { 86 if ($date === 'null' || strncmp($date, "'", 1) === 0) 87 return $date; 88 89 if ($this->isoDates) 90 return "'$date'"; 91 92 $date = $this->UnixDate($date); 93 } 94 95 return adodb_date($this->fmtDate,$date); 96 } 97 98 function DBTimeStamp($timestamp) 99 { 100 if (empty($timestamp) && $timestamp !== 0) 101 return 'null'; 102 103 # strlen(14) allows YYYYMMDDHHMMSS format 104 if (!is_string($timestamp) || (is_numeric($timestamp) && strlen($timestamp)<14)) 105 return adodb_date($this->fmtTimeStamp, $timestamp); 106 107 if ($timestamp === 'null') 108 return $timestamp; 109 110 if ($this->isoDates && strlen($timestamp) !== 14) 111 return "'$timestamp'"; 112 113 $timestamp = $this->UnixTimeStamp($timestamp); 114 return adodb_date($this->fmtTimeStamp, $timestamp); 115 } 116 117 function UnixDate($v) 118 { 119 if (is_object($v)) { 120 // odbtp support 121 //( [year] => 2004 [month] => 9 [day] => 4 [hour] => 12 [minute] => 44 [second] => 8 [fraction] => 0 ) 122 return adodb_mktime($v->hour, $v->minute, $v->second, $v->month, $v->day, $v->year); 123 } 124 125 if (is_numeric($v) && strlen($v) !== 8) 126 return $v; 127 128 if (!preg_match( "|^([0-9]{4})[-/\.]?([0-9]{1,2})[-/\.]?([0-9]{1,2})|", ($v), $rr)) 129 return false; 130 131 if ($rr[1] <= TIMESTAMP_FIRST_YEAR) 132 return 0; 133 134 // h-m-s-MM-DD-YY 135 return adodb_mktime(0, 0, 0, $rr[2], $rr[3], $rr[1]); 136 } 137 138 function UnixTimeStamp($v) 139 { 140 if (is_object($v)) { 141 // odbtp support 142 //( [year] => 2004 [month] => 9 [day] => 4 [hour] => 12 [minute] => 44 [second] => 8 [fraction] => 0 ) 143 return adodb_mktime($v->hour, $v->minute, $v->second, $v->month, $v->day, $v->year); 144 } 145 146 if (!preg_match("|^([0-9]{4})[-/\.]?([0-9]{1,2})[-/\.]?([0-9]{1,2})[ ,-]*(([0-9]{1,2}):?([0-9]{1,2}):?([0-9\.]{1,4}))?|", ($v), $rr)) 147 return false; 148 149 if ($rr[1] <= TIMESTAMP_FIRST_YEAR && $rr[2]<= 1) 150 return 0; 151 152 // h-m-s-MM-DD-YY 153 if (!isset($rr[5])) 154 return adodb_mktime(0, 0, 0, $rr[2], $rr[3], $rr[1]); 155 else return adodb_mktime($rr[5], $rr[6], $rr[7], $rr[2], $rr[3], $rr[1]); 156 } 157 158 function UserDate($v, $fmt='Y-m-d', $gmt=false) 159 { 160 $tt = $this->UnixDate($v); 161 162 // $tt == -1 if pre TIMESTAMP_FIRST_YEAR 163 if (($tt === false || $tt == -1) && $v != false) 164 return $v; 165 else if ($tt == 0) 166 return $this->emptyDate; 167 else if ($tt == -1) { // pre-TIMESTAMP_FIRST_YEAR 168 } 169 170 return ($gmt) ? adodb_gmdate($fmt, $tt) : adodb_date($fmt, $tt); 171 } 172 173 function UserTimeStamp($v, $fmt='Y-m-d H:i:s', $gmt=false) 174 { 175 if (!isset($v)) 176 return $this->emptyTimeStamp; 177 178 # strlen(14) allows YYYYMMDDHHMMSS format 179 if (is_numeric($v) && strlen($v)<14) 180 return ($gmt) ? adodb_gmdate($fmt,$v) : adodb_date($fmt,$v); 181 182 $tt = $this->UnixTimeStamp($v); 183 // $tt == -1 if pre TIMESTAMP_FIRST_YEAR 184 if (($tt === false || $tt == -1) && $v != false) 185 return $v; 186 187 if ($tt == 0) 188 return $this->emptyTimeStamp; 189 else return ($gmt) ? adodb_gmdate($fmt,$tt) : adodb_date($fmt,$tt); 190 } 191 192 function SQLDate($fmt, $col=false) 193 { 194 if (!$col) 195 $col = $this->sysTimeStamp; 196 197 $s = 'TO_CHAR('.$col.",'"; 198 $len = strlen($fmt); 199 for ($i=0; $i < $len; $i++) { 200 $ch = $fmt[$i]; 201 switch($ch) { 202 case 'Y': 203 case 'y': 204 $s .= 'YYYY'; 205 break; 206 207 case 'Q': 208 case 'q': 209 $s .= 'Q'; 210 break; 211 212 case 'M': 213 $s .= 'Mon'; 214 break; 215 216 case 'm': 217 $s .= 'MM'; 218 break; 219 220 case 'D': 221 case 'd': 222 $s .= 'DD'; 223 break; 224 225 case 'H': 226 $s.= 'HH24'; 227 break; 228 229 case 'h': 230 $s .= 'HH'; 231 break; 232 233 case 'i': 234 $s .= 'MI'; 235 break; 236 237 case 's': 238 $s .= 'SS'; 239 break; 240 241 case 'a': 242 case 'A': 243 $s .= 'AM'; 244 break; 245 246 case 'w': 247 $s .= 'D'; 248 break; 249 250 case 'l': 251 $s .= 'DAY'; 252 break; 253 254 default: 255 // handle escape characters... 256 if ($ch == '\\') { 257 $i++; 258 $ch = substr($fmt,$i,1); 259 } 260 if (strpos('-/.:;, ',$ch) !== false) 261 $s .= $ch; 262 else $s .= '"'.$ch.'"'; 263 } 264 } 265 return $s. "')"; 266 } 267 } 268 269 eval('class postgres7_date_resultset_EXTENDER extends '. $last_module . '_ResultSet { }'); 270 271 class postgres7_date_ResultSet extends postgres7_date_resultset_EXTENDER 272 { 273 var $emptyTimeStamp = ' '; /// what to display when $time==0 274 var $emptyDate = ' '; /// what to display when $time==0 275 var $datetime = false; 276 277 function UserTimeStamp($v, $fmt='Y-m-d H:i:s') 278 { 279 if (is_numeric($v) && strlen($v)<14) 280 return adodb_date($fmt,$v); 281 282 $tt = $this->UnixTimeStamp($v); 283 // $tt == -1 if pre TIMESTAMP_FIRST_YEAR 284 if (($tt === false || $tt == -1) && $v != false) 285 return $v; 286 287 if ($tt === 0) 288 return $this->emptyTimeStamp; 289 else return adodb_date($fmt,$tt); 290 } 291 292 function UserDate($v,$fmt='Y-m-d') 293 { 294 $tt = $this->UnixDate($v); 295 // $tt == -1 if pre TIMESTAMP_FIRST_YEAR 296 if (($tt === false || $tt == -1) && $v != false) 297 return $v; 298 else if ($tt == 0) 299 return $this->emptyDate; 300 else if ($tt == -1) { // pre-TIMESTAMP_FIRST_YEAR 301 } 302 return adodb_date($fmt,$tt); 303 } 304 305 function UnixDate($v) 306 { 307 return postgres7_date_ADOConnection::UnixDate($v); 308 } 309 310 function UnixTimeStamp($v) 311 { 312 return postgres7_date_ADOConnection::UnixTimeStamp($v); 313 } 314 315 } 316 ?>
titre
Description
Corps
titre
Description
Corps
titre
Description
Corps
titre
Corps
Généré le : Tue Apr 3 18:50:37 2007 | par Balluche grâce à PHPXref 0.7 |