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