documentation feature v1 (add, read)
This commit is contained in:
238
config.php
238
config.php
@@ -668,7 +668,8 @@ class Databap extends PhpObject
|
||||
{
|
||||
$asSearchTypes = array( self::CODE_TYPE=>MySqlManager::CODE_TABLE,
|
||||
self::PROC_TYPE=>MySqlManager::PROC_TABLE,
|
||||
self::ART_TYPE=>MySqlManager::ART_TABLE);
|
||||
self::ART_TYPE=>MySqlManager::ART_TABLE,
|
||||
self::DOC_TYPE=>MySqlManager::DOC_TABLE);
|
||||
|
||||
$this->oMySql->getArrayQuery("TRUNCATE ".MySqlManager::SEARCH_TABLE);
|
||||
foreach($asSearchTypes as $sSearchType=>$sSearchTable)
|
||||
@@ -813,7 +814,7 @@ class Databap extends PhpObject
|
||||
}
|
||||
|
||||
//Load doc into database
|
||||
$asData = array('title'=>$sTitle, 'description'=>$sDescription, 'file_name'=>$sFileName, MySqlManager::getId(MySqlManager::USER_TABLE)=>$iUserId);
|
||||
$asData = array('title'=>$sTitle, 'description'=>$sDescription, MySqlManager::getId(MySqlManager::USER_TABLE)=>$iUserId);
|
||||
$iDbDocId = $this->oMySql->insertRow(MySqlManager::DOC_TABLE, $asData);
|
||||
|
||||
//Load doc files into database
|
||||
@@ -840,14 +841,7 @@ class Databap extends PhpObject
|
||||
$this->oMySql->updateRow(MySqlManager::DOC_TABLE, $iDbDocId, array('refer_id'=>$iReferId));
|
||||
|
||||
//Add Message in chat
|
||||
if($bCreation)
|
||||
{
|
||||
$this->addMessage($iDbDocId, self::MESSAGE_ADD_DOC, self::ALL_CHAN_ID);
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->addMessage($iDbDocId, self::MESSAGE_EDIT_DOC, self::ALL_CHAN_ID);
|
||||
}
|
||||
$this->addMessage($iDbDocId, $bCreation?self::MESSAGE_ADD_DOC:self::MESSAGE_EDIT_DOC, self::ALL_CHAN_ID);
|
||||
|
||||
//Add record in Search Table
|
||||
$this->oSearchEngine->buildIndex($iDbDocId, self::DOC_TYPE);
|
||||
@@ -869,7 +863,7 @@ class Databap extends PhpObject
|
||||
$asFiles = $this->oMySql->selectRows(array('from'=>MySqlManager::FILE_TABLE, 'constraint'=>array('id_doc'=>$iDocId)));
|
||||
foreach($asFiles as $asFile)
|
||||
{
|
||||
$asDoc['files'][$asFile[MySqlManager::getId(MySqlManager::FILE_TABLE)]] = array('description'=>$asFile['description']);
|
||||
$asDoc['files'][$asFile[MySqlManager::getId(MySqlManager::FILE_TABLE)]] = array('description'=>$asFile['description'], 'ext'=>pathinfo($asFile['file_name'], PATHINFO_EXTENSION));
|
||||
}
|
||||
|
||||
return self::jsonExport($asDoc);
|
||||
@@ -967,25 +961,39 @@ 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']);
|
||||
return $asCode;
|
||||
}
|
||||
|
||||
private function getProcInfo($iProcId)
|
||||
{
|
||||
$asProc = $this->oMySql->selectRow(MySqlManager::PROC_TABLE, $iProcId);
|
||||
$asProc['title'] = self::getDescriptionFormat($asProc['title']);
|
||||
$asProc['description'] = self::getDescriptionFormat($asProc['description']);
|
||||
$asProc['led'] = self::getDateFormat($asProc['led']);
|
||||
$asProc['timestamp'] = strtotime($asCode['led']);
|
||||
return $asProc;
|
||||
}
|
||||
|
||||
private function getDocInfo($iDocId)
|
||||
{
|
||||
$asDoc = $this->oMySql->selectRow(MySqlManager::DOC_TABLE, $iDocId);
|
||||
$asDoc['title'] = self::getDescriptionFormat($asDoc['title']);
|
||||
$asDoc['description'] = self::getDescriptionFormat($asDoc['description']);
|
||||
$asDoc['led'] = self::getDateFormat($asDoc['led']);
|
||||
$asDoc['timestamp'] = strtotime($asCode['led']);
|
||||
return $asDoc;
|
||||
}
|
||||
|
||||
private function getArticleInfo($iArtId)
|
||||
{
|
||||
$asArt = $this->oMySql->selectRow(MySqlManager::ART_TABLE, $iArtId);
|
||||
$asTransferredInfo = array('link_art'=>$asArt['link'], 'title'=>$asArt['title'], 'link_auth'=>$asArt['email']);
|
||||
$asTransferredInfo['date'] = self::getDateFormat($asArt['date'], self::DATE_FORMAT);
|
||||
$asTransferredInfo = array('link_art'=>$asArt['link'], 'art_title'=>$asArt['title'], 'link_auth'=>$asArt['email']);
|
||||
$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['led'] = self::getDateFormat($asArt['led']);
|
||||
$asTransferredInfo['timestamp'] = strtotime($asCode['led']);
|
||||
$asTransferredInfo['company'] = 'SAP';
|
||||
return $asTransferredInfo;
|
||||
}
|
||||
@@ -1688,12 +1696,17 @@ class Databap extends PhpObject
|
||||
elseif($sMessageType==self::MESSAGE_ADD_PROC || $sMessageType==self::MESSAGE_EDIT_PROC)
|
||||
{
|
||||
$asProc = $this->getProcInfo($asMessages['messages'][$iMessageId]['message']);
|
||||
$asMessages['messages'][$iMessageId]['description'] = $asProc['description'];
|
||||
$asMessages['messages'][$iMessageId]['description'] = $asProc['title'];
|
||||
}
|
||||
elseif($sMessageType==self::MESSAGE_ADD_DOC || $sMessageType==self::MESSAGE_EDIT_DOC)
|
||||
{
|
||||
$asDoc = $this->getDocInfo($asMessages['messages'][$iMessageId]['message']);
|
||||
$asMessages['messages'][$iMessageId]['description'] = $asDoc['title'];
|
||||
}
|
||||
elseif($sMessageType==self::MESSAGE_ARTICLE)
|
||||
{
|
||||
$asTransferredInfo = $this->getArticleInfo($asMessages['messages'][$iMessageId]['message']);
|
||||
$asMessages['messages'][$iMessageId]['message'] = $this->getJsonMessage($asTransferredInfo);
|
||||
$asMessages['messages'][$iMessageId] = array_merge($asMessages['messages'][$iMessageId], $asTransferredInfo);
|
||||
}
|
||||
|
||||
//Switch Chan ID with name for the user to join
|
||||
@@ -1959,71 +1972,63 @@ class Databap extends PhpObject
|
||||
$sIdCodeCol = MySqlManager::getId(MySqlManager::CODE_TABLE);
|
||||
$sIdProcCol = MySqlManager::getId(MySqlManager::PROC_TABLE);
|
||||
$sIdArtCol = MySqlManager::getId(MySqlManager::ART_TABLE);
|
||||
$sIdDocCol = MySqlManager::getId(MySqlManager::DOC_TABLE);
|
||||
$sIdCodeColFull = MySqlManager::getId(MySqlManager::CODE_TABLE, true);
|
||||
$sIdUserCol = MySqlManager::getId(MySqlManager::USER_TABLE);
|
||||
$sIdUserColFull = MySqlManager::getId(MySqlManager::USER_TABLE, true);
|
||||
$sLedColFull = MySqlManager::getFullColumnName(MySqlManager::CODE_TABLE, 'led') ;
|
||||
|
||||
//Get code Ids
|
||||
$asInfo = array('select'=>array("MAX($sIdCodeCol) AS id_item"),
|
||||
$asInfo = array('select'=>array("MAX($sIdCodeCol) AS id_item"), //selecting last version among codes having the same refer_id
|
||||
'from'=>MySqlManager::CODE_TABLE,
|
||||
'groupBy'=>array('refer_id'),
|
||||
'orderBy'=>array('id_item'=>'desc'));
|
||||
$asCodeIds = $this->oMySql->selectRows($asInfo);
|
||||
$asItemIds[Databap::CODE_TYPE] = $this->oMySql->selectRows($asInfo);
|
||||
|
||||
//get Proc Ids
|
||||
$asInfo = array('select'=>array("MAX($sIdProcCol) AS id_item"),
|
||||
'from'=>MySqlManager::PROC_TABLE,
|
||||
'constraint'=>array('refer_id'=>"0"),
|
||||
'constraint'=>array('refer_id'=>"0"), //meaning that there is no newer version
|
||||
'orderBy'=>array('id_item'=>'desc'));
|
||||
$asProcIds = $this->oMySql->selectRows($asInfo);
|
||||
$asItemIds[Databap::PROC_TYPE] = $this->oMySql->selectRows($asInfo);
|
||||
|
||||
//get Article Ids
|
||||
$asInfo = array('select'=>array($sIdArtCol." AS id_item"),
|
||||
'from'=>MySqlManager::ART_TABLE,
|
||||
'orderBy'=>array('id_item'=>'desc'));
|
||||
$asArtIds = $this->oMySql->selectRows($asInfo);
|
||||
$asItemIds[Databap::ART_TYPE] = $this->oMySql->selectRows($asInfo);
|
||||
|
||||
$asItemIds = array(Databap::CODE_TYPE=>$asCodeIds, Databap::PROC_TYPE=>$asProcIds, Databap::ART_TYPE=>$asArtIds);
|
||||
//Get documentation
|
||||
$asInfo = array('select'=>array("MAX($sIdDocCol) AS id_item"), //selecting last version among docs having the same refer_id
|
||||
'from'=>MySqlManager::DOC_TABLE,
|
||||
'groupBy'=>array('refer_id'),
|
||||
'orderBy'=>array('id_item'=>'desc'));
|
||||
$asItemIds[Databap::DOC_TYPE] = $this->oMySql->selectRows($asInfo);
|
||||
|
||||
$asTypeFunc = array(Databap::CODE_TYPE=>'Code', Databap::PROC_TYPE=>'Proc', Databap::ART_TYPE=>'Article', Databap::DOC_TYPE=>'Doc');
|
||||
|
||||
//Build code info structure
|
||||
//TODO phrases for all item types?
|
||||
$asUsers = $asCode = $asItemList = array();
|
||||
foreach($asItemIds as $sType=>$asTypedItemIds)
|
||||
{
|
||||
switch($sType)
|
||||
{
|
||||
case Databap::CODE_TYPE:
|
||||
$sFuncType = 'Code';
|
||||
break;
|
||||
case Databap::PROC_TYPE:
|
||||
$sFuncType = 'Proc';
|
||||
break;
|
||||
case Databap::ART_TYPE:
|
||||
$sFuncType = 'Article';
|
||||
break;
|
||||
}
|
||||
$asTypedItemIds = array_filter($asTypedItemIds); //null value returned from query (MAX(...))
|
||||
foreach($asTypedItemIds as $iItemId)
|
||||
{
|
||||
//null value returned from query (MAX(...))
|
||||
if($iItemId>0)
|
||||
{
|
||||
$asItem = call_user_func(array($this, 'get'.$sFuncType.'Info'), $iItemId);
|
||||
if(array_key_exists($sIdUserCol, $asItem))
|
||||
$asItem = call_user_func(array($this, 'get'.$asTypeFunc[$sType].'Info'), $iItemId);
|
||||
$asItem['type'] = $sType;
|
||||
$asItem['id_item'] = $iItemId;
|
||||
if(array_key_exists($sIdUserCol, $asItem)) //replacing user's id with user's name & company (if not done already)
|
||||
{
|
||||
$iUserId = $asItem[$sIdUserCol];
|
||||
if(!array_key_exists($iUserId, $asUsers))
|
||||
{
|
||||
$asUsers[$iUserId] = $this->getUserInfo($iUserId);
|
||||
}
|
||||
$asItemList[$sType][$iItemId] = array_merge($asUsers[$iUserId], $asItem);
|
||||
}
|
||||
else $asItemList[$sType][$iItemId] = $asItem;
|
||||
|
||||
//$asCodeList[$iItemId]['phrase'] = $this->getPhraseFromIdCode($iCodeId);
|
||||
|
||||
if(!array_key_exists($iUserId, $asUsers)) $asUsers[$iUserId] = $this->getUserInfo($iUserId);
|
||||
$asItem['name'] = $asUsers[$iUserId]['name'];
|
||||
$asItem['company'] = $asUsers[$iUserId]['company'];
|
||||
}
|
||||
$asItemList[$asItem['timestamp'].$asItem['type'].$asItem['id_item']] = $asItem;
|
||||
}
|
||||
}
|
||||
krsort($asItemList);
|
||||
return $this->jsonExport($asItemList);
|
||||
}
|
||||
|
||||
@@ -2614,6 +2619,18 @@ class Procedure extends PhpObject
|
||||
id_code
|
||||
line
|
||||
*/
|
||||
|
||||
/**
|
||||
* Search Engine : Search through all types of databap documents
|
||||
*
|
||||
* Procedure to add a new type in the search
|
||||
* - Add type in the index builder : SearchEngine->buildIndex()
|
||||
* - Add type in the rebuild index function : Databap->buildCompleteIndex()
|
||||
* - Add type in item info : SearchEngine->setItemInfo()
|
||||
* - Add type in .htaccess
|
||||
* - Add type in getItemList() and create a get<type>info()
|
||||
* - consider the message types : add + edit in Databap->getMessages() and in chat.html
|
||||
*/
|
||||
class SearchEngine extends PhpObject
|
||||
{
|
||||
//Objects
|
||||
@@ -2643,32 +2660,35 @@ class SearchEngine extends PhpObject
|
||||
public function buildIndex($iItemId, $sType)
|
||||
{
|
||||
//Build keywords
|
||||
$sWords = '';
|
||||
switch($sType)
|
||||
{
|
||||
case Databap::CODE_TYPE:
|
||||
$asItemData = $this->oMySql->selectRow(MySqlManager::CODE_TABLE, $iItemId);
|
||||
$sWords = $asItemData[MySqlManager::getText(MySqlManager::CODE_TABLE)].self::KEYWORDS_SEPARATOR.$asItemData['description'];
|
||||
$asWords = array($asItemData[MySqlManager::getText(MySqlManager::CODE_TABLE)], $asItemData['description']);
|
||||
break;
|
||||
case Databap::PROC_TYPE:
|
||||
$sItemIdCol = MySqlManager::getId(MySqlManager::PROC_TABLE);
|
||||
$asItemData = $this->oMySql->selectRow(MySqlManager::PROC_TABLE, $iItemId);
|
||||
$asItemStepsData = $this->oMySql->selectRows(array('select'=>'description', 'from'=>MySqlManager::STEP_TABLE, 'constraint'=>array('id_procedure'=>$iItemId)));
|
||||
$sWords = $asItemData['description'].self::KEYWORDS_SEPARATOR.
|
||||
$asItemData['title'].self::KEYWORDS_SEPARATOR.
|
||||
implode(self::KEYWORDS_SEPARATOR, $asItemStepsData);
|
||||
$asItemStepsData = $this->oMySql->selectRows(array('select'=>'description', 'from'=>MySqlManager::STEP_TABLE, 'constraint'=>array($sItemIdCol=>$iItemId)));
|
||||
$asWords = array('desc'=>$asItemData['description'], 'title'=>$asItemData['title']) + $asItemStepsData;
|
||||
break;
|
||||
case Databap::ART_TYPE:
|
||||
$asItemData = $this->oMySql->selectRow(MySqlManager::ART_TABLE, $iItemId);
|
||||
$sWords = $asItemData['first_name'].self::KEYWORDS_SEPARATOR.
|
||||
$asItemData['last_name'].self::KEYWORDS_SEPARATOR.
|
||||
$asItemData['title'];
|
||||
$asWords = array($asItemData['first_name'], $asItemData['last_name'], $asItemData['title']);
|
||||
break;
|
||||
case Databap::DOC_TYPE:
|
||||
$sItemIdCol = MySqlManager::getId(MySqlManager::DOC_TABLE);
|
||||
$asItemData = $this->oMySql->selectRow(MySqlManager::DOC_TABLE, $iItemId);
|
||||
$asItemFilesData = $this->oMySql->selectRows(array('select'=>'description', 'from'=>MySqlManager::FILE_TABLE, 'constraint'=>array($sItemIdCol=>$iItemId)));
|
||||
$asWords = array('desc'=>$asItemData['description'], 'title'=>$asItemData['title']) + $asItemFilesData;
|
||||
break;
|
||||
default:
|
||||
$this->addError('function '.__FUNCTION__.'(): Incorrect type "'.$sType.'"');
|
||||
break;
|
||||
}
|
||||
$sWords = implode(self::KEYWORDS_SEPARATOR, $asWords);
|
||||
$sWords = strtolower(str_replace("\n", self::KEYWORDS_SEPARATOR, $sWords));
|
||||
$sWords = preg_replace('/(\W+)/', self::KEYWORDS_SEPARATOR, $sWords);
|
||||
$sWords = preg_replace('/(\W+)/', self::KEYWORDS_SEPARATOR, $sWords); //remove all non-word characters
|
||||
|
||||
//Add / Modify search database
|
||||
$asData = array('id_item'=>$iItemId, 'type'=>$sType, 'refer_id'=>$asItemData['refer_id'], 'keywords'=>$sWords);
|
||||
@@ -2682,6 +2702,12 @@ class SearchEngine extends PhpObject
|
||||
$this->setResults();
|
||||
}
|
||||
|
||||
/**
|
||||
* TODO Customized item preview
|
||||
$sCodeLines = implode("\n...\n", $this->getCodeInfo($iItemId, 'code'));
|
||||
$oCode = new Reader($sCodeLines);
|
||||
$sCodeLines = $oCode->getColoredCode();
|
||||
*/
|
||||
private function setItemInfo($iSearchId, $iItemType, $iItemId)
|
||||
{
|
||||
if(!array_key_exists($iSearchId, $this->asItemInfos))
|
||||
@@ -2690,38 +2716,55 @@ class SearchEngine extends PhpObject
|
||||
switch($iItemType)
|
||||
{
|
||||
case Databap::CODE_TYPE:
|
||||
$asItemInfo = $this->oMySql->selectRow
|
||||
(
|
||||
MySqlManager::CODE_TABLE,
|
||||
$iItemId,
|
||||
array(MySqlManager::getId(MySqlManager::USER_TABLE), 'description', 'led')
|
||||
);
|
||||
$sItemTable = MySqlManager::CODE_TABLE;
|
||||
$asItemFields = array(MySqlManager::getId(MySqlManager::USER_TABLE), 'description', 'led');
|
||||
break;
|
||||
case Databap::PROC_TYPE:
|
||||
$asItemInfo = $this->oMySql->selectRow
|
||||
(
|
||||
MySqlManager::PROC_TABLE,
|
||||
$iItemId,
|
||||
array(MySqlManager::getId(MySqlManager::USER_TABLE), 'title AS description', 'led')
|
||||
);
|
||||
$sItemTable = MySqlManager::PROC_TABLE;
|
||||
$asItemFields = array(MySqlManager::getId(MySqlManager::USER_TABLE), 'title AS description', 'led');
|
||||
break;
|
||||
case Databap::ART_TYPE:
|
||||
$asItemInfo = $this->oMySql->selectRow
|
||||
(
|
||||
MySqlManager::ART_TABLE,
|
||||
$iItemId,
|
||||
array('first_name', 'last_name', 'title AS description', 'led')
|
||||
);
|
||||
$asItemInfo[MySqlManager::getId(MySqlManager::USER_TABLE)] = 0;
|
||||
$sItemTable = MySqlManager::ART_TABLE;
|
||||
$asItemFields = array('first_name', 'last_name', 'title AS description', 'led');
|
||||
break;
|
||||
case Databap::DOC_TYPE:
|
||||
$sItemTable = MySqlManager::DOC_TABLE;
|
||||
$asItemFields = array(MySqlManager::getId(MySqlManager::USER_TABLE), 'title AS description', 'led');
|
||||
break;
|
||||
}
|
||||
$this->asItemInfos[$iSearchId] += $asItemInfo;
|
||||
$this->asItemInfos[$iSearchId] += $this->oMySql->selectRow($sItemTable, $iItemId, $asItemFields);
|
||||
}
|
||||
}
|
||||
|
||||
private function getItemInfo($iSearchId, $sInfoName)
|
||||
{
|
||||
return array_key_exists($iSearchId, $this->asItemInfos)?$this->asItemInfos[$iSearchId][$sInfoName]:false;
|
||||
if(array_key_exists($iSearchId, $this->asItemInfos) && array_key_exists($sInfoName, $this->asItemInfos[$iSearchId]))
|
||||
return $this->asItemInfos[$iSearchId][$sInfoName];
|
||||
else return false;
|
||||
}
|
||||
|
||||
private function setUserInfo($iUserId)
|
||||
{
|
||||
if(!array_key_exists($iUserId, $this->asUserInfos) && $iUserId > 0)
|
||||
{
|
||||
$sCompanyIdCol = MySqlManager::getId(MySqlManager::COMP_TABLE);
|
||||
$this->asUserInfos[$iUserId] = $this->oMySql->selectRow
|
||||
(
|
||||
MySqlManager::USER_TABLE,
|
||||
$iUserId,
|
||||
array('first_name', 'last_name', $sCompanyIdCol)
|
||||
);
|
||||
|
||||
$this->asUserInfos[$iUserId]['company'] = $this->oMySql->selectValue(MySqlManager::COMP_TABLE, MySqlManager::getText(MySqlManager::COMP_TABLE), $this->asUserInfos[$iUserId][$sCompanyIdCol]);
|
||||
unset($this->asUserInfos[$iUserId][$sCompanyIdCol]);
|
||||
}
|
||||
}
|
||||
|
||||
private function getUserInfo($iUserId, $sInfoName)
|
||||
{
|
||||
if(array_key_exists($iUserId, $this->asUserInfos) && array_key_exists($sInfoName, $this->asUserInfos[$iUserId]))
|
||||
return $this->asUserInfos[$iUserId][$sInfoName];
|
||||
else return false;
|
||||
}
|
||||
|
||||
private function setResults()
|
||||
@@ -2745,7 +2788,7 @@ class SearchEngine extends PhpObject
|
||||
$sRegExp = implode(self::KEYWORDS_SEPARATOR.'?', $asSequence);
|
||||
|
||||
//TODO replace with selectRow()
|
||||
$sQuery = "SELECT id_search, id_item, type 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);
|
||||
@@ -2754,6 +2797,10 @@ class SearchEngine extends PhpObject
|
||||
$iSearchId = $asItem['id_search'];
|
||||
$iItemId = $asItem['id_item'];;
|
||||
$iItemType = $asItem['type'];
|
||||
//$sWords = self::KEYWORDS_SEPARATOR.$asItem['keywords'].self::KEYWORDS_SEPARATOR;
|
||||
|
||||
//Calculate hit value
|
||||
//$iCount =
|
||||
|
||||
$this->incItemRank($iSearchId, $iLevel);
|
||||
|
||||
@@ -2774,20 +2821,13 @@ class SearchEngine extends PhpObject
|
||||
arsort($this->asItemRanks);
|
||||
foreach($this->asItemRanks as $iSearchId=>$iRank)
|
||||
{
|
||||
/* TODO Customized item preview
|
||||
//code
|
||||
$sCodeLines = implode("\n...\n", $this->getCodeInfo($iItemId, 'code'));
|
||||
$oCode = new Reader($sCodeLines);
|
||||
$sCodeLines = $oCode->getColoredCode();
|
||||
*/
|
||||
|
||||
$iUserId = $this->getItemInfo($iSearchId, MySqlManager::getId(MySqlManager::USER_TABLE));
|
||||
$sFirstName = $this->getUserInfo($iUserId, 'first_name')?$this->getUserInfo($iUserId, 'first_name'):$this->getItemInfo($iSearchId, 'first_name');
|
||||
$sLastName = $this->getUserInfo($iUserId, 'last_name')?$this->getUserInfo($iUserId, 'last_name'):$this->getItemInfo($iSearchId, 'last_name');
|
||||
$sCompany = $this->getUserInfo($iUserId, 'company')?$this->getUserInfo($iUserId, 'company'):'SAP';
|
||||
$asResult[] = array('id_item'=>$this->getItemInfo($iSearchId, 'id_item'),
|
||||
'type'=>$this->getItemInfo($iSearchId, 'type'),
|
||||
'description'=>$this->getItemInfo($iSearchId, 'description'),
|
||||
'description'=>/*'['.$iRank.'] '.*/$this->getItemInfo($iSearchId, 'description'),
|
||||
'name'=>Databap::getNameFormat($sFirstName, $sLastName),
|
||||
'company'=>Databap::getCompanyFormat($sCompany),
|
||||
'led'=>Databap::getDateFormat($this->getItemInfo($iSearchId, 'led')));
|
||||
@@ -2795,28 +2835,6 @@ class SearchEngine extends PhpObject
|
||||
return $asResult;
|
||||
}
|
||||
|
||||
private function getUserInfo($iUserId, $sInfoName)
|
||||
{
|
||||
return array_key_exists($iUserId, $this->asUserInfos)?$this->asUserInfos[$iUserId][$sInfoName]:false;
|
||||
}
|
||||
|
||||
private function setUserInfo($iUserId)
|
||||
{
|
||||
if(!array_key_exists($iUserId, $this->asUserInfos) && $iUserId > 0)
|
||||
{
|
||||
$sCompanyIdCol = MySqlManager::getId(MySqlManager::COMP_TABLE);
|
||||
$this->asUserInfos[$iUserId] = $this->oMySql->selectRow
|
||||
(
|
||||
MySqlManager::USER_TABLE,
|
||||
$iUserId,
|
||||
array('first_name', 'last_name', $sCompanyIdCol)
|
||||
);
|
||||
|
||||
$this->asUserInfos[$iUserId]['company'] = $this->oMySql->selectValue(MySqlManager::COMP_TABLE, MySqlManager::getText(MySqlManager::COMP_TABLE), $this->asUserInfos[$iUserId][$sCompanyIdCol]);
|
||||
unset($this->asUserInfos[$iUserId][$sCompanyIdCol]);
|
||||
}
|
||||
}
|
||||
|
||||
private function incItemRank($iSearchId, $iRank)
|
||||
{
|
||||
if(array_key_exists($iSearchId, $this->asItemRanks))
|
||||
|
||||
12
jquery/fileuploader.js
vendored
12
jquery/fileuploader.js
vendored
@@ -493,8 +493,14 @@ qq.FileUploader = function(o){
|
||||
listElement: null,
|
||||
|
||||
template:'<div class="uploader_box">' +
|
||||
'<div class="uploader_droparea round"><span>Glisser les images ici</span></div>' +
|
||||
'<span class="uploader_button button add round">Ajouter une image</span>' +
|
||||
'<div class="uploader_droparea round">' +
|
||||
'<span>' +
|
||||
((typeof o.addSlideText !== 'undefined')?o.addSlideText:'Glisser les images ici') +
|
||||
'</span>' +
|
||||
'</div>' +
|
||||
'<span class="uploader_button button add round">'+
|
||||
((typeof o.addFileText !== 'undefined')?o.addFileText:'Ajouter une image') +
|
||||
'</span>' +
|
||||
'<div class="uploader_buffer"></div>' +
|
||||
'<ul id="uploader_list" class="uploader_list"></ul>' +
|
||||
'</div>',
|
||||
@@ -504,7 +510,7 @@ qq.FileUploader = function(o){
|
||||
'<span class="uploader_item_loading"></span>' +
|
||||
'<span class="uploader_item_file"></span>' +
|
||||
'<span class="uploader_item_size"></span>' +
|
||||
'<a class="uploader_item_cancel" href="#">Cancel</a>' +
|
||||
'<a class="uploader_item_cancel" href="#">Annuler</a>' +
|
||||
'<span class="uploader_item_failed_notice">Echoué</span>' +
|
||||
'</li>',
|
||||
|
||||
|
||||
2
jquery/handler.js
vendored
2
jquery/handler.js
vendored
@@ -188,7 +188,7 @@ var databap =
|
||||
databap.$menu.find('#profile_ln').click(function(){databap.loadProfilePage();});
|
||||
databap.$menu.find('#chat_ln').click(function(){databap.loadChatPage();});
|
||||
databap.$menu.find('#options_ln').click(function(){databap.loadOptionsPage();});
|
||||
//databap.$menu.find('#doc').click(function(){databap.loadDocPage();});
|
||||
databap.$menu.find('#doc_ln').click(function(){databap.loadDocPage();});
|
||||
databap.$menu.find('#log_me_out_ln').click(function(){databap.logMeOut();});
|
||||
|
||||
//Close menu on click
|
||||
|
||||
@@ -664,13 +664,21 @@ function addMessage(message_info, bReset)
|
||||
if(!bReset) joinChan(sChanKeyName, false, [], false);
|
||||
break;
|
||||
case 'B':
|
||||
msg_body = '<span class="text action">Nouvel article sur le blog BI de SAP : <a href="'+message_info.message.link_art+'" target="_blank">'+message_info.message.title+'</a> ';
|
||||
msg_body+= 'par <a title="Lien vers la page de l\'auteur" href="'+message_info.message.link_auth+'" target="_blank">'+message_info.message.name+'</a> ('+message_info.message.date+')'+'</span>';
|
||||
msg_body = '<span class="text action">Nouvel article sur le blog BI de SAP : <a href="'+databap.getExternalLink('a', message_info.message)+'" target="_blank">'+message_info.art_title+'</a> ';
|
||||
msg_body+= 'par <a title="Lien vers la page de l\'auteur" href="'+message_info.link_auth+'" target="_blank">'+message_info.name+'</a> ('+message_info.art_date+')'+'</span>';
|
||||
break;
|
||||
case 'S':
|
||||
updateUsersList = true;
|
||||
msg_body = '<span class="text action">'+message_info.nickname+' '+message_info.message+'</span>';
|
||||
break;
|
||||
case 'DA':
|
||||
var url = databap.getExternalLink('doc', message_info.message);
|
||||
msg_body = '<span class="text">'+message_info.nickname+' a ajouté une nouvelle documentation : <a href="'+url+'" target="_blank">'+message_info.description+'</a></span>';
|
||||
break;
|
||||
case 'DE':
|
||||
var url = databap.getExternalLink('doc', message_info.message);
|
||||
msg_body = '<span class="text">'+message_info.nickname+' a modifié la documentation <a href="'+url+'" target="_blank">'+message_info.description+'</a></span>';
|
||||
break;
|
||||
}
|
||||
|
||||
if(msg_body != '')
|
||||
|
||||
@@ -59,6 +59,8 @@ databap.pageInit = function()
|
||||
action: databap.getActionLink('upload_file'),
|
||||
allowedExtensions: databap.consts.authorized_file_exts,
|
||||
sizeLimit: parseInt(databap.consts.max_size)*100,
|
||||
addSlideText: 'Glisser les fichier ici',
|
||||
addFileText: 'Ajouter un fichier',
|
||||
debug:true,
|
||||
stepId:1
|
||||
}
|
||||
@@ -94,7 +96,6 @@ function loadDoc(iDocId, fOnSuccess)
|
||||
'get_doc',
|
||||
function(doc_info)
|
||||
{
|
||||
debug(doc_info);
|
||||
databap.getMainElem('#titles_read_title').html(doc_info.title);
|
||||
databap.getMainElem('#titles_read_user').html(doc_info.name);
|
||||
databap.getMainElem('#titles_read_company').html(doc_info.company);
|
||||
@@ -104,11 +105,14 @@ function loadDoc(iDocId, fOnSuccess)
|
||||
//links
|
||||
for(i in doc_info.files)
|
||||
{
|
||||
var $Link = $('<a href="#" title="Télécharger cette documentation"></a><br />');
|
||||
var sLink = databap.getActionLink('dl_file&id='+i);debug(sLink);
|
||||
$Link.attr('href', sLink);
|
||||
$Link.html(doc_info.files[i].description);
|
||||
databap.getMainElem('#doc_links').append($Link);
|
||||
databap.getMainElem('#doc_links')
|
||||
.append(
|
||||
$('<a>', {title:'Télécharger cette documentation', href:databap.getActionLink('dl_file&id='+i)})
|
||||
.addClass(doc_info.files[i].ext)
|
||||
.text(doc_info.files[i].description)
|
||||
)
|
||||
.append('<br />');
|
||||
|
||||
}
|
||||
setDisplay('read');
|
||||
fOnSuccess();
|
||||
|
||||
@@ -15,7 +15,7 @@ databap.pageInit = function()
|
||||
'list',
|
||||
function(items)
|
||||
{
|
||||
buildList(items);
|
||||
for(id in items) databap.appendItem(items[id], databap.getMainElem('#list_container'));
|
||||
|
||||
//Init's end
|
||||
databap.setInitEnd(true);
|
||||
@@ -24,19 +24,4 @@ databap.pageInit = function()
|
||||
'json'
|
||||
);
|
||||
};
|
||||
|
||||
function buildList(asAllItems)
|
||||
{
|
||||
var sType ='';
|
||||
var iItemId = 0;
|
||||
for(sType in asAllItems)
|
||||
{
|
||||
for(iItemId in asAllItems[sType])
|
||||
{
|
||||
asAllItems[sType][iItemId]['type'] = sType;
|
||||
asAllItems[sType][iItemId]['id_item'] = iItemId;
|
||||
databap.appendItem(asAllItems[sType][iItemId], databap.getMainElem('#list_container'));
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
15
style.css
15
style.css
@@ -1731,12 +1731,25 @@ img {
|
||||
|
||||
#doc #doc_links a {
|
||||
padding:20px 0 20px 30px;
|
||||
background:url(images/xls_24.png) 0 50% no-repeat;
|
||||
background:url('images/raw_24.png') 0 50% no-repeat;
|
||||
line-height:40px;
|
||||
font-size:14px;
|
||||
text-decoration:underline;
|
||||
}
|
||||
|
||||
#doc #doc_links a.xls, #doc #doc_links a.xlsx {
|
||||
background-image:url('images/xls_24.png');
|
||||
}
|
||||
#doc #doc_links a.doc, #doc #doc_links a.docx {
|
||||
background-image:url('images/doc_24.png');
|
||||
}
|
||||
#doc #doc_links a.ppt, #doc #doc_links a.pptx {
|
||||
background-image:url('images/ppt_24.png');
|
||||
}
|
||||
#doc #doc_links a.pdf {
|
||||
background-image:url('images/pdf_24.png');
|
||||
}
|
||||
|
||||
/* 404 */
|
||||
|
||||
#err_404 .h1_wrap h1 {
|
||||
|
||||
Reference in New Issue
Block a user