diff --git a/config.php b/config.php index 081f7bd..e77908b 100755 --- a/config.php +++ b/config.php @@ -331,7 +331,11 @@ class Databap extends PhpObject function __construct($oClassManagement) { parent::__construct(); + + //Browser <> PHP <> MySql synchronization date_default_timezone_set(Settings::TIMEZONE); + //header('Content-Type: text/html; charset=utf-8'); + $this->oMySql = new MySqlManager(); if($this->oMySql->sDbState == MySqlManager::DB_NO_DATA) $this->install(); $this->oProcedure = new Procedure($this->oMySql); @@ -523,6 +527,8 @@ class Databap extends PhpObject $sSAPDomain = 'http://scn.sap.com'; $sSAPBlogUrl = $sSAPDomain.'/community/data-warehousing/netweaver-bw/blog'; + //TODO add http://www.biportal.org/sap_bi_blog + $oDom = $this->getRemotePageDom($sSAPBlogUrl); $aoArticles = $oDom->getElementsByTagName('header'); @@ -966,8 +972,8 @@ class Databap extends PhpObject $asCode = $this->oMySql->selectRow(MySqlManager::CODE_TABLE, $iCodeId, $asSelect); $asCode['description'] = self::getDescriptionFormat($asCode['description']); - $asCode['led'] = self::getDateFormat($asCode['led']); $asCode['timestamp'] = strtotime($asCode['led']); + $asCode['led'] = self::getDateFormat($asCode['led']); return $asCode; } @@ -976,8 +982,8 @@ class Databap extends PhpObject $asProc = $this->oMySql->selectRow(MySqlManager::PROC_TABLE, $iProcId); $asProc['title'] = self::getDescriptionFormat($asProc['title']); $asProc['description'] = self::getDescriptionFormat($asProc['description']); + $asProc['timestamp'] = strtotime($asProc['led']); $asProc['led'] = self::getDateFormat($asProc['led']); - $asProc['timestamp'] = strtotime($asCode['led']); return $asProc; } @@ -986,8 +992,8 @@ class Databap extends PhpObject $asDoc = $this->oMySql->selectRow(MySqlManager::DOC_TABLE, $iDocId); $asDoc['title'] = self::getDescriptionFormat($asDoc['title']); $asDoc['description'] = self::getDescriptionFormat($asDoc['description']); + $asDoc['timestamp'] = strtotime($asDoc['led']); $asDoc['led'] = self::getDateFormat($asDoc['led']); - $asDoc['timestamp'] = strtotime($asCode['led']); return $asDoc; } @@ -998,8 +1004,8 @@ class Databap extends PhpObject $asTransferredInfo['art_date'] = self::getDateFormat($asArt['date'], self::DATE_FORMAT); $asTransferredInfo['name'] = self::getNameFormat($asArt['first_name'], $asArt['last_name']); $asTransferredInfo['description'] = self::getDescriptionFormat($asArt['title']); + $asTransferredInfo['timestamp'] = strtotime($asArt['led']); $asTransferredInfo['led'] = self::getDateFormat($asArt['led']); - $asTransferredInfo['timestamp'] = strtotime($asCode['led']); $asTransferredInfo['company'] = 'SAP'; return $asTransferredInfo; } @@ -2291,7 +2297,7 @@ class Databap extends PhpObject header('Content-type: application/json'); if($bConvert) { - $asData = MySqlManager::cleanData($asData, 'utf8_encode'); + $asData = ToolBox::cleanData($asData, 'utf8_encode'); } return self::jsonConvert($asData); } @@ -2694,6 +2700,7 @@ class SearchEngine extends PhpObject } $sWords = implode(self::KEYWORDS_SEPARATOR, $asWords); $sWords = 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 //Add / Modify search database @@ -2792,24 +2799,27 @@ class SearchEngine extends PhpObject //$sRegExp = implode('(.{0,2})', $asSequence); $sRegExp = implode(self::KEYWORDS_SEPARATOR.'?', $asSequence); + $sSequence = implode(self::KEYWORDS_SEPARATOR, $asSequence); //TODO replace with selectRow() - $sQuery = "SELECT id_search, id_item, type/*, keywords*/ FROM searchs WHERE keywords REGEXP '{$sRegExp}'"; + $sQuery = "SELECT id_search, id_item, type, keywords FROM searchs WHERE keywords REGEXP '{$sRegExp}'"; //search sequence $asItems = $this->oMySql->getArrayQuery($sQuery, true); foreach($asItems as $asItem) { - $iSearchId = $asItem['id_search']; + $iSearchId = $asItem['id_search']; $iItemId = $asItem['id_item'];; $iItemType = $asItem['type']; - //$sWords = self::KEYWORDS_SEPARATOR.$asItem['keywords'].self::KEYWORDS_SEPARATOR; + $sWords = $asItem['keywords']; - //Calculate hit value - //$iCount = 0; - - $this->incItemRank($iSearchId, $iLevel/**10+$iCount*/); + //Calculte bonus points + $sWords = str_replace(self::KEYWORDS_SEPARATOR.$sSequence.self::KEYWORDS_SEPARATOR, self::KEYWORDS_SEPARATOR, self::KEYWORDS_SEPARATOR.$sWords.self::KEYWORDS_SEPARATOR, $iSeqCount); + $sWords = str_replace(self::KEYWORDS_SEPARATOR.$sSequence, self::KEYWORDS_SEPARATOR, self::KEYWORDS_SEPARATOR.$sWords.self::KEYWORDS_SEPARATOR, $iStaCount); + $sWords = str_replace($sSequence.self::KEYWORDS_SEPARATOR, self::KEYWORDS_SEPARATOR, self::KEYWORDS_SEPARATOR.$sWords.self::KEYWORDS_SEPARATOR, $iEndCount); + $iBonus = $iSeqCount*5 + $iStaCount*2 + $iEndCount; + $this->incItemRank($iSearchId, $iLevel*10+$iBonus); $this->setItemInfo($iSearchId, $iItemType, $iItemId); $this->setUserInfo($this->getItemInfo($iSearchId, MySqlManager::getId(MySqlManager::USER_TABLE))); } @@ -3550,16 +3560,27 @@ class MySqlManager extends PhpObject public function __construct() { parent::__construct(); - $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); + + /* + $dsn = 'mysql:dbname=databap;host=127.0.0.1'; + try {$dbh = new PDO($dsn, self::DB_LOGIN, self::DB_PASS);} + catch (PDOException $e) {$this->addError('Connexion échouée : ' . $e->getMessage());} + */ + $this->setTrace(false); - if(!$this->oConnection) + //if(!$this->oConnection) + if($this->oConnection->connect_error) { - $this->addError('bug connection'); + //$this->addError('bug connection'); + $this->addError('bug connection : '.$this->oConnection->connect_error); $this->sDbState = self::DB_NO_CONN; } else { - if(!mysql_select_db(self::DB_NAME, $this->oConnection)) + //if(!mysql_select_db(self::DB_NAME, $this->oConnection)) + if(!$this->oConnection->select_db(self::DB_NAME)) { $this->addError('bug selecting database. Installing...'); $this->sDbState = self::DB_NO_DATA; @@ -3570,7 +3591,8 @@ class MySqlManager extends PhpObject public function __destruct() { parent::__destruct(); - mysql_close($this->oConnection); + //mysql_close($this->oConnection); + $this->oConnection->close(); } public function setTrace($bAction) @@ -3599,7 +3621,8 @@ class MySqlManager extends PhpObject //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); + //mysql_select_db(self::DB_NAME, $this->oConnection); + $this->oConnection->select_db(self::DB_NAME); //Create tables @array_walk($this->getInstallQueries(), array($this, 'setQuery')); @@ -3648,13 +3671,14 @@ class MySqlManager extends PhpObject private function setQuery($sQuery, $sTypeQuery=__FUNCTION__) { $this->getQuery($sQuery, $sTypeQuery); - return (mysql_affected_rows()!=0); + //return (mysql_affected_rows()!=0); + return ($this->oConnection->affected_rows!=0); } private function getQuery($sQuery, $sTypeQuery=__FUNCTION__) { $sQuery = str_replace(array("\n", "\t"), array(" ", ""), $sQuery); - $oResult = mysql_query($sQuery, $this->oConnection); + //$oResult = mysql_query($sQuery, $this->oConnection); if($this->bTrace) { @@ -3662,9 +3686,9 @@ class MySqlManager extends PhpObject $this->addNotice($sQuery); } - if(!$oResult) + if(!($oResult = $this->oConnection->query($sQuery))) { - $this->addError("\nErreur SQL : \n".str_replace("\t", "", $sQuery)."\n\n".str_replace(array("\t", "\n"), "", mysql_error())); + $this->addError("\nErreur SQL : \n".str_replace("\t", "", $sQuery)."\n\n".str_replace(array("\t", "\n"), "", $this->oConnection->error)); } return $oResult; } @@ -3677,7 +3701,8 @@ class MySqlManager extends PhpObject $oResult = $this->getQuery($sQuery, true, $sTypeQuery); if($oResult!==false) { - while($asCurrentRow = mysql_fetch_array($oResult)) + //while($asCurrentRow = mysql_fetch_array($oResult)) + while($asCurrentRow = $oResult->fetch_array()) { if($bStringOnly) { @@ -4225,10 +4250,12 @@ class MySqlManager extends PhpObject return $this->selectValue($sTableName, 'COUNT(1)', $oConstraints); } - public static function cleanSql(&$oData) + public function cleanSql(&$oData) { - self::cleanData($oData, 'mysql_real_escape_string'); - $oData = self::cleanData($oData, 'mysql_real_escape_string'); + //self::cleanData($oData, 'mysql_real_escape_string'); + //$oData = self::cleanData($oData, 'mysql_real_escape_string'); + $this->cleanData($oData); + $oData = $this->cleanData($oData); } public static function implodeAll($asText, $asKeyValueSeparator='', $sRowSeparator='', $sKeyPre='', $sValuePost=false) @@ -4258,18 +4285,16 @@ class MySqlManager extends PhpObject return array_intersect_key($asArray, $asValidKeys); } - public static function cleanData($oData, $sCleaningFunc) + public function cleanData($oData) { if(!is_array($oData)) { - $test = call_user_func($sCleaningFunc, $oData); - return $test; + return $this->oConnection->real_escape_string($oData); } elseif(count($oData)>0) { - $asCleaningFunc = array_fill(1, count($oData), $sCleaningFunc); - $asKeys = array_map(array('self', 'cleanData'), array_keys($oData), $asCleaningFunc); - $asValues = array_map(array('self', 'cleanData'), $oData, $asCleaningFunc); + $asKeys = array_map(array($this, 'cleanData'), array_keys($oData)); + $asValues = array_map(array($this, 'cleanData'), $oData); return array_combine($asKeys, $asValues); } } @@ -4302,7 +4327,22 @@ class ToolBox //get rid of magic quotes if(function_exists('get_magic_quotes_gpc') && get_magic_quotes_gpc()) { - $asData = MySqlManager::cleanData($asData, 'stripslashes'); + $asData = self::cleanData($asData, 'stripslashes'); + } + } + + public static function cleanData($oData, $sCleaningFunc) + { + if(!is_array($oData)) + { + return call_user_func($sCleaningFunc, $oData); + } + elseif(count($oData)>0) + { + $asCleaningFunc = array_fill(1, count($oData), $sCleaningFunc); + $asKeys = array_map(array('self', 'cleanData'), array_keys($oData), $asCleaningFunc); + $asValues = array_map(array('self', 'cleanData'), $oData, $asCleaningFunc); + return array_combine($asKeys, $asValues); } } diff --git a/masks/index.html b/masks/index.html index 767da55..e1a8312 100755 --- a/masks/index.html +++ b/masks/index.html @@ -1,6 +1,7 @@ +