Mercurial > defr > DualBlog
diff 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 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/includes/class.dataaccess.php Sat Oct 20 14:15:10 2007 +0200 @@ -0,0 +1,99 @@ +<?php +class DataAccess { + var $host; + var $user; + var $pass; + var $db; + var $arResult; + var $query; + var $connOpen; + var $_nbQueries; + + var $infos; // Cache contenant les informations sur le visiteur + + function DataAccess($host=DB_HOST, $user=DB_USER, $pass=DB_PASS) { + $this->host=$host; + $this->user=$user; + $this->pass=$pass; + $this->_nbQueries = 0; + $this->Connect(); + } + + function Connect($db=DB_NAME) { + if($this->connOpen == 1) return; + $this->db=$db; + $this->connOpen=1; + mysql_connect($this->host, $this->user, $this->pass); + mysql_select_db($this->db); + } + + function Query($query, $id=0) { + $this->query=$query; + if($this->connOpen != 1) $this->Connect(); + $this->arResult[$id]=mysql_query($this->query); + if($this->connOpen != 1) $this->Close(); + if(@$num_rows=mysql_num_rows($this->arResult[$id])) + return $num_rows; + else + return 0; + } + + function debugQuery($query, $id=0) { + $rv = $this->Query($query, $id); + if(mysql_errno() !== 0) + echo("<span class='menu'>\n Query : {$query}<br />\n MySQL Answer : " . mysql_error() . "</span>"); + return $rv; + } + + function GetRow($id=0) { + if(@$row=mysql_fetch_assoc($this->arResult[$id])) { + foreach($row as $key => $value) + $row_utf[$key]=$this->utf8_ensure($value); + return $row_utf; + } + return 0; + } + + function GetRawRow($id=0) { + if(@$row=mysql_fetch_array($this->arResult[$id])) { + return $row; + } + return 0; + } + + function Close() { + $this->connOpen=0; + mysql_close(); + } + + function getNbQueries() { + return $this->_nbQueries; + } + + function formatDate($timestamp, $decallage=2, $pattern='d/m/Y H:i:s') { + return gmdate($pattern, $timestamp + $decallage * 3600); + } + + function seems_utf8($Str) { + for ($i=0; $i<strlen($Str)/10 || $i < 100; $i++) { + if (ord($Str[$i]) < 0x80) continue; # 0bbbbbbb + elseif ((ord($Str[$i]) & 0xE0) == 0xC0) $n=1; # 110bbbbb + elseif ((ord($Str[$i]) & 0xF0) == 0xE0) $n=2; # 1110bbbb + elseif ((ord($Str[$i]) & 0xF8) == 0xF0) $n=3; # 11110bbb + elseif ((ord($Str[$i]) & 0xFC) == 0xF8) $n=4; # 111110bb + elseif ((ord($Str[$i]) & 0xFE) == 0xFC) $n=5; # 1111110b + else return false; # Does not match any model + for ($j=0; $j<$n; $j++) { # n bytes matching 10bbbbbb follow ? + if ((++$i == strlen($Str)) || ((ord($Str[$i]) & 0xC0) != 0x80)) + return false; + } + } + return true; + } + + function utf8_ensure($Str) { + return $this->seems_utf8($Str)?$Str:utf8_encode($Str); + } + +} +?>