| 
webmaster@0
 | 
     1 <?php | 
| 
webmaster@0
 | 
     2 class DataAccess { | 
| 
webmaster@0
 | 
     3   var $host; | 
| 
webmaster@0
 | 
     4   var $user; | 
| 
webmaster@0
 | 
     5   var $pass; | 
| 
webmaster@0
 | 
     6   var $db; | 
| 
webmaster@0
 | 
     7   var $arResult; | 
| 
webmaster@0
 | 
     8   var $query; | 
| 
webmaster@0
 | 
     9   var $connOpen; | 
| 
webmaster@0
 | 
    10   var $_nbQueries; | 
| 
webmaster@0
 | 
    11    | 
| 
webmaster@0
 | 
    12   var $infos; // Cache contenant les informations sur le visiteur | 
| 
webmaster@0
 | 
    13    | 
| 
webmaster@7
 | 
    14   function DataAccess($host=DB_HOST, $user=DB_USER, $pass=DB_PASSWORD) { | 
| 
webmaster@0
 | 
    15    $this->host=$host; | 
| 
webmaster@0
 | 
    16    $this->user=$user; | 
| 
webmaster@0
 | 
    17    $this->pass=$pass; | 
| 
webmaster@0
 | 
    18    $this->_nbQueries = 0; | 
| 
webmaster@0
 | 
    19    $this->Connect(); | 
| 
webmaster@0
 | 
    20  } | 
| 
webmaster@0
 | 
    21   | 
| 
webmaster@0
 | 
    22   function Connect($db=DB_NAME) { | 
| 
webmaster@0
 | 
    23    if($this->connOpen == 1) return; | 
| 
webmaster@0
 | 
    24    $this->db=$db; | 
| 
webmaster@0
 | 
    25    $this->connOpen=1; | 
| 
webmaster@0
 | 
    26    mysql_connect($this->host, $this->user, $this->pass); | 
| 
webmaster@0
 | 
    27    mysql_select_db($this->db); | 
| 
webmaster@0
 | 
    28   } | 
| 
webmaster@0
 | 
    29    | 
| 
webmaster@0
 | 
    30   function Query($query, $id=0) { | 
| 
webmaster@0
 | 
    31    $this->query=$query; | 
| 
webmaster@0
 | 
    32    if($this->connOpen != 1) $this->Connect(); | 
| 
webmaster@0
 | 
    33    $this->arResult[$id]=mysql_query($this->query); | 
| 
webmaster@0
 | 
    34    if($this->connOpen != 1) $this->Close(); | 
| 
webmaster@0
 | 
    35    if(@$num_rows=mysql_num_rows($this->arResult[$id])) | 
| 
webmaster@0
 | 
    36 	return $num_rows; | 
| 
webmaster@0
 | 
    37    else | 
| 
webmaster@0
 | 
    38 	return 0; | 
| 
webmaster@0
 | 
    39   } | 
| 
webmaster@0
 | 
    40    | 
| 
webmaster@0
 | 
    41   function debugQuery($query, $id=0) { | 
| 
webmaster@0
 | 
    42   $rv = $this->Query($query, $id); | 
| 
webmaster@0
 | 
    43   if(mysql_errno() !== 0) | 
| 
webmaster@0
 | 
    44 	echo("<span class='menu'>\n Query : {$query}<br />\n MySQL Answer : " . mysql_error() . "</span>"); | 
| 
webmaster@0
 | 
    45   return $rv; | 
| 
webmaster@0
 | 
    46   } | 
| 
webmaster@0
 | 
    47    | 
| 
webmaster@0
 | 
    48   function GetRow($id=0) { | 
| 
webmaster@0
 | 
    49    if(@$row=mysql_fetch_assoc($this->arResult[$id])) { | 
| 
webmaster@0
 | 
    50     foreach($row as $key => $value) | 
| 
webmaster@0
 | 
    51         $row_utf[$key]=$this->utf8_ensure($value); | 
| 
webmaster@0
 | 
    52     return $row_utf; | 
| 
webmaster@0
 | 
    53    } | 
| 
webmaster@0
 | 
    54    return 0;  | 
| 
webmaster@0
 | 
    55   } | 
| 
webmaster@0
 | 
    56    | 
| 
webmaster@0
 | 
    57   function GetRawRow($id=0) { | 
| 
webmaster@0
 | 
    58    if(@$row=mysql_fetch_array($this->arResult[$id])) { | 
| 
webmaster@0
 | 
    59     return $row; | 
| 
webmaster@0
 | 
    60    } | 
| 
webmaster@0
 | 
    61    return 0;     | 
| 
webmaster@0
 | 
    62   } | 
| 
webmaster@0
 | 
    63    | 
| 
webmaster@0
 | 
    64   function Close() { | 
| 
webmaster@0
 | 
    65    $this->connOpen=0; | 
| 
webmaster@0
 | 
    66    mysql_close(); | 
| 
webmaster@0
 | 
    67   } | 
| 
webmaster@0
 | 
    68    | 
| 
webmaster@0
 | 
    69   function getNbQueries() { | 
| 
webmaster@0
 | 
    70 	return $this->_nbQueries; | 
| 
webmaster@0
 | 
    71   } | 
| 
webmaster@0
 | 
    72    | 
| 
webmaster@0
 | 
    73   function formatDate($timestamp, $decallage=2, $pattern='d/m/Y H:i:s') { | 
| 
webmaster@0
 | 
    74    return gmdate($pattern, $timestamp + $decallage * 3600); | 
| 
webmaster@0
 | 
    75   } | 
| 
webmaster@0
 | 
    76    | 
| 
webmaster@0
 | 
    77   function seems_utf8($Str) { | 
| 
webmaster@0
 | 
    78      for ($i=0; $i<strlen($Str)/10 || $i < 100; $i++) { | 
| 
webmaster@0
 | 
    79 	if (ord($Str[$i]) < 0x80) continue; # 0bbbbbbb | 
| 
webmaster@0
 | 
    80 	elseif ((ord($Str[$i]) & 0xE0) == 0xC0) $n=1; # 110bbbbb | 
| 
webmaster@0
 | 
    81 	elseif ((ord($Str[$i]) & 0xF0) == 0xE0) $n=2; # 1110bbbb | 
| 
webmaster@0
 | 
    82 	elseif ((ord($Str[$i]) & 0xF8) == 0xF0) $n=3; # 11110bbb | 
| 
webmaster@0
 | 
    83 	elseif ((ord($Str[$i]) & 0xFC) == 0xF8) $n=4; # 111110bb | 
| 
webmaster@0
 | 
    84 	elseif ((ord($Str[$i]) & 0xFE) == 0xFC) $n=5; # 1111110b | 
| 
webmaster@0
 | 
    85 	else return false; # Does not match any model | 
| 
webmaster@0
 | 
    86 	for ($j=0; $j<$n; $j++) { # n bytes matching 10bbbbbb follow ? | 
| 
webmaster@0
 | 
    87 		if ((++$i == strlen($Str)) || ((ord($Str[$i]) & 0xC0) != 0x80)) | 
| 
webmaster@0
 | 
    88 		return false; | 
| 
webmaster@0
 | 
    89 	} | 
| 
webmaster@0
 | 
    90      } | 
| 
webmaster@0
 | 
    91      return true; | 
| 
webmaster@0
 | 
    92   } | 
| 
webmaster@0
 | 
    93    | 
| 
webmaster@0
 | 
    94   function utf8_ensure($Str) { | 
| 
webmaster@0
 | 
    95    return $this->seems_utf8($Str)?$Str:utf8_encode($Str); | 
| 
webmaster@0
 | 
    96   } | 
| 
webmaster@0
 | 
    97    | 
| 
webmaster@0
 | 
    98 } | 
| 
webmaster@0
 | 
    99 ?> |