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