| 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 ?> |