Converted to UTF-8

This commit is contained in:
2013-10-19 23:11:24 +02:00
parent f0cc9260ca
commit 2661e933da
6 changed files with 166 additions and 128 deletions

View File

@@ -1,3 +1,4 @@
AddDefaultCharset UTF-8
Options +FollowSymlinks Options +FollowSymlinks
RewriteEngine on RewriteEngine on

View File

@@ -331,18 +331,27 @@ class Databap extends PhpObject
function __construct($oClassManagement) function __construct($oClassManagement)
{ {
parent::__construct(); parent::__construct();
$this->oClassManagement = $oClassManagement;
//Browser <> PHP <> MySql synchronization //Browser <> PHP <> MySql synchronization
date_default_timezone_set(Settings::TIMEZONE); date_default_timezone_set(Settings::TIMEZONE);
//header('Content-Type: text/html; charset=utf-8'); ini_set('default_charset', Settings::TEXT_ENC);
header('Content-Type: text/html; charset='.Settings::TEXT_ENC);
mb_internal_encoding(Settings::TEXT_ENC);
mb_http_output(Settings::TEXT_ENC);
mb_http_input(Settings::TEXT_ENC);
mb_language('uni');
mb_regex_encoding(Settings::TEXT_ENC);
$this->oMySql = new MySqlManager(); //Passing settings down to mySQL
$this->oMySql = new MySqlManager(Settings::DB_SERVER, Settings::DB_LOGIN, Settings::DB_PASS, Settings::DB_NAME, Settings::SQL_ENC);
if($this->oMySql->sDbState == MySqlManager::DB_NO_DATA) $this->install(); if($this->oMySql->sDbState == MySqlManager::DB_NO_DATA) $this->install();
//Init other variables
$this->oProcedure = new Procedure($this->oMySql); $this->oProcedure = new Procedure($this->oMySql);
$this->setUserId(0); $this->setUserId(0);
$this->sLanguage = self::LANG_FR; $this->sLanguage = self::LANG_FR;
$this->oSearchEngine = new SearchEngine($this->oMySql); $this->oSearchEngine = new SearchEngine($this->oMySql);
$this->oClassManagement = $oClassManagement;
} }
private function install() private function install()
@@ -387,6 +396,7 @@ class Databap extends PhpObject
public function getPage($sPage, $asVars) public function getPage($sPage, $asVars)
{ {
$oPage = new Mask('index'); $oPage = new Mask('index');
$oPage->setTag('text_enc', Settings::TEXT_ENC);
$oPage->setTag('first_page', $sPage); $oPage->setTag('first_page', $sPage);
$oPage->setTag('index_link', $asVars['serv_name']); $oPage->setTag('index_link', $asVars['serv_name']);
$oPage->setTag('line_break', "Global databap constants\n"); $oPage->setTag('line_break', "Global databap constants\n");
@@ -453,7 +463,7 @@ class Databap extends PhpObject
$oFeed = new Feed($asDesc); $oFeed = new Feed($asDesc);
//Building items //Building items
switch(strtolower($sCat)) switch(mb_strtolower($sCat))
{ {
case '9gag': case '9gag':
$sRegEx = '^(https?://|www\\.)(.*)9gag\\.com'; $sRegEx = '^(https?://|www\\.)(.*)9gag\\.com';
@@ -546,13 +556,13 @@ class Databap extends PhpObject
//Title & link //Title & link
case 'font-color-normal': case 'font-color-normal':
$asArticleInfo['title'] = ucfirst(trim($oLink->nodeValue)); $asArticleInfo['title'] = ucfirst(trim($oLink->nodeValue));
$asArticleInfo['title'] = substr($asArticleInfo['title'], -1)=='.'?substr($asArticleInfo['title'], 0, -1):$asArticleInfo['title']; $asArticleInfo['title'] = mb_substr($asArticleInfo['title'], -1)=='.'?mb_substr($asArticleInfo['title'], 0, -1):$asArticleInfo['title'];
$asArticleInfo['link'] = $oLink->getAttribute('href'); $asArticleInfo['link'] = $oLink->getAttribute('href');
$asArticleInfo['date'] = substr(str_replace(array($sSAPBlogUrl.'/', '/'), array('', '-'), $asArticleInfo['link']), 0, 10); $asArticleInfo['date'] = mb_substr(str_replace(array($sSAPBlogUrl.'/', '/'), array('', '-'), $asArticleInfo['link']), 0, 10);
break; break;
//Author //Author
case 'jiveTT-hover-user jive-username-link': case 'jiveTT-hover-user jive-username-link':
$asNames = array_filter(explode(' ', ucwords(trim($oLink->nodeValue)))); $asNames = array_filter(explode(' ', ToolBox::mb_ucwords(trim($oLink->nodeValue))));
$asArticleInfo['first_name'] = array_shift($asNames); $asArticleInfo['first_name'] = array_shift($asNames);
$asArticleInfo['last_name'] = implode('-', $asNames); $asArticleInfo['last_name'] = implode('-', $asNames);
$asArticleInfo['email'] = $sSAPDomain.$oLink->getAttribute('href'); $asArticleInfo['email'] = $sSAPDomain.$oLink->getAttribute('href');
@@ -612,14 +622,14 @@ class Databap extends PhpObject
public function addUser($sFirstName, $sLastName, $sCompany, $sEmail='', $iClearance=self::CLEARANCE_MEMBER) public function addUser($sFirstName, $sLastName, $sCompany, $sEmail='', $iClearance=self::CLEARANCE_MEMBER)
{ {
$sFirstName = strtolower($sFirstName); $sFirstName = mb_strtolower($sFirstName);
$sLastName = strtolower($sLastName); $sLastName = mb_strtolower($sLastName);
$sCompany = strtolower($sCompany); $sCompany = mb_strtolower($sCompany);
$sEmail = strtolower($sEmail); $sEmail = mb_strtolower($sEmail);
//Checking company existency in company table //Checking company existency in company table
$sCompanyTextCol = MySqlManager::getText(MySqlManager::COMP_TABLE); $sCompanyTextCol = MySqlManager::getText(MySqlManager::COMP_TABLE);
$iCompanyId = $this->oMySql->selectInsert(MySqlManager::COMP_TABLE, array($sCompanyTextCol=>strtolower($sCompany), 'logo'=>self::DEFAULT_COMPANY_LOGO), array($sCompanyTextCol)); $iCompanyId = $this->oMySql->selectInsert(MySqlManager::COMP_TABLE, array($sCompanyTextCol=>mb_strtolower($sCompany), 'logo'=>self::DEFAULT_COMPANY_LOGO), array($sCompanyTextCol));
$asInfo = array('first_name'=>$sFirstName, $asInfo = array('first_name'=>$sFirstName,
'last_name'=>$sLastName, 'last_name'=>$sLastName,
@@ -970,7 +980,7 @@ class Databap extends PhpObject
$asSelect = "*"; $asSelect = "*";
} }
$asCode = $this->oMySql->selectRow(MySqlManager::CODE_TABLE, $iCodeId, $asSelect); $asCode = $this->oMySql->selectRow(MySqlManager::CODE_TABLE, $iCodeId, $asSelect);$this->addError($asCode);
$asCode['description'] = self::getDescriptionFormat($asCode['description']); $asCode['description'] = self::getDescriptionFormat($asCode['description']);
$asCode['timestamp'] = strtotime($asCode['led']); $asCode['timestamp'] = strtotime($asCode['led']);
$asCode['led'] = self::getDateFormat($asCode['led']); $asCode['led'] = self::getDateFormat($asCode['led']);
@@ -1447,31 +1457,31 @@ class Databap extends PhpObject
{ {
$sMessage = htmlspecialchars($sMessage); $sMessage = htmlspecialchars($sMessage);
$sType = self::MESSAGE_USER; $sType = self::MESSAGE_USER;
if(substr($sMessage, 0, 1) == '/') if(mb_substr($sMessage, 0, 1) == '/')
{ {
if(substr($sMessage, 0, 4) == '/me ') if(mb_substr($sMessage, 0, 4) == '/me ')
{ {
$sType = self::MESSAGE_ACTION; $sType = self::MESSAGE_ACTION;
$sMessage = substr($sMessage, 3); $sMessage = mb_substr($sMessage, 3);
} }
elseif(substr($sMessage, 0, 6) == '/slap ') elseif(mb_substr($sMessage, 0, 6) == '/slap ')
{ {
$sType = self::MESSAGE_ACTION; $sType = self::MESSAGE_ACTION;
$sMessage = ' fout une grosse tarte &agrave; '.substr($sMessage, 5); $sMessage = ' fout une grosse tarte &agrave; '.mb_substr($sMessage, 5);
} }
elseif(substr($sMessage, 0, 4) == '/bs ') elseif(mb_substr($sMessage, 0, 4) == '/bs ')
{ {
$sType = self::MESSAGE_ACTION; $sType = self::MESSAGE_ACTION;
$sMessage = ' bitch-slaps '.substr($sMessage, 3); $sMessage = ' bitch-slaps '.mb_substr($sMessage, 3);
} }
elseif(substr($sMessage, 0, 6) == '/kick ') elseif(mb_substr($sMessage, 0, 6) == '/kick ')
{ {
$sType = self::MESSAGE_ACTION; $sType = self::MESSAGE_ACTION;
$sMessage = ' met un coup de pied au cul de '.substr($sMessage, 5); $sMessage = ' met un coup de pied au cul de '.mb_substr($sMessage, 5);
} }
elseif(substr($sMessage, 0, 6) == '/nick ' && strlen($sMessage)>6) elseif(mb_substr($sMessage, 0, 6) == '/nick ' && mb_strlen($sMessage)>6)
{ {
$sNewNick = $this->getNickNameFormat(substr($sMessage, 5)); $sNewNick = $this->getNickNameFormat(mb_substr($sMessage, 5));
$sOldNick = $this->getNickNameFormat($this->getChatNickNames($this->getUserId())); $sOldNick = $this->getNickNameFormat($this->getChatNickNames($this->getUserId()));
//changing Nickname //changing Nickname
@@ -1482,9 +1492,9 @@ class Databap extends PhpObject
$sChanName = self::ALL_CHAN_TEXT; $sChanName = self::ALL_CHAN_TEXT;
$sMessage = $sOldNick.' a chang&eacute; son pseudo en '.$sNewNick; $sMessage = $sOldNick.' a chang&eacute; son pseudo en '.$sNewNick;
} }
elseif(substr($sMessage, 0, 9) == '/mission ' && strlen($sMessage)>9) elseif(mb_substr($sMessage, 0, 9) == '/mission ' && mb_strlen($sMessage)>9)
{ {
$sNewStatus = substr($sMessage, 9); $sNewStatus = mb_substr($sMessage, 9);
$sNewFormatStatus = $this->getDescriptionFormat($sNewStatus); $sNewFormatStatus = $this->getDescriptionFormat($sNewStatus);
//changing Nickname //changing Nickname
@@ -1495,13 +1505,13 @@ class Databap extends PhpObject
$sChanName = self::ALL_CHAN_TEXT; $sChanName = self::ALL_CHAN_TEXT;
$sMessage = 'est sur une nouvelle mission : '.$sNewFormatStatus; $sMessage = 'est sur une nouvelle mission : '.$sNewFormatStatus;
} }
elseif(substr($sMessage, 0, 6) == '/mail ' && strlen($sMessage)>6) elseif(mb_substr($sMessage, 0, 6) == '/mail ' && mb_strlen($sMessage)>6)
{ {
$sImagePattern = '/\/mail (?P<nickname>\w+) (?P<message>.*)/'; $sImagePattern = '/\/mail (?P<nickname>\w+) (?P<message>.*)/';
preg_match($sImagePattern, $sMessage, $asMatches); preg_match($sImagePattern, $sMessage, $asMatches);
//Looking for user Id //Looking for user Id
$asContraints = array( 'LOWER(`'.MySqlManager::getText(MySqlManager::OPT_TABLE).'`)'=>strtolower($asMatches['nickname']), $asContraints = array( 'LOWER(`'.MySqlManager::getText(MySqlManager::OPT_TABLE).'`)'=>mb_strtolower($asMatches['nickname']),
MySqlManager::getId(MySqlManager::OPTNAME_TABLE)=>self::OPT_NICKNAME); MySqlManager::getId(MySqlManager::OPTNAME_TABLE)=>self::OPT_NICKNAME);
$iUserIdTo = $this->oMySql->selectValue(MySqlManager::OPT_TABLE, MySqlManager::getId(MySqlManager::USER_TABLE), $asContraints); $iUserIdTo = $this->oMySql->selectValue(MySqlManager::OPT_TABLE, MySqlManager::getId(MySqlManager::USER_TABLE), $asContraints);
@@ -1530,22 +1540,22 @@ class Databap extends PhpObject
} }
$sType = self::MESSAGE_ACTION; $sType = self::MESSAGE_ACTION;
} }
elseif(substr($sMessage, 0, 5) == '/mean') elseif(mb_substr($sMessage, 0, 5) == '/mean')
{ {
$sPageContent = file_get_contents('http://www.randominsults.net/'); $sPageContent = file_get_contents('http://www.randominsults.net/');
$sStartText = '<strong><i>'; $sStartText = '<strong><i>';
$sEndText = '</i></strong>'; $sEndText = '</i></strong>';
$iStartPos = strpos($sPageContent, $sStartText); $iStartPos = mb_strpos($sPageContent, $sStartText);
$iEndPos = strpos($sPageContent, $sEndText); $iEndPos = mb_strpos($sPageContent, $sEndText);
$sMessage = substr($sPageContent, $iStartPos + strlen($sStartText), $iEndPos - $iStartPos); $sMessage = mb_substr($sPageContent, $iStartPos + mb_strlen($sStartText), $iEndPos - $iStartPos);
} }
elseif(substr($sMessage, 0, 5) == '/like') elseif(mb_substr($sMessage, 0, 5) == '/like')
{ {
$sType = self::MESSAGE_ACTION; $sType = self::MESSAGE_ACTION;
$sMessage = ' plussoie'; $sMessage = ' plussoie';
} }
elseif(substr($sMessage, 0, 4) == '/now') elseif(mb_substr($sMessage, 0, 4) == '/now')
{ {
$sType = self::MESSAGE_ACTION; $sType = self::MESSAGE_ACTION;
$asWeekDays = array('lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi', 'dimanche'); $asWeekDays = array('lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi', 'dimanche');
@@ -1553,15 +1563,15 @@ class Databap extends PhpObject
$sMessage = ' a demand&eacute; l\'heure. Pour sa gouverne, il est exactement '.date(self::TIME_FORMAT). $sMessage = ' a demand&eacute; l\'heure. Pour sa gouverne, il est exactement '.date(self::TIME_FORMAT).
', le '.$asWeekDays[date('N')-1].' '.date('j').' '.$asMonths[date('n')-1].' '.date('Y').' (semaine '.date('W').')'; ', le '.$asWeekDays[date('N')-1].' '.date('j').' '.$asMonths[date('n')-1].' '.date('Y').' (semaine '.date('W').')';
} }
elseif($sMessage == '/channels' || substr($sMessage, 0, 5) == '/list' || $sMessage == '/chans') elseif($sMessage == '/channels' || mb_substr($sMessage, 0, 5) == '/list' || $sMessage == '/chans')
{ {
//Always at least one channel open (the one the message is sent from) //Always at least one channel open (the one the message is sent from)
$sMessage = ' a demand&eacute; les chans disponibles. Pour sa gouverne, les chans ayant des membres connect&eacute;s sont #'.MySqlManager::implodeAll($this->getActiveChannels(), ' (', ', #', '', ')'); $sMessage = ' a demand&eacute; les chans disponibles. Pour sa gouverne, les chans ayant des membres connect&eacute;s sont #'.MySqlManager::implodeAll($this->getActiveChannels(), ' (', ', #', '', ')');
$sType = self::MESSAGE_ACTION; $sType = self::MESSAGE_ACTION;
} }
elseif(substr($sMessage, 0, 5) == '/img ' && strlen($sMessage)>5) elseif(mb_substr($sMessage, 0, 5) == '/img ' && mb_strlen($sMessage)>5)
{ {
$sUrl = trim(substr($sMessage, 4)); $sUrl = trim(mb_substr($sMessage, 4));
$asResult = $this->downloadToTmp($sUrl); $asResult = $this->downloadToTmp($sUrl);
if($asResult['error']=='') if($asResult['error']=='')
{ {
@@ -1569,18 +1579,18 @@ class Databap extends PhpObject
$sType = self::MESSAGE_IMG; $sType = self::MESSAGE_IMG;
} }
} }
elseif(substr($sMessage, 0, 6) == '/9gag ' && strlen($sMessage)>6) elseif(mb_substr($sMessage, 0, 6) == '/9gag ' && mb_strlen($sMessage)>6)
{ {
$sMessage = $this->getJsonMessage($this->get9gagPost(trim(substr($sMessage, 6)))); $sMessage = $this->getJsonMessage($this->get9gagPost(trim(mb_substr($sMessage, 6))));
$sType = self::MESSAGE_9GAG; $sType = self::MESSAGE_9GAG;
} }
elseif(substr($sMessage, 0, 7) == '/reboot' && $this->getUserClearance()==self::CLEARANCE_ADMIN) elseif(mb_substr($sMessage, 0, 7) == '/reboot' && $this->getUserClearance()==self::CLEARANCE_ADMIN)
{ {
$sMessage = 'L\'administrateur a demand&eacute; un reboot. Votre page va se rafraichir automatiquement dans '.self::REBOOT_DELAY.' secondes.'; $sMessage = 'L\'administrateur a demand&eacute; un reboot. Votre page va se rafraichir automatiquement dans '.self::REBOOT_DELAY.' secondes.';
$sType = self::MESSAGE_REBOOT; $sType = self::MESSAGE_REBOOT;
} }
} }
elseif(substr($sMessage, 0, 1) == '@' && strpos($sMessage, ' ')>1) elseif(mb_substr($sMessage, 0, 1) == '@' && mb_strpos($sMessage, ' ')>1)
{ {
$sType = self::MESSAGE_PRIVATE; $sType = self::MESSAGE_PRIVATE;
} }
@@ -1596,7 +1606,7 @@ class Databap extends PhpObject
private function downloadToTmp($sUrl) private function downloadToTmp($sUrl)
{ {
$sFileInfo = pathinfo($sUrl); $sFileInfo = pathinfo($sUrl);
$sImageExt = strtolower($sFileInfo['extension']); $sImageExt = mb_strtolower($sFileInfo['extension']);
$sFilePath = self::DOC_TMP_FOLDER.uniqid().'.'.$sImageExt; $sFilePath = self::DOC_TMP_FOLDER.uniqid().'.'.$sImageExt;
return ToolBox::createThumbnail($sUrl, self::CHAT_IMG_MAX_WIDTH, self::CHAT_IMG_MAX_HEIGHT, $sFilePath); return ToolBox::createThumbnail($sUrl, self::CHAT_IMG_MAX_WIDTH, self::CHAT_IMG_MAX_HEIGHT, $sFilePath);
} }
@@ -1685,7 +1695,7 @@ class Databap extends PhpObject
ksort($asSqlMessages); ksort($asSqlMessages);
//Sort out messages for Json Export //Sort out messages for Json Export
$iPrefixLen = strlen(self::JSON_PREFIX); $iPrefixLen = mb_strlen(self::JSON_PREFIX);
$asMessages = array('messages'=>array(), 'last_message_id'=>0); $asMessages = array('messages'=>array(), 'last_message_id'=>0);
foreach($asSqlMessages as $iMessageId=>$asMessageInfo) foreach($asSqlMessages as $iMessageId=>$asMessageInfo)
{ {
@@ -1728,9 +1738,9 @@ class Databap extends PhpObject
} }
//Json message //Json message
if(substr($asMessages['messages'][$iMessageId]['message'], 0, $iPrefixLen) == self::JSON_PREFIX) if(mb_substr($asMessages['messages'][$iMessageId]['message'], 0, $iPrefixLen) == self::JSON_PREFIX)
{ {
$asMessages['messages'][$iMessageId]['message'] = json_decode(substr($asMessages['messages'][$iMessageId]['message'], $iPrefixLen)); $asMessages['messages'][$iMessageId]['message'] = json_decode(mb_substr($asMessages['messages'][$iMessageId]['message'], $iPrefixLen));
} }
else //Normal message else //Normal message
{ {
@@ -1936,7 +1946,7 @@ class Databap extends PhpObject
return '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> return '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"> <html xmlns="http://www.w3.org/1999/xhtml">
<head> <head>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1" /> <meta http-equiv="content-type" content="text/html; charset='.Settings::TEXT_ENC.'" />
<meta name="author" content="'.$asUser['name'].' ('.$asUser['company'].')" /> <meta name="author" content="'.$asUser['name'].' ('.$asUser['company'].')" />
<link rel="shortcut icon" href="images/favicon_gc3.ico" /> <link rel="shortcut icon" href="images/favicon_gc3.ico" />
<title>Databap &bull;</title> <title>Databap &bull;</title>
@@ -2067,8 +2077,8 @@ class Databap extends PhpObject
//login using form //login using form
if($sName!='' && $sCompany!='') if($sName!='' && $sCompany!='')
{ {
$asNames = explode(' ', strtolower($sName)); $asNames = explode(' ', mb_strtolower($sName));
$sCompany = strtolower($sCompany); $sCompany = mb_strtolower($sCompany);
//Get Company's Id //Get Company's Id
$iCompanyId = $this->oMySql->selectValue(MySqlManager::COMP_TABLE, $sCompanyTableId, array($sCompanyTableText=>$sCompany)); $iCompanyId = $this->oMySql->selectValue(MySqlManager::COMP_TABLE, $sCompanyTableId, array($sCompanyTableText=>$sCompany));
@@ -2091,7 +2101,7 @@ class Databap extends PhpObject
$iUserId = $asUserInfo[$sUserTableId]; $iUserId = $asUserInfo[$sUserTableId];
//Check pass reset necessity //Check pass reset necessity
$bResetPass = (substr($asUserInfo['led'], 0, 10) != date(Databap::DATE_SQL_FORMAT)); $bResetPass = (mb_substr($asUserInfo['led'], 0, 10) != date(Databap::DATE_SQL_FORMAT));
} }
//Login using Token (limited access) //Login using Token (limited access)
elseif($sAction==self::EXT_ACCESS && $sToken!='') elseif($sAction==self::EXT_ACCESS && $sToken!='')
@@ -2114,14 +2124,14 @@ class Databap extends PhpObject
public function checkToken($sKey) public function checkToken($sKey)
{ {
$iUserId = strstr($sKey, '_', true); $iUserId = mb_strstr($sKey, '_', true);
$sToken = substr($sKey, strlen($iUserId)+1); $sToken = mb_substr($sKey, mb_strlen($iUserId)+1);
return (strlen($sToken)==self::TOKEN_LENGTH && $this->generateToken($iUserId)==$sToken && $this->checkValue(MySqlManager::USER_TABLE, $iUserId))?$iUserId:0; return (mb_strlen($sToken)==self::TOKEN_LENGTH && $this->generateToken($iUserId)==$sToken && $this->checkValue(MySqlManager::USER_TABLE, $iUserId))?$iUserId:0;
} }
public function resetNecessary($iUserId) public function resetNecessary($iUserId)
{ {
$sLed = substr($this->oMySql->selectValue(MySqlManager::USER_TABLE, 'led', $iUserId), 0, 10); $sLed = mb_substr($this->oMySql->selectValue(MySqlManager::USER_TABLE, 'led', $iUserId), 0, 10);
return $sLed != date(Databap::DATE_SQL_FORMAT); return $sLed != date(Databap::DATE_SQL_FORMAT);
} }
@@ -2190,7 +2200,7 @@ class Databap extends PhpObject
return self::encryptPassword( $_SERVER['HTTP_USER_AGENT']. return self::encryptPassword( $_SERVER['HTTP_USER_AGENT'].
$_SERVER['REMOTE_ADDR']. $_SERVER['REMOTE_ADDR'].
$_SERVER['REQUEST_TIME']. $_SERVER['REQUEST_TIME'].
strstr(microtime(), ' ', true). mb_strstr(microtime(), ' ', true).
$_SERVER['SERVER_SIGNATURE']. $_SERVER['SERVER_SIGNATURE'].
$_SERVER['SERVER_ADMIN']); $_SERVER['SERVER_ADMIN']);
} }
@@ -2198,16 +2208,16 @@ class Databap extends PhpObject
private static function encryptPassword($sPass) private static function encryptPassword($sPass)
{ {
$sRandomText = 'F_RA-1H"2{bvj)5f?0sd3r#fP,K]U|w}hGiN@(sZ.sDe!7*x/:Mq+&'; $sRandomText = 'F_RA-1H"2{bvj)5f?0sd3r#fP,K]U|w}hGiN@(sZ.sDe!7*x/:Mq+&';
for($iIndex=0; $iIndex < strlen($sPass); $iIndex++) for($iIndex=0; $iIndex < mb_strlen($sPass); $iIndex++)
{ {
$sPass[$iIndex] = $sRandomText[$iIndex%strlen($sRandomText)] ^ $sPass[$iIndex]; $sPass[$iIndex] = $sRandomText[$iIndex%mb_strlen($sRandomText)] ^ $sPass[$iIndex];
} }
return md5($sPass); return md5($sPass);
} }
public static function getChanSafeName($sChanName) public static function getChanSafeName($sChanName)
{ {
$sChanSafeName = preg_replace('/[^a-z0-9]/', '_', strtolower($sChanName)); $sChanSafeName = preg_replace('/[^a-z0-9]/', '_', mb_strtolower($sChanName));
//Sort PM chans //Sort PM chans
$asPm = self::isPmChan($sChanSafeName); $asPm = self::isPmChan($sChanSafeName);
@@ -2284,7 +2294,7 @@ class Databap extends PhpObject
public static function getCompanyFormat($sCompany) public static function getCompanyFormat($sCompany)
{ {
return ucwords($sCompany); return ToolBox::mb_ucwords($sCompany);
} }
public static function getDescriptionFormat($sDescription) public static function getDescriptionFormat($sDescription)
@@ -2292,13 +2302,9 @@ class Databap extends PhpObject
return ucfirst($sDescription); return ucfirst($sDescription);
} }
public static function jsonExport($asData, $bConvert=false) public static function jsonExport($asData)
{ {
header('Content-type: application/json'); header('Content-type: application/json');
if($bConvert)
{
$asData = ToolBox::cleanData($asData, 'utf8_encode');
}
return self::jsonConvert($asData); return self::jsonConvert($asData);
} }
@@ -2319,7 +2325,7 @@ class Databap extends PhpObject
public static function toBytes($str) public static function toBytes($str)
{ {
$val = trim($str); $val = trim($str);
$last = strtolower($str[strlen($str)-1]); $last = mb_strtolower($str[mb_strlen($str)-1]);
switch($last) { switch($last) {
case 'g': $val *= 1024; case 'g': $val *= 1024;
case 'm': $val *= 1024; case 'm': $val *= 1024;
@@ -2699,7 +2705,7 @@ class SearchEngine extends PhpObject
break; break;
} }
$sWords = implode(self::KEYWORDS_SEPARATOR, $asWords); $sWords = implode(self::KEYWORDS_SEPARATOR, $asWords);
$sWords = strtolower(str_replace("\n", self::KEYWORDS_SEPARATOR, $sWords)); $sWords = mb_strtolower(str_replace("\n", self::KEYWORDS_SEPARATOR, $sWords));
//TODO Fix char encoding //TODO Fix char encoding
$sWords = preg_replace('/(\W+)/', self::KEYWORDS_SEPARATOR, $sWords); //remove all non-word characters $sWords = preg_replace('/(\W+)/', self::KEYWORDS_SEPARATOR, $sWords); //remove all non-word characters
@@ -2884,7 +2890,7 @@ class SearchEngine extends PhpObject
private function checkSearchedWords($sWord) private function checkSearchedWords($sWord)
{ {
return (strlen($sWord) >= 2); return (mb_strlen($sWord) >= 2);
} }
} }
@@ -3063,7 +3069,7 @@ class Reader
} }
//Enlarge line //Enlarge line
if(strpos($sLine, $sServName) !== false) if(mb_strpos($sLine, $sServName) !== false)
{ {
$sLiClass .= ' bigline'; $sLiClass .= ' bigline';
} }
@@ -3098,11 +3104,11 @@ class Reader
//Core Words //Core Words
foreach($this->getWords('wCore') as $sCoreWord) foreach($this->getWords('wCore') as $sCoreWord)
{ {
$sCoreWord = strtolower($sCoreWord); $sCoreWord = mb_strtolower($sCoreWord);
$sPattern = '/>(([^<]*)([^\w&<]{1})|.{0})('.$sCoreWord.')([\W])/'; $sPattern = '/>(([^<]*)([^\w&<]{1})|.{0})('.$sCoreWord.')([\W])/';
$sCode = preg_replace($sPattern, '>$1<span class="core">$4</span>$5', $sCode); $sCode = preg_replace($sPattern, '>$1<span class="core">$4</span>$5', $sCode);
} }
//$sCoreWords = str_replace(' ', '\ ', implode('|', array_map('strtolower', $this->getWords('wCore')))); //$sCoreWords = str_replace(' ', '\ ', implode('|', array_map('mb_strtolower', $this->getWords('wCore'))));
//$sPattern = '/>(([^<]*)([^\w<]{1})|.{0})('.$sCoreWords.')(?=[\W])/U'; //$sPattern = '/>(([^<]*)([^\w<]{1})|.{0})('.$sCoreWords.')(?=[\W])/U';
//$sCode = preg_replace($sPattern, '>$1<span class="core">$4</span>', $sCode); //$sCode = preg_replace($sPattern, '>$1<span class="core">$4</span>', $sCode);
@@ -3114,7 +3120,7 @@ class Reader
$sPattern = '/>([^<]*)\\'.$sOpWord.'/'; $sPattern = '/>([^<]*)\\'.$sOpWord.'/';
$sCode = preg_replace($sPattern, '>$1<span class="operator">'.$sOpWord.'</span>', $sCode); $sCode = preg_replace($sPattern, '>$1<span class="operator">'.$sOpWord.'</span>', $sCode);
} }
//$sPattern = '/>([^<]*)['.implode(array_map('strtolower', ($this->getWords('cOperator')))).']/'; //$sPattern = '/>([^<]*)['.implode(array_map('mb_strtolower', ($this->getWords('cOperator')))).']/';
//echo $sPattern; //echo $sPattern;
//$sCode = preg_replace($sPattern, '>$1<span class="operator">$2$3</span>', $sCode); //$sCode = preg_replace($sPattern, '>$1<span class="operator">$2$3</span>', $sCode);
@@ -3128,12 +3134,12 @@ class Reader
private static function getFirstWord($sText) private static function getFirstWord($sText)
{ {
return strstr(str_replace('.', ' ', trim($sText)), ' ', true); return mb_strstr(str_replace('.', ' ', trim($sText)), ' ', true);
} }
private static function getFirstChar($sText) private static function getFirstChar($sText)
{ {
return substr(str_replace('.', ' ', trim($sText)), 0, 1); return mb_substr(str_replace('.', ' ', trim($sText)), 0, 1);
} }
private function addColor(&$sText, $sWord, $sClassColor) private function addColor(&$sText, $sWord, $sClassColor)
@@ -3148,7 +3154,7 @@ class Reader
public static function convText2Html($sCode) public static function convText2Html($sCode)
{ {
return htmlspecialchars(strtolower($sCode), ENT_QUOTES); return htmlspecialchars(mb_strtolower($sCode), ENT_QUOTES);
} }
public function getColoredCode() public function getColoredCode()
@@ -3237,7 +3243,7 @@ class Mask extends PhpObject
{ {
$iStartPos = $this->getPartStartPos($sPartName); $iStartPos = $this->getPartStartPos($sPartName);
$iEndPos = $this->getPartEndPos($sPartName); $iEndPos = $this->getPartEndPos($sPartName);
$sPart = substr($this->sMask, $iStartPos, $iEndPos-$iStartPos); $sPart = mb_substr($this->sMask, $iStartPos, $iEndPos-$iStartPos);
$sExtendedPart = $this->getPartPattern($sPartName, self::START_TAG).$sPart. $this->getPartPattern($sPartName, self::END_TAG); $sExtendedPart = $this->getPartPattern($sPartName, self::START_TAG).$sPart. $this->getPartPattern($sPartName, self::END_TAG);
$this->sMask = str_replace($sExtendedPart, $this->getPartTagPattern($sPartName), $this->sMask); $this->sMask = str_replace($sExtendedPart, $this->getPartTagPattern($sPartName), $this->sMask);
return $sPart; return $sPart;
@@ -3246,13 +3252,13 @@ class Mask extends PhpObject
private function getPartStartPos($sPartName) private function getPartStartPos($sPartName)
{ {
$sPartStartPattern = $this->getPartPattern($sPartName, self::START_TAG); $sPartStartPattern = $this->getPartPattern($sPartName, self::START_TAG);
return strpos($this->sMask, $sPartStartPattern) + strlen($sPartStartPattern); return mb_strpos($this->sMask, $sPartStartPattern) + mb_strlen($sPartStartPattern);
} }
private function getPartEndPos($sPartName) private function getPartEndPos($sPartName)
{ {
$sPartEndPattern = $this->getPartPattern($sPartName, self::END_TAG); $sPartEndPattern = $this->getPartPattern($sPartName, self::END_TAG);
return strpos($this->sMask, $sPartEndPattern); return mb_strpos($this->sMask, $sPartEndPattern);
} }
private function getPartPattern($sPartName, $sAction) private function getPartPattern($sPartName, $sAction)
@@ -3373,7 +3379,7 @@ class fileUploader
function __construct($sFolderPath, $asAllowedExtensions = array()/*, $sizeLimit = 10485760*/) function __construct($sFolderPath, $asAllowedExtensions = array()/*, $sizeLimit = 10485760*/)
{ {
$this->sFolderPath = $sFolderPath; $this->sFolderPath = $sFolderPath;
$this->asAllowedExtensions = array_map("strtolower", $asAllowedExtensions); $this->asAllowedExtensions = array_map("mb_strtolower", $asAllowedExtensions);
//$this->iSizeLimit = $sizeLimit; //$this->iSizeLimit = $sizeLimit;
//$this->checkServerSettings(); //$this->checkServerSettings();
$this->iSizeLimit = Databap::getMaxSize(); $this->iSizeLimit = Databap::getMaxSize();
@@ -3409,7 +3415,7 @@ class fileUploader
private function toBytes($str) private function toBytes($str)
{ {
$val = trim($str); $val = trim($str);
$last = strtolower($str[strlen($str)-1]); $last = mb_strtolower($str[mb_strlen($str)-1]);
switch($last) { switch($last) {
case 'g': $val *= 1024; case 'g': $val *= 1024;
case 'm': $val *= 1024; case 'm': $val *= 1024;
@@ -3480,7 +3486,7 @@ class fileUploader
} }
$asPathInfo = pathinfo($this->getName()); $asPathInfo = pathinfo($this->getName());
$sExt = strtolower($asPathInfo['extension']); $sExt = mb_strtolower($asPathInfo['extension']);
$sExt = ($sExt=='jpg')?'jpeg':$sExt; $sExt = ($sExt=='jpg')?'jpeg':$sExt;
if($this->asAllowedExtensions && !in_array($sExt, $this->asAllowedExtensions)) if($this->asAllowedExtensions && !in_array($sExt, $this->asAllowedExtensions))
{ {
@@ -3523,10 +3529,6 @@ class fileUploader
*/ */
class MySqlManager extends PhpObject class MySqlManager extends PhpObject
{ {
const DB_SERVER = Settings::DB_SERVER;
const DB_LOGIN = Settings::DB_LOGIN;
const DB_PASS = Settings::DB_PASS;
const DB_NAME = Settings::DB_NAME;
const DB_NO_CONN = 'ERR_1'; const DB_NO_CONN = 'ERR_1';
const DB_NO_DATA = 'ERR_2'; const DB_NO_DATA = 'ERR_2';
const ID_TAG = 'id_'; const ID_TAG = 'id_';
@@ -3555,16 +3557,19 @@ class MySqlManager extends PhpObject
public $sDbState; public $sDbState;
private $oConnection; private $oConnection;
private $sDatabase; //TODO Variable ?
private $bTrace; private $bTrace;
public function __construct() public function __construct($sDbServer, $sLogin, $sPass, $sDatabase, $sEncoding)
{ {
parent::__construct(); parent::__construct();
$this->sDatabase = $sDatabase;
//$this->oConnection = mysql_connect(self::DB_SERVER, self::DB_LOGIN, self::DB_PASS); //$this->oConnection = mysql_connect(self::DB_SERVER, self::DB_LOGIN, self::DB_PASS);
$this->oConnection = new mysqli(self::DB_SERVER, self::DB_LOGIN, self::DB_PASS); $this->oConnection = new mysqli($sDbServer, $sLogin,$sPass);
$this->syncPhpParams($sEncoding);
/* /*
$dsn = 'mysql:dbname=databap;host=127.0.0.1'; $dsn = 'mysql:dbname='.$this->sDatabase.';host='.self::DB_SERVER;
try {$dbh = new PDO($dsn, self::DB_LOGIN, self::DB_PASS);} try {$dbh = new PDO($dsn, self::DB_LOGIN, self::DB_PASS);}
catch (PDOException $e) {$this->addError('Connexion échouée : ' . $e->getMessage());} catch (PDOException $e) {$this->addError('Connexion échouée : ' . $e->getMessage());}
*/ */
@@ -3579,8 +3584,8 @@ class MySqlManager extends PhpObject
} }
else else
{ {
//if(!mysql_select_db(self::DB_NAME, $this->oConnection)) //if(!mysql_select_db($this->sDatabase, $this->oConnection))
if(!$this->oConnection->select_db(self::DB_NAME)) if(!$this->oConnection->select_db($this->sDatabase))
{ {
$this->addError('bug selecting database. Installing...'); $this->addError('bug selecting database. Installing...');
$this->sDbState = self::DB_NO_DATA; $this->sDbState = self::DB_NO_DATA;
@@ -3588,6 +3593,22 @@ class MySqlManager extends PhpObject
} }
} }
private function syncPhpParams($sEncoding)
{
//Characters encoding
$this->oConnection->set_charset($sEncoding); //SET NAMES
//Time zone
$oNow = new DateTime();
$iMins = $oNow->getOffset() / 60;
$iSign = ($iMins < 0)?-1:1;
$iMins = abs($iMins);
$iHours = floor($iMins / 60);
$iMins -= $iHours * 60;
$sOffset = sprintf('%+d:%02d', $iHours*$iSign, $iMins);
$this->setQuery("SET time_zone='{$sOffset}';");
}
public function __destruct() public function __destruct()
{ {
parent::__destruct(); parent::__destruct();
@@ -3608,7 +3629,7 @@ class MySqlManager extends PhpObject
$asTables = array(); $asTables = array();
foreach($asConstants as $sConstant=>$sConstantValue) foreach($asConstants as $sConstant=>$sConstantValue)
{ {
if(strpos($sConstant, $sTableTag)!==false && strpos($sConstant, $sTableTag)==(strlen($sConstant) - strlen($sTableTag))) if(mb_strpos($sConstant, $sTableTag)!==false && mb_strpos($sConstant, $sTableTag)==(mb_strlen($sConstant) - mb_strlen($sTableTag)))
{ {
$asTables[] = $sConstantValue; $asTables[] = $sConstantValue;
} }
@@ -3619,10 +3640,10 @@ class MySqlManager extends PhpObject
public function install() public function install()
{ {
//Create Database //Create Database
$this->setQuery("DROP DATABASE IF EXISTS ".self::DB_NAME); $this->setQuery("DROP DATABASE IF EXISTS ".$this->sDatabase);
$this->setQuery("CREATE DATABASE ".self::DB_NAME); $this->setQuery("CREATE DATABASE ".$this->sDatabase." DEFAULT CHARACTER SET ".Settings::SQL_ENC." DEFAULT COLLATE ".Settings::SQL_ENC."_general_ci");
//mysql_select_db(self::DB_NAME, $this->oConnection); //mysql_select_db($this->sDatabase, $this->oConnection);
$this->oConnection->select_db(self::DB_NAME); $this->oConnection->select_db($this->sDatabase);
//Create tables //Create tables
@array_walk($this->getInstallQueries(), array($this, 'setQuery')); @array_walk($this->getInstallQueries(), array($this, 'setQuery'));
@@ -3752,8 +3773,8 @@ class MySqlManager extends PhpObject
public static function getText($sTableName, $bFull=false) public static function getText($sTableName, $bFull=false)
{ {
$sColumnName = substr(str_replace('`', '', $sTableName), 0, -1); $sColumnName = mb_substr(str_replace('`', '', $sTableName), 0, -1);
$sColumnName = substr($sColumnName, -2)=='ie'?substr($sColumnName, 0, -2).'y':$sColumnName; $sColumnName = mb_substr($sColumnName, -2)=='ie'?mb_substr($sColumnName, 0, -2).'y':$sColumnName;
return $bFull?self::getFullColumnName($sTableName, $sColumnName):$sColumnName; return $bFull?self::getFullColumnName($sTableName, $sColumnName):$sColumnName;
} }
@@ -4354,7 +4375,7 @@ class ToolBox
//Add Server Name //Add Server Name
$sServerName = array_key_exists('SERVER_NAME', $_SERVER)?$_SERVER['SERVER_NAME']:$_SERVER['PWD']; $sServerName = array_key_exists('SERVER_NAME', $_SERVER)?$_SERVER['SERVER_NAME']:$_SERVER['PWD'];
$sAppPath = 'http://'.str_replace('http://', '', $sServerName.dirname($_SERVER['SCRIPT_NAME'])); $sAppPath = 'http://'.str_replace('http://', '', $sServerName.dirname($_SERVER['SCRIPT_NAME']));
$_GET['serv_name'] = $sAppPath.(substr($sAppPath, -1)!='/'?'/':''); $_GET['serv_name'] = $sAppPath.(mb_substr($sAppPath, -1)!='/'?'/':'');
} }
public static function array_map_encapsulate($oData, $sChar) public static function array_map_encapsulate($oData, $sChar)
@@ -4372,24 +4393,24 @@ class ToolBox
public static function capitalizeWords($acText, $sCharList = '') public static function capitalizeWords($acText, $sCharList = '')
{ {
// Use ucwords if no delimiters are given // Use ToolBox::mb_ucwords if no delimiters are given
if($sCharList=='') { if($sCharList=='') {
return ucwords($acText); return ToolBox::mb_ucwords($acText);
} }
// Go through all characters // Go through all characters
$capitalizeNext = true; $capitalizeNext = true;
$max = strlen($acText); $max = mb_strlen($acText);
for ($i = 0; $i < $max; $i++) for ($i = 0; $i < $max; $i++)
{ {
if(strpos($sCharList, $acText[$i]) !== false) if(mb_strpos($sCharList, $acText[$i]) !== false)
{ {
$capitalizeNext = true; $capitalizeNext = true;
} }
elseif($capitalizeNext) elseif($capitalizeNext)
{ {
$capitalizeNext = false; $capitalizeNext = false;
$acText[$i] = strtoupper($acText[$i]); $acText[$i] = mb_strtoupper($acText[$i]);
} }
} }
@@ -4438,13 +4459,13 @@ class ToolBox
//Look up the extension to choose the image creator //Look up the extension to choose the image creator
//TODO use MIME types //TODO use MIME types
$sInInfo = pathinfo($sInPath); $sInInfo = pathinfo($sInPath);
$sInName = strtolower($sInInfo['basename']); $sInName = mb_strtolower($sInInfo['basename']);
$sImageExt = strtolower($sInInfo['extension']); $sImageExt = mb_strtolower($sInInfo['extension']);
$sImageExt = ($sImageExt=='jpg')?'jpeg':$sImageExt; $sImageExt = ($sImageExt=='jpg')?'jpeg':$sImageExt;
//New Destination folder //New Destination folder
if($sOutPath=='') $sOutPath = $sInPath; if($sOutPath=='') $sOutPath = $sInPath;
elseif(substr($sOutPath, -1)=='/') $sOutPath .= $sInName; elseif(mb_substr($sOutPath, -1)=='/') $sOutPath .= $sInName;
//New sizes //New sizes
if(in_array($sImageExt, Databap::$UPLOAD_IMG_EXTS)) if(in_array($sImageExt, Databap::$UPLOAD_IMG_EXTS))
@@ -4502,13 +4523,15 @@ class ToolBox
return (preg_match('/^.{1}/us', $sText, $ar) == 1); return (preg_match('/^.{1}/us', $sText, $ar) == 1);
} }
/** function mb_ucwords($sText)
* Only works with ISO-8859-1 and UTF-8 encoding
*/
public static function strlen($sText)
{ {
if(utf8_compliant($sText)) return strlen(utf8_decode($sText)); return mb_convert_case($sText, MB_CASE_TITLE, "UTF-8");
else return strlen($sText); }
function file_get_contents_utf8($oFile)
{
$sContent = file_get_contents($oFile);
return mb_convert_encoding($sContent, 'UTF-8', mb_detect_encoding($sContent, 'UTF-8, ISO-8859-1', true));
} }
} }

View File

@@ -71,7 +71,7 @@ class Feed extends PhpObject {
$sItems = implode("\n", array_map(array($this, 'buildItem'), $asSortedItems)); $sItems = implode("\n", array_map(array($this, 'buildItem'), $asSortedItems));
//Global Feed //Global Feed
$sFeed = '<?xml version="1.0" encoding="ISO-8859-1" ?>'; $sFeed = '<?xml version="1.0" encoding="UTF-8" ?>';
$sFeed .= self::getHtml(self::getHtml($sRssFeedHeader.$sItems, 'channel'), 'rss', '', '', array('version'=>'2.0', 'xmlns:atom'=>'http://www.w3.org/2005/Atom')); $sFeed .= self::getHtml(self::getHtml($sRssFeedHeader.$sItems, 'channel'), 'rss', '', '', array('version'=>'2.0', 'xmlns:atom'=>'http://www.w3.org/2005/Atom'));
return $sFeed; return $sFeed;

View File

@@ -171,31 +171,23 @@ if($bUserOk && $sAction!=Databap::EXT_ACCESS)
case 'fix_encoding': case 'fix_encoding':
/** /**
* Procedure (from ISO-8859-1, aka Latin-1) * Procedure (from ISO-8859-1, aka Latin-1)
* - Rss.php : switch ISO <-> UTF : $sFeed = '<?xml version="1.0" encoding="UTF-8" ?>';
* - .htaccess : ajout UTF-8 par défaut : AddDefaultCharset UTF-8 (+check syntax)
* - config.php : Ajouter dans le constructor de Databap :
* - ini_set('default_charset', 'UTF-8');
* - header('Content-Type: text/html; charset=utf-8');
* - config.php : changer tous les ISO en UTF :
* - <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" /> --> <meta http-equiv="content-type" content="text/html; charset=utf-8" />
* - config.php : Enlever la conversion en UTF8 de jsonExport()
* - config.php : Ajouter $this->oConnection->set_charset('utf8'); dans le constructeur de MySqlManager
* - replace strlen with ToolBox::strlen() --> check the so called mb_* functions
* - Re-encode all tables from database using utf8_encode() * - Re-encode all tables from database using utf8_encode()
* - Replace all <form> with <form accept-charset="UTF-8">
* - Alter database and change database generation script in MySqlManager : * - Alter database and change database generation script in MySqlManager :
* - ALTER DATABASE databap CHARACTER SET utf8 COLLATE utf8_general_ci;
* - (ALTER TABLE tablename CHARACTER SET utf8 COLLATE utf8_general_ci;)
* - CREATE DATABASE `my_db` CHARACTER SET = utf8 COLLATE = utf8_general_ci; * - CREATE DATABASE `my_db` CHARACTER SET = utf8 COLLATE = utf8_general_ci;
* - CREATE TABLE `my_table` ([TABLE spec]) CHARACTER SET = utf8 COLLATE = utf8_general_ci; * - (CREATE TABLE `my_table` ([TABLE spec]) CHARACTER SET = utf8 COLLATE = utf8_general_ci;)
* - Convert existing database : * - Convert existing database :
* - mysqldump --default_character_set=latin1 -u root -p my_db > my_db.sql * - mysqldump --default_character_set=latin1 -u root -p my_db > my_db.sql
* - iconv -f iso-8859-1 -t utf8 my_db.sql > my_db-utf8.sql * - iconv -f iso-8859-1 -t utf8 my_db.sql > my_db-utf8.sql
* - sed s/latin1/utf8/ < my_db-utf8.sql > my_db-utf8-final.sql * - sed s/latin1/utf8/ < my_db-utf8.sql > my_db-utf8-final.sql
* - CREATE DATABASE `my_db` CHARACTER SET = utf8 COLLATE = utf8_general_ci; * - CREATE DATABASE `my_db` CHARACTER SET = utf8 COLLATE = utf8_general_ci;
* - mysql -u root -p my_db < my_db-utf8-final.sql * - mysql -u root -p my_db < my_db-utf8-final.sql
* - Switch your editor to UTF-8 (search 'encoding' in Eclipse preferences)
* - check http://webcollab.sourceforge.net/unicode.html * - check http://webcollab.sourceforge.net/unicode.html
* - add mb_* function : sudo apt-get install php-mbstring --> check http://allseeing-i.com/How-to-setup-your-PHP-site-to-use-UTF8 * - add mb_* function : sudo apt-get install php-mbstring --> check http://allseeing-i.com/How-to-setup-your-PHP-site-to-use-UTF8
* - replace strlen with ToolBox::strlen() --> check the so called mb_* functions
*/ */
$sResult = $oDatabap->fixEncoding();
break; break;
} }
} }

View File

@@ -1,8 +1,7 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"> <html xmlns="http://www.w3.org/1999/xhtml">
<head> <head>
<!-- <meta http-equiv="content-type" content="text/html; charset=utf-8" /> --> <meta http-equiv="content-type" content="text/html; charset=#text_enc#" />
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
<meta name="author" content="Francois Lutran" /> <meta name="author" content="Francois Lutran" />
<meta name="description" content="Abap database for consultants" /> <meta name="description" content="Abap database for consultants" />
<meta name="keywords" content="ABAP, SAP, BW, BI" /> <meta name="keywords" content="ABAP, SAP, BW, BI" />

23
readme Normal file
View File

@@ -0,0 +1,23 @@
Hi there!
To install, kindly follow this procedure:
1. Add apache module rewrite (a2enmod rewrite on debian)
2. Add php-curl, php-gd and php-mbstring packages to PHP (if not already built in)
3. Create a settings.php in databap root folder :
<?php
class Settings
{
const DB_SERVER = 'localhost';
const DB_LOGIN = 'root';
const DB_PASS = 'pass';
const DB_NAME = 'databap';
const TIMEZONE = 'Europe/Paris';
const TEXT_ENC = 'UTF-8';
const SQL_ENC = 'utf8';
}
?>
4. You're good to go ! Check users SQL table for default admin user