Fixing internal links in code reader

This commit is contained in:
lutranf
2014-08-29 18:17:56 +02:00
parent 7635525783
commit 7adbc1c356
3 changed files with 54 additions and 19 deletions

View File

@@ -245,11 +245,20 @@ class ToolBox
{
$sServerPath = substr(str_replace(array('http://', 'https://'), '', $_GET['serv_name']), 0, -1);
//building all replacements possibilities
foreach(Databap::$TYPES as $sType=>$asTypeInfo)
{
$sPage = Databap::$HASH_TO_PAGE[$sType];
$asHashes = array_keys(Databap::$HASH_TO_PAGE, $sPage);
foreach($asHashes as $sHash) $asReplacements[preg_quote($sHash)] = $sPage;
$asReplacements[preg_quote(Databap::$PAGE_TITLES[$sPage])] = $sPage;
}
//Phase 1 : Identify internal links : merge cases /#code-1 and code 1, destroy link.
$asPatterns = array();
foreach(Databap::$HASH_TO_PAGE as $sAlt=>$sPage)
foreach($asReplacements as $sHash=>$sPage)
{
$asPatterns['`(^|\ )(https?://|)'.$sServerPath.'/?\#'.$sAlt.'\-([\d]+)`sui'] = '$1$4'.$sPage.' $3';
$asPatterns['`(^|\ )(https?://|)'.$sServerPath.'/?\#'.$sHash.'\-([\d]+)`sui'] = '$1$4'.$sPage.' $3';
}
$sText = preg_replace(array_keys($asPatterns), array_values($asPatterns), $sText);
@@ -260,19 +269,21 @@ class ToolBox
//Phase 3: rebuild link
$asPatterns = array();
foreach(Databap::$HASH_TO_PAGE as $sAlt=>$sPage)
foreach($asReplacements as $sHash=>$sPage)
{
if(mb_strlen($sAlt)>1)
if(mb_strlen($sHash)>1)
{
$sTitle = Databap::$PAGE_TITLES[$sPage];
$asPatterns['`(^|\ )'.$sAlt.'\ ([\d]+)(\ |$)`sui'] = '$1<a href="#'.$sPage.'-$2" target="_blank" class="internal_link round"><i class="fa fa-inline fa-c-'.$sPage.'"></i>'.$sTitle.' n°$2</a>$3';
if($sPage=='table') $asPatterns['`(^|\ )'.$sAlt.'\ ([_A-Z0-9]+)(\ |$)`su'] = '$1<a href="#'.$sPage.'-$2" target="_blank" class="internal_link round"><i class="fa fa-inline fa-c-'.$sPage.'"></i>'.$sTitle.' $2</a>$3';
//Type + phrase
if($sPage=='table') $asPatterns['`(^|\ |\*)(?i)'.$sHash.'(?-i)\ ([_A-Z0-9]+)(\ |$)`su'] = '$1<a href="#'.$sPage.'-$2" target="_blank" class="internal_link round"><i class="fa fa-inline fa-c-'.$sPage.'"></i><span class="type">'.$sTitle.'</span> <span class="item">$2</span></a>$3';
//Type + id
$asPatterns['`(^|\ |\*)'.$sHash.'\ ([\d]+)(\ |$)`sui'] = '$1<a href="#'.$sPage.'-$2" target="_blank" class="internal_link round"><i class="fa fa-inline fa-c-'.$sPage.'"></i><span class="type">'.$sTitle.'</span> n°<span class="item">$2</span></a>$3';
}
}
$sText = preg_replace(array_keys($asPatterns), array_values($asPatterns), $sText);
//@file_put_contents('log.html', "\n\n".date('r')."\n".$test, FILE_APPEND);
return $sText;
}