Converted to UTF-8
This commit is contained in:
@@ -1,3 +1,4 @@
|
|||||||
|
AddDefaultCharset UTF-8
|
||||||
Options +FollowSymlinks
|
Options +FollowSymlinks
|
||||||
RewriteEngine on
|
RewriteEngine on
|
||||||
|
|
||||||
|
|||||||
243
config.php
243
config.php
@@ -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 à '.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;
|
$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é son pseudo en '.$sNewNick;
|
$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);
|
$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é l\'heure. Pour sa gouverne, il est exactement '.date(self::TIME_FORMAT).
|
$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').')';
|
', 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é les chans disponibles. Pour sa gouverne, les chans ayant des membres connectés sont #'.MySqlManager::implodeAll($this->getActiveChannels(), ' (', ', #', '', ')');
|
$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;
|
$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é un reboot. Votre page va se rafraichir automatiquement dans '.self::REBOOT_DELAY.' secondes.';
|
$sMessage = 'L\'administrateur a demandé 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 •</title>
|
<title>Databap •</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));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
18
index.php
18
index.php
@@ -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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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
23
readme
Normal 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
|
||||||
Reference in New Issue
Block a user