fix search priority

This commit is contained in:
2013-10-10 19:01:07 +02:00
parent 869d989627
commit 5e088b808e
2 changed files with 74 additions and 33 deletions

View File

@@ -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);
}
}