[ Index ]
 

Code source de CMS made simple 1.0.5

Accédez au Source d'autres logiciels libresSoutenez Angelica Josefina !

title

Body

[fermer]

/lib/adodb_lite/adodbSQL_drivers/postgres7/ -> postgres7_date_module.inc (source)

   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 = '&nbsp;';
  18      var $emptyTimeStamp = '&nbsp;';
  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 = '&nbsp;'; /// what to display when $time==0

 274      var $emptyDate = '&nbsp;'; /// 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  ?>


Généré le : Tue Apr 3 18:50:37 2007 par Balluche grâce à PHPXref 0.7