Converted to UTF-8
This commit is contained in:
245
config.php
245
config.php
@@ -331,18 +331,27 @@ class Databap extends PhpObject
|
||||
function __construct($oClassManagement)
|
||||
{
|
||||
parent::__construct();
|
||||
$this->oClassManagement = $oClassManagement;
|
||||
|
||||
//Browser <> PHP <> MySql synchronization
|
||||
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();
|
||||
|
||||
//Init other variables
|
||||
$this->oProcedure = new Procedure($this->oMySql);
|
||||
$this->setUserId(0);
|
||||
$this->sLanguage = self::LANG_FR;
|
||||
$this->oSearchEngine = new SearchEngine($this->oMySql);
|
||||
$this->oClassManagement = $oClassManagement;
|
||||
}
|
||||
|
||||
private function install()
|
||||
@@ -387,6 +396,7 @@ class Databap extends PhpObject
|
||||
public function getPage($sPage, $asVars)
|
||||
{
|
||||
$oPage = new Mask('index');
|
||||
$oPage->setTag('text_enc', Settings::TEXT_ENC);
|
||||
$oPage->setTag('first_page', $sPage);
|
||||
$oPage->setTag('index_link', $asVars['serv_name']);
|
||||
$oPage->setTag('line_break', "Global databap constants\n");
|
||||
@@ -453,7 +463,7 @@ class Databap extends PhpObject
|
||||
$oFeed = new Feed($asDesc);
|
||||
|
||||
//Building items
|
||||
switch(strtolower($sCat))
|
||||
switch(mb_strtolower($sCat))
|
||||
{
|
||||
case '9gag':
|
||||
$sRegEx = '^(https?://|www\\.)(.*)9gag\\.com';
|
||||
@@ -546,13 +556,13 @@ class Databap extends PhpObject
|
||||
//Title & link
|
||||
case 'font-color-normal':
|
||||
$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['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;
|
||||
//Author
|
||||
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['last_name'] = implode('-', $asNames);
|
||||
$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)
|
||||
{
|
||||
$sFirstName = strtolower($sFirstName);
|
||||
$sLastName = strtolower($sLastName);
|
||||
$sCompany = strtolower($sCompany);
|
||||
$sEmail = strtolower($sEmail);
|
||||
$sFirstName = mb_strtolower($sFirstName);
|
||||
$sLastName = mb_strtolower($sLastName);
|
||||
$sCompany = mb_strtolower($sCompany);
|
||||
$sEmail = mb_strtolower($sEmail);
|
||||
|
||||
//Checking company existency in company 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,
|
||||
'last_name'=>$sLastName,
|
||||
@@ -970,7 +980,7 @@ class Databap extends PhpObject
|
||||
$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['timestamp'] = strtotime($asCode['led']);
|
||||
$asCode['led'] = self::getDateFormat($asCode['led']);
|
||||
@@ -1447,31 +1457,31 @@ class Databap extends PhpObject
|
||||
{
|
||||
$sMessage = htmlspecialchars($sMessage);
|
||||
$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;
|
||||
$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;
|
||||
$sMessage = ' fout une grosse tarte à '.substr($sMessage, 5);
|
||||
$sMessage = ' fout une grosse tarte à '.mb_substr($sMessage, 5);
|
||||
}
|
||||
elseif(substr($sMessage, 0, 4) == '/bs ')
|
||||
elseif(mb_substr($sMessage, 0, 4) == '/bs ')
|
||||
{
|
||||
$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;
|
||||
$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()));
|
||||
|
||||
//changing Nickname
|
||||
@@ -1482,9 +1492,9 @@ class Databap extends PhpObject
|
||||
$sChanName = self::ALL_CHAN_TEXT;
|
||||
$sMessage = $sOldNick.' a changé 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);
|
||||
|
||||
//changing Nickname
|
||||
@@ -1495,13 +1505,13 @@ class Databap extends PhpObject
|
||||
$sChanName = self::ALL_CHAN_TEXT;
|
||||
$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>.*)/';
|
||||
preg_match($sImagePattern, $sMessage, $asMatches);
|
||||
|
||||
//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);
|
||||
$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;
|
||||
}
|
||||
elseif(substr($sMessage, 0, 5) == '/mean')
|
||||
elseif(mb_substr($sMessage, 0, 5) == '/mean')
|
||||
{
|
||||
$sPageContent = file_get_contents('http://www.randominsults.net/');
|
||||
$sStartText = '<strong><i>';
|
||||
$sEndText = '</i></strong>';
|
||||
$iStartPos = strpos($sPageContent, $sStartText);
|
||||
$iEndPos = strpos($sPageContent, $sEndText);
|
||||
$iStartPos = mb_strpos($sPageContent, $sStartText);
|
||||
$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;
|
||||
$sMessage = ' plussoie';
|
||||
}
|
||||
elseif(substr($sMessage, 0, 4) == '/now')
|
||||
elseif(mb_substr($sMessage, 0, 4) == '/now')
|
||||
{
|
||||
$sType = self::MESSAGE_ACTION;
|
||||
$asWeekDays = array('lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi', 'dimanche');
|
||||
@@ -1553,15 +1563,15 @@ class Databap extends PhpObject
|
||||
$sMessage = ' a demandé 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').')';
|
||||
}
|
||||
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)
|
||||
$sMessage = ' a demandé les chans disponibles. Pour sa gouverne, les chans ayant des membres connectés sont #'.MySqlManager::implodeAll($this->getActiveChannels(), ' (', ', #', '', ')');
|
||||
$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);
|
||||
if($asResult['error']=='')
|
||||
{
|
||||
@@ -1569,18 +1579,18 @@ class Databap extends PhpObject
|
||||
$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;
|
||||
}
|
||||
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é un reboot. Votre page va se rafraichir automatiquement dans '.self::REBOOT_DELAY.' secondes.';
|
||||
$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;
|
||||
}
|
||||
@@ -1596,7 +1606,7 @@ class Databap extends PhpObject
|
||||
private function downloadToTmp($sUrl)
|
||||
{
|
||||
$sFileInfo = pathinfo($sUrl);
|
||||
$sImageExt = strtolower($sFileInfo['extension']);
|
||||
$sImageExt = mb_strtolower($sFileInfo['extension']);
|
||||
$sFilePath = self::DOC_TMP_FOLDER.uniqid().'.'.$sImageExt;
|
||||
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);
|
||||
|
||||
//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);
|
||||
foreach($asSqlMessages as $iMessageId=>$asMessageInfo)
|
||||
{
|
||||
@@ -1728,9 +1738,9 @@ class Databap extends PhpObject
|
||||
}
|
||||
|
||||
//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
|
||||
{
|
||||
@@ -1743,7 +1753,7 @@ class Databap extends PhpObject
|
||||
$asPatterns = '/(^|\s)#(\w*[^\s]+\w*)/';
|
||||
$asLinks = '\1<span class="chan_link clickable">#<span class="chan_text">\2</span></span>';
|
||||
$asMessages['messages'][$iMessageId]['message'] = preg_replace($asPatterns, $asLinks, $asMessages['messages'][$iMessageId]['message']);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//Set last message Id (if new messages since $iFirstMsgId)
|
||||
@@ -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">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<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'].')" />
|
||||
<link rel="shortcut icon" href="images/favicon_gc3.ico" />
|
||||
<title>Databap •</title>
|
||||
@@ -2067,8 +2077,8 @@ class Databap extends PhpObject
|
||||
//login using form
|
||||
if($sName!='' && $sCompany!='')
|
||||
{
|
||||
$asNames = explode(' ', strtolower($sName));
|
||||
$sCompany = strtolower($sCompany);
|
||||
$asNames = explode(' ', mb_strtolower($sName));
|
||||
$sCompany = mb_strtolower($sCompany);
|
||||
|
||||
//Get Company's Id
|
||||
$iCompanyId = $this->oMySql->selectValue(MySqlManager::COMP_TABLE, $sCompanyTableId, array($sCompanyTableText=>$sCompany));
|
||||
@@ -2091,7 +2101,7 @@ class Databap extends PhpObject
|
||||
$iUserId = $asUserInfo[$sUserTableId];
|
||||
|
||||
//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)
|
||||
elseif($sAction==self::EXT_ACCESS && $sToken!='')
|
||||
@@ -2114,14 +2124,14 @@ class Databap extends PhpObject
|
||||
|
||||
public function checkToken($sKey)
|
||||
{
|
||||
$iUserId = strstr($sKey, '_', true);
|
||||
$sToken = substr($sKey, strlen($iUserId)+1);
|
||||
return (strlen($sToken)==self::TOKEN_LENGTH && $this->generateToken($iUserId)==$sToken && $this->checkValue(MySqlManager::USER_TABLE, $iUserId))?$iUserId:0;
|
||||
$iUserId = mb_strstr($sKey, '_', true);
|
||||
$sToken = mb_substr($sKey, mb_strlen($iUserId)+1);
|
||||
return (mb_strlen($sToken)==self::TOKEN_LENGTH && $this->generateToken($iUserId)==$sToken && $this->checkValue(MySqlManager::USER_TABLE, $iUserId))?$iUserId:0;
|
||||
}
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
@@ -2190,7 +2200,7 @@ class Databap extends PhpObject
|
||||
return self::encryptPassword( $_SERVER['HTTP_USER_AGENT'].
|
||||
$_SERVER['REMOTE_ADDR'].
|
||||
$_SERVER['REQUEST_TIME'].
|
||||
strstr(microtime(), ' ', true).
|
||||
mb_strstr(microtime(), ' ', true).
|
||||
$_SERVER['SERVER_SIGNATURE'].
|
||||
$_SERVER['SERVER_ADMIN']);
|
||||
}
|
||||
@@ -2198,16 +2208,16 @@ class Databap extends PhpObject
|
||||
private static function encryptPassword($sPass)
|
||||
{
|
||||
$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);
|
||||
}
|
||||
|
||||
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
|
||||
$asPm = self::isPmChan($sChanSafeName);
|
||||
@@ -2284,7 +2294,7 @@ class Databap extends PhpObject
|
||||
|
||||
public static function getCompanyFormat($sCompany)
|
||||
{
|
||||
return ucwords($sCompany);
|
||||
return ToolBox::mb_ucwords($sCompany);
|
||||
}
|
||||
|
||||
public static function getDescriptionFormat($sDescription)
|
||||
@@ -2292,13 +2302,9 @@ class Databap extends PhpObject
|
||||
return ucfirst($sDescription);
|
||||
}
|
||||
|
||||
public static function jsonExport($asData, $bConvert=false)
|
||||
public static function jsonExport($asData)
|
||||
{
|
||||
header('Content-type: application/json');
|
||||
if($bConvert)
|
||||
{
|
||||
$asData = ToolBox::cleanData($asData, 'utf8_encode');
|
||||
}
|
||||
return self::jsonConvert($asData);
|
||||
}
|
||||
|
||||
@@ -2319,7 +2325,7 @@ class Databap extends PhpObject
|
||||
public static function toBytes($str)
|
||||
{
|
||||
$val = trim($str);
|
||||
$last = strtolower($str[strlen($str)-1]);
|
||||
$last = mb_strtolower($str[mb_strlen($str)-1]);
|
||||
switch($last) {
|
||||
case 'g': $val *= 1024;
|
||||
case 'm': $val *= 1024;
|
||||
@@ -2699,7 +2705,7 @@ class SearchEngine extends PhpObject
|
||||
break;
|
||||
}
|
||||
$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
|
||||
$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)
|
||||
{
|
||||
return (strlen($sWord) >= 2);
|
||||
return (mb_strlen($sWord) >= 2);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3063,7 +3069,7 @@ class Reader
|
||||
}
|
||||
|
||||
//Enlarge line
|
||||
if(strpos($sLine, $sServName) !== false)
|
||||
if(mb_strpos($sLine, $sServName) !== false)
|
||||
{
|
||||
$sLiClass .= ' bigline';
|
||||
}
|
||||
@@ -3098,11 +3104,11 @@ class Reader
|
||||
//Core Words
|
||||
foreach($this->getWords('wCore') as $sCoreWord)
|
||||
{
|
||||
$sCoreWord = strtolower($sCoreWord);
|
||||
$sCoreWord = mb_strtolower($sCoreWord);
|
||||
$sPattern = '/>(([^<]*)([^\w&<]{1})|.{0})('.$sCoreWord.')([\W])/';
|
||||
$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';
|
||||
//$sCode = preg_replace($sPattern, '>$1<span class="core">$4</span>', $sCode);
|
||||
|
||||
@@ -3114,7 +3120,7 @@ class Reader
|
||||
$sPattern = '/>([^<]*)\\'.$sOpWord.'/';
|
||||
$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;
|
||||
//$sCode = preg_replace($sPattern, '>$1<span class="operator">$2$3</span>', $sCode);
|
||||
|
||||
@@ -3128,12 +3134,12 @@ class Reader
|
||||
|
||||
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)
|
||||
{
|
||||
return substr(str_replace('.', ' ', trim($sText)), 0, 1);
|
||||
return mb_substr(str_replace('.', ' ', trim($sText)), 0, 1);
|
||||
}
|
||||
|
||||
private function addColor(&$sText, $sWord, $sClassColor)
|
||||
@@ -3148,7 +3154,7 @@ class Reader
|
||||
|
||||
public static function convText2Html($sCode)
|
||||
{
|
||||
return htmlspecialchars(strtolower($sCode), ENT_QUOTES);
|
||||
return htmlspecialchars(mb_strtolower($sCode), ENT_QUOTES);
|
||||
}
|
||||
|
||||
public function getColoredCode()
|
||||
@@ -3237,7 +3243,7 @@ class Mask extends PhpObject
|
||||
{
|
||||
$iStartPos = $this->getPartStartPos($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);
|
||||
$this->sMask = str_replace($sExtendedPart, $this->getPartTagPattern($sPartName), $this->sMask);
|
||||
return $sPart;
|
||||
@@ -3246,13 +3252,13 @@ class Mask extends PhpObject
|
||||
private function getPartStartPos($sPartName)
|
||||
{
|
||||
$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)
|
||||
{
|
||||
$sPartEndPattern = $this->getPartPattern($sPartName, self::END_TAG);
|
||||
return strpos($this->sMask, $sPartEndPattern);
|
||||
return mb_strpos($this->sMask, $sPartEndPattern);
|
||||
}
|
||||
|
||||
private function getPartPattern($sPartName, $sAction)
|
||||
@@ -3373,7 +3379,7 @@ class fileUploader
|
||||
function __construct($sFolderPath, $asAllowedExtensions = array()/*, $sizeLimit = 10485760*/)
|
||||
{
|
||||
$this->sFolderPath = $sFolderPath;
|
||||
$this->asAllowedExtensions = array_map("strtolower", $asAllowedExtensions);
|
||||
$this->asAllowedExtensions = array_map("mb_strtolower", $asAllowedExtensions);
|
||||
//$this->iSizeLimit = $sizeLimit;
|
||||
//$this->checkServerSettings();
|
||||
$this->iSizeLimit = Databap::getMaxSize();
|
||||
@@ -3409,7 +3415,7 @@ class fileUploader
|
||||
private function toBytes($str)
|
||||
{
|
||||
$val = trim($str);
|
||||
$last = strtolower($str[strlen($str)-1]);
|
||||
$last = mb_strtolower($str[mb_strlen($str)-1]);
|
||||
switch($last) {
|
||||
case 'g': $val *= 1024;
|
||||
case 'm': $val *= 1024;
|
||||
@@ -3480,7 +3486,7 @@ class fileUploader
|
||||
}
|
||||
|
||||
$asPathInfo = pathinfo($this->getName());
|
||||
$sExt = strtolower($asPathInfo['extension']);
|
||||
$sExt = mb_strtolower($asPathInfo['extension']);
|
||||
$sExt = ($sExt=='jpg')?'jpeg':$sExt;
|
||||
if($this->asAllowedExtensions && !in_array($sExt, $this->asAllowedExtensions))
|
||||
{
|
||||
@@ -3523,10 +3529,6 @@ class fileUploader
|
||||
*/
|
||||
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_DATA = 'ERR_2';
|
||||
const ID_TAG = 'id_';
|
||||
@@ -3555,16 +3557,19 @@ class MySqlManager extends PhpObject
|
||||
|
||||
public $sDbState;
|
||||
private $oConnection;
|
||||
private $sDatabase; //TODO Variable ?
|
||||
private $bTrace;
|
||||
|
||||
public function __construct()
|
||||
public function __construct($sDbServer, $sLogin, $sPass, $sDatabase, $sEncoding)
|
||||
{
|
||||
parent::__construct();
|
||||
$this->sDatabase = $sDatabase;
|
||||
//$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);}
|
||||
catch (PDOException $e) {$this->addError('Connexion échouée : ' . $e->getMessage());}
|
||||
*/
|
||||
@@ -3579,14 +3584,30 @@ class MySqlManager extends PhpObject
|
||||
}
|
||||
else
|
||||
{
|
||||
//if(!mysql_select_db(self::DB_NAME, $this->oConnection))
|
||||
if(!$this->oConnection->select_db(self::DB_NAME))
|
||||
//if(!mysql_select_db($this->sDatabase, $this->oConnection))
|
||||
if(!$this->oConnection->select_db($this->sDatabase))
|
||||
{
|
||||
$this->addError('bug selecting database. Installing...');
|
||||
$this->sDbState = self::DB_NO_DATA;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
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()
|
||||
{
|
||||
@@ -3608,7 +3629,7 @@ class MySqlManager extends PhpObject
|
||||
$asTables = array();
|
||||
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;
|
||||
}
|
||||
@@ -3619,10 +3640,10 @@ class MySqlManager extends PhpObject
|
||||
public function install()
|
||||
{
|
||||
//Create Database
|
||||
$this->setQuery("DROP DATABASE IF EXISTS ".self::DB_NAME);
|
||||
$this->setQuery("CREATE DATABASE ".self::DB_NAME);
|
||||
//mysql_select_db(self::DB_NAME, $this->oConnection);
|
||||
$this->oConnection->select_db(self::DB_NAME);
|
||||
$this->setQuery("DROP DATABASE IF EXISTS ".$this->sDatabase);
|
||||
$this->setQuery("CREATE DATABASE ".$this->sDatabase." DEFAULT CHARACTER SET ".Settings::SQL_ENC." DEFAULT COLLATE ".Settings::SQL_ENC."_general_ci");
|
||||
//mysql_select_db($this->sDatabase, $this->oConnection);
|
||||
$this->oConnection->select_db($this->sDatabase);
|
||||
|
||||
//Create tables
|
||||
@array_walk($this->getInstallQueries(), array($this, 'setQuery'));
|
||||
@@ -3752,8 +3773,8 @@ class MySqlManager extends PhpObject
|
||||
|
||||
public static function getText($sTableName, $bFull=false)
|
||||
{
|
||||
$sColumnName = substr(str_replace('`', '', $sTableName), 0, -1);
|
||||
$sColumnName = substr($sColumnName, -2)=='ie'?substr($sColumnName, 0, -2).'y':$sColumnName;
|
||||
$sColumnName = mb_substr(str_replace('`', '', $sTableName), 0, -1);
|
||||
$sColumnName = mb_substr($sColumnName, -2)=='ie'?mb_substr($sColumnName, 0, -2).'y':$sColumnName;
|
||||
return $bFull?self::getFullColumnName($sTableName, $sColumnName):$sColumnName;
|
||||
}
|
||||
|
||||
@@ -4354,7 +4375,7 @@ class ToolBox
|
||||
//Add Server Name
|
||||
$sServerName = array_key_exists('SERVER_NAME', $_SERVER)?$_SERVER['SERVER_NAME']:$_SERVER['PWD'];
|
||||
$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)
|
||||
@@ -4372,24 +4393,24 @@ class ToolBox
|
||||
|
||||
public static function capitalizeWords($acText, $sCharList = '')
|
||||
{
|
||||
// Use ucwords if no delimiters are given
|
||||
// Use ToolBox::mb_ucwords if no delimiters are given
|
||||
if($sCharList=='') {
|
||||
return ucwords($acText);
|
||||
return ToolBox::mb_ucwords($acText);
|
||||
}
|
||||
|
||||
// Go through all characters
|
||||
$capitalizeNext = true;
|
||||
$max = strlen($acText);
|
||||
$max = mb_strlen($acText);
|
||||
for ($i = 0; $i < $max; $i++)
|
||||
{
|
||||
if(strpos($sCharList, $acText[$i]) !== false)
|
||||
if(mb_strpos($sCharList, $acText[$i]) !== false)
|
||||
{
|
||||
$capitalizeNext = true;
|
||||
}
|
||||
elseif($capitalizeNext)
|
||||
{
|
||||
$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
|
||||
//TODO use MIME types
|
||||
$sInInfo = pathinfo($sInPath);
|
||||
$sInName = strtolower($sInInfo['basename']);
|
||||
$sImageExt = strtolower($sInInfo['extension']);
|
||||
$sInName = mb_strtolower($sInInfo['basename']);
|
||||
$sImageExt = mb_strtolower($sInInfo['extension']);
|
||||
$sImageExt = ($sImageExt=='jpg')?'jpeg':$sImageExt;
|
||||
|
||||
//New Destination folder
|
||||
if($sOutPath=='') $sOutPath = $sInPath;
|
||||
elseif(substr($sOutPath, -1)=='/') $sOutPath .= $sInName;
|
||||
elseif(mb_substr($sOutPath, -1)=='/') $sOutPath .= $sInName;
|
||||
|
||||
//New sizes
|
||||
if(in_array($sImageExt, Databap::$UPLOAD_IMG_EXTS))
|
||||
@@ -4502,13 +4523,15 @@ class ToolBox
|
||||
return (preg_match('/^.{1}/us', $sText, $ar) == 1);
|
||||
}
|
||||
|
||||
/**
|
||||
* Only works with ISO-8859-1 and UTF-8 encoding
|
||||
*/
|
||||
public static function strlen($sText)
|
||||
function mb_ucwords($sText)
|
||||
{
|
||||
if(utf8_compliant($sText)) return strlen(utf8_decode($sText));
|
||||
else return strlen($sText);
|
||||
return mb_convert_case($sText, MB_CASE_TITLE, "UTF-8");
|
||||
}
|
||||
|
||||
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));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user