fix search priority
This commit is contained in:
104
config.php
104
config.php
@@ -331,7 +331,11 @@ class Databap extends PhpObject
|
|||||||
function __construct($oClassManagement)
|
function __construct($oClassManagement)
|
||||||
{
|
{
|
||||||
parent::__construct();
|
parent::__construct();
|
||||||
|
|
||||||
|
//Browser <> PHP <> MySql synchronization
|
||||||
date_default_timezone_set(Settings::TIMEZONE);
|
date_default_timezone_set(Settings::TIMEZONE);
|
||||||
|
//header('Content-Type: text/html; charset=utf-8');
|
||||||
|
|
||||||
$this->oMySql = new MySqlManager();
|
$this->oMySql = new MySqlManager();
|
||||||
if($this->oMySql->sDbState == MySqlManager::DB_NO_DATA) $this->install();
|
if($this->oMySql->sDbState == MySqlManager::DB_NO_DATA) $this->install();
|
||||||
$this->oProcedure = new Procedure($this->oMySql);
|
$this->oProcedure = new Procedure($this->oMySql);
|
||||||
@@ -523,6 +527,8 @@ class Databap extends PhpObject
|
|||||||
$sSAPDomain = 'http://scn.sap.com';
|
$sSAPDomain = 'http://scn.sap.com';
|
||||||
$sSAPBlogUrl = $sSAPDomain.'/community/data-warehousing/netweaver-bw/blog';
|
$sSAPBlogUrl = $sSAPDomain.'/community/data-warehousing/netweaver-bw/blog';
|
||||||
|
|
||||||
|
//TODO add http://www.biportal.org/sap_bi_blog
|
||||||
|
|
||||||
$oDom = $this->getRemotePageDom($sSAPBlogUrl);
|
$oDom = $this->getRemotePageDom($sSAPBlogUrl);
|
||||||
$aoArticles = $oDom->getElementsByTagName('header');
|
$aoArticles = $oDom->getElementsByTagName('header');
|
||||||
|
|
||||||
@@ -966,8 +972,8 @@ class Databap extends PhpObject
|
|||||||
|
|
||||||
$asCode = $this->oMySql->selectRow(MySqlManager::CODE_TABLE, $iCodeId, $asSelect);
|
$asCode = $this->oMySql->selectRow(MySqlManager::CODE_TABLE, $iCodeId, $asSelect);
|
||||||
$asCode['description'] = self::getDescriptionFormat($asCode['description']);
|
$asCode['description'] = self::getDescriptionFormat($asCode['description']);
|
||||||
$asCode['led'] = self::getDateFormat($asCode['led']);
|
|
||||||
$asCode['timestamp'] = strtotime($asCode['led']);
|
$asCode['timestamp'] = strtotime($asCode['led']);
|
||||||
|
$asCode['led'] = self::getDateFormat($asCode['led']);
|
||||||
return $asCode;
|
return $asCode;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -976,8 +982,8 @@ class Databap extends PhpObject
|
|||||||
$asProc = $this->oMySql->selectRow(MySqlManager::PROC_TABLE, $iProcId);
|
$asProc = $this->oMySql->selectRow(MySqlManager::PROC_TABLE, $iProcId);
|
||||||
$asProc['title'] = self::getDescriptionFormat($asProc['title']);
|
$asProc['title'] = self::getDescriptionFormat($asProc['title']);
|
||||||
$asProc['description'] = self::getDescriptionFormat($asProc['description']);
|
$asProc['description'] = self::getDescriptionFormat($asProc['description']);
|
||||||
|
$asProc['timestamp'] = strtotime($asProc['led']);
|
||||||
$asProc['led'] = self::getDateFormat($asProc['led']);
|
$asProc['led'] = self::getDateFormat($asProc['led']);
|
||||||
$asProc['timestamp'] = strtotime($asCode['led']);
|
|
||||||
return $asProc;
|
return $asProc;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -986,8 +992,8 @@ class Databap extends PhpObject
|
|||||||
$asDoc = $this->oMySql->selectRow(MySqlManager::DOC_TABLE, $iDocId);
|
$asDoc = $this->oMySql->selectRow(MySqlManager::DOC_TABLE, $iDocId);
|
||||||
$asDoc['title'] = self::getDescriptionFormat($asDoc['title']);
|
$asDoc['title'] = self::getDescriptionFormat($asDoc['title']);
|
||||||
$asDoc['description'] = self::getDescriptionFormat($asDoc['description']);
|
$asDoc['description'] = self::getDescriptionFormat($asDoc['description']);
|
||||||
|
$asDoc['timestamp'] = strtotime($asDoc['led']);
|
||||||
$asDoc['led'] = self::getDateFormat($asDoc['led']);
|
$asDoc['led'] = self::getDateFormat($asDoc['led']);
|
||||||
$asDoc['timestamp'] = strtotime($asCode['led']);
|
|
||||||
return $asDoc;
|
return $asDoc;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -998,8 +1004,8 @@ class Databap extends PhpObject
|
|||||||
$asTransferredInfo['art_date'] = self::getDateFormat($asArt['date'], self::DATE_FORMAT);
|
$asTransferredInfo['art_date'] = self::getDateFormat($asArt['date'], self::DATE_FORMAT);
|
||||||
$asTransferredInfo['name'] = self::getNameFormat($asArt['first_name'], $asArt['last_name']);
|
$asTransferredInfo['name'] = self::getNameFormat($asArt['first_name'], $asArt['last_name']);
|
||||||
$asTransferredInfo['description'] = self::getDescriptionFormat($asArt['title']);
|
$asTransferredInfo['description'] = self::getDescriptionFormat($asArt['title']);
|
||||||
|
$asTransferredInfo['timestamp'] = strtotime($asArt['led']);
|
||||||
$asTransferredInfo['led'] = self::getDateFormat($asArt['led']);
|
$asTransferredInfo['led'] = self::getDateFormat($asArt['led']);
|
||||||
$asTransferredInfo['timestamp'] = strtotime($asCode['led']);
|
|
||||||
$asTransferredInfo['company'] = 'SAP';
|
$asTransferredInfo['company'] = 'SAP';
|
||||||
return $asTransferredInfo;
|
return $asTransferredInfo;
|
||||||
}
|
}
|
||||||
@@ -2291,7 +2297,7 @@ class Databap extends PhpObject
|
|||||||
header('Content-type: application/json');
|
header('Content-type: application/json');
|
||||||
if($bConvert)
|
if($bConvert)
|
||||||
{
|
{
|
||||||
$asData = MySqlManager::cleanData($asData, 'utf8_encode');
|
$asData = ToolBox::cleanData($asData, 'utf8_encode');
|
||||||
}
|
}
|
||||||
return self::jsonConvert($asData);
|
return self::jsonConvert($asData);
|
||||||
}
|
}
|
||||||
@@ -2694,6 +2700,7 @@ class SearchEngine extends PhpObject
|
|||||||
}
|
}
|
||||||
$sWords = implode(self::KEYWORDS_SEPARATOR, $asWords);
|
$sWords = implode(self::KEYWORDS_SEPARATOR, $asWords);
|
||||||
$sWords = strtolower(str_replace("\n", self::KEYWORDS_SEPARATOR, $sWords));
|
$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
|
$sWords = preg_replace('/(\W+)/', self::KEYWORDS_SEPARATOR, $sWords); //remove all non-word characters
|
||||||
|
|
||||||
//Add / Modify search database
|
//Add / Modify search database
|
||||||
@@ -2792,9 +2799,10 @@ class SearchEngine extends PhpObject
|
|||||||
|
|
||||||
//$sRegExp = implode('(.{0,2})', $asSequence);
|
//$sRegExp = implode('(.{0,2})', $asSequence);
|
||||||
$sRegExp = implode(self::KEYWORDS_SEPARATOR.'?', $asSequence);
|
$sRegExp = implode(self::KEYWORDS_SEPARATOR.'?', $asSequence);
|
||||||
|
$sSequence = implode(self::KEYWORDS_SEPARATOR, $asSequence);
|
||||||
|
|
||||||
//TODO replace with selectRow()
|
//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
|
//search sequence
|
||||||
$asItems = $this->oMySql->getArrayQuery($sQuery, true);
|
$asItems = $this->oMySql->getArrayQuery($sQuery, true);
|
||||||
@@ -2803,13 +2811,15 @@ class SearchEngine extends PhpObject
|
|||||||
$iSearchId = $asItem['id_search'];
|
$iSearchId = $asItem['id_search'];
|
||||||
$iItemId = $asItem['id_item'];;
|
$iItemId = $asItem['id_item'];;
|
||||||
$iItemType = $asItem['type'];
|
$iItemType = $asItem['type'];
|
||||||
//$sWords = self::KEYWORDS_SEPARATOR.$asItem['keywords'].self::KEYWORDS_SEPARATOR;
|
$sWords = $asItem['keywords'];
|
||||||
|
|
||||||
//Calculate hit value
|
//Calculte bonus points
|
||||||
//$iCount = 0;
|
$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);
|
||||||
$this->incItemRank($iSearchId, $iLevel/**10+$iCount*/);
|
$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->setItemInfo($iSearchId, $iItemType, $iItemId);
|
||||||
$this->setUserInfo($this->getItemInfo($iSearchId, MySqlManager::getId(MySqlManager::USER_TABLE)));
|
$this->setUserInfo($this->getItemInfo($iSearchId, MySqlManager::getId(MySqlManager::USER_TABLE)));
|
||||||
}
|
}
|
||||||
@@ -3550,16 +3560,27 @@ class MySqlManager extends PhpObject
|
|||||||
public function __construct()
|
public function __construct()
|
||||||
{
|
{
|
||||||
parent::__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);
|
$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;
|
$this->sDbState = self::DB_NO_CONN;
|
||||||
}
|
}
|
||||||
else
|
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->addError('bug selecting database. Installing...');
|
||||||
$this->sDbState = self::DB_NO_DATA;
|
$this->sDbState = self::DB_NO_DATA;
|
||||||
@@ -3570,7 +3591,8 @@ class MySqlManager extends PhpObject
|
|||||||
public function __destruct()
|
public function __destruct()
|
||||||
{
|
{
|
||||||
parent::__destruct();
|
parent::__destruct();
|
||||||
mysql_close($this->oConnection);
|
//mysql_close($this->oConnection);
|
||||||
|
$this->oConnection->close();
|
||||||
}
|
}
|
||||||
|
|
||||||
public function setTrace($bAction)
|
public function setTrace($bAction)
|
||||||
@@ -3599,7 +3621,8 @@ class MySqlManager extends PhpObject
|
|||||||
//Create Database
|
//Create Database
|
||||||
$this->setQuery("DROP DATABASE IF EXISTS ".self::DB_NAME);
|
$this->setQuery("DROP DATABASE IF EXISTS ".self::DB_NAME);
|
||||||
$this->setQuery("CREATE DATABASE ".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
|
//Create tables
|
||||||
@array_walk($this->getInstallQueries(), array($this, 'setQuery'));
|
@array_walk($this->getInstallQueries(), array($this, 'setQuery'));
|
||||||
@@ -3648,13 +3671,14 @@ class MySqlManager extends PhpObject
|
|||||||
private function setQuery($sQuery, $sTypeQuery=__FUNCTION__)
|
private function setQuery($sQuery, $sTypeQuery=__FUNCTION__)
|
||||||
{
|
{
|
||||||
$this->getQuery($sQuery, $sTypeQuery);
|
$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__)
|
private function getQuery($sQuery, $sTypeQuery=__FUNCTION__)
|
||||||
{
|
{
|
||||||
$sQuery = str_replace(array("\n", "\t"), array(" ", ""), $sQuery);
|
$sQuery = str_replace(array("\n", "\t"), array(" ", ""), $sQuery);
|
||||||
$oResult = mysql_query($sQuery, $this->oConnection);
|
//$oResult = mysql_query($sQuery, $this->oConnection);
|
||||||
|
|
||||||
if($this->bTrace)
|
if($this->bTrace)
|
||||||
{
|
{
|
||||||
@@ -3662,9 +3686,9 @@ class MySqlManager extends PhpObject
|
|||||||
$this->addNotice($sQuery);
|
$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;
|
return $oResult;
|
||||||
}
|
}
|
||||||
@@ -3677,7 +3701,8 @@ class MySqlManager extends PhpObject
|
|||||||
$oResult = $this->getQuery($sQuery, true, $sTypeQuery);
|
$oResult = $this->getQuery($sQuery, true, $sTypeQuery);
|
||||||
if($oResult!==false)
|
if($oResult!==false)
|
||||||
{
|
{
|
||||||
while($asCurrentRow = mysql_fetch_array($oResult))
|
//while($asCurrentRow = mysql_fetch_array($oResult))
|
||||||
|
while($asCurrentRow = $oResult->fetch_array())
|
||||||
{
|
{
|
||||||
if($bStringOnly)
|
if($bStringOnly)
|
||||||
{
|
{
|
||||||
@@ -4225,10 +4250,12 @@ class MySqlManager extends PhpObject
|
|||||||
return $this->selectValue($sTableName, 'COUNT(1)', $oConstraints);
|
return $this->selectValue($sTableName, 'COUNT(1)', $oConstraints);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static function cleanSql(&$oData)
|
public function cleanSql(&$oData)
|
||||||
{
|
{
|
||||||
self::cleanData($oData, 'mysql_real_escape_string');
|
//self::cleanData($oData, 'mysql_real_escape_string');
|
||||||
$oData = 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)
|
public static function implodeAll($asText, $asKeyValueSeparator='', $sRowSeparator='', $sKeyPre='', $sValuePost=false)
|
||||||
@@ -4258,18 +4285,16 @@ class MySqlManager extends PhpObject
|
|||||||
return array_intersect_key($asArray, $asValidKeys);
|
return array_intersect_key($asArray, $asValidKeys);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static function cleanData($oData, $sCleaningFunc)
|
public function cleanData($oData)
|
||||||
{
|
{
|
||||||
if(!is_array($oData))
|
if(!is_array($oData))
|
||||||
{
|
{
|
||||||
$test = call_user_func($sCleaningFunc, $oData);
|
return $this->oConnection->real_escape_string($oData);
|
||||||
return $test;
|
|
||||||
}
|
}
|
||||||
elseif(count($oData)>0)
|
elseif(count($oData)>0)
|
||||||
{
|
{
|
||||||
$asCleaningFunc = array_fill(1, count($oData), $sCleaningFunc);
|
$asKeys = array_map(array($this, 'cleanData'), array_keys($oData));
|
||||||
$asKeys = array_map(array('self', 'cleanData'), array_keys($oData), $asCleaningFunc);
|
$asValues = array_map(array($this, 'cleanData'), $oData);
|
||||||
$asValues = array_map(array('self', 'cleanData'), $oData, $asCleaningFunc);
|
|
||||||
return array_combine($asKeys, $asValues);
|
return array_combine($asKeys, $asValues);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -4302,7 +4327,22 @@ class ToolBox
|
|||||||
//get rid of magic quotes
|
//get rid of magic quotes
|
||||||
if(function_exists('get_magic_quotes_gpc') && get_magic_quotes_gpc())
|
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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +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=iso-8859-1" />
|
<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" />
|
||||||
|
|||||||
Reference in New Issue
Block a user