ls();
echo "List Backlinked Pages: ";
foreach($pagelist as $pagename) {
echo "$pagename - ";
PostFastBacklinks();
}
echo "Backlink Generation Complete.";
exit;
}
function PostFastBacklinks() {
global $pagename;
$page = ReadPage($pagename);
$targets = explode(',', $page['targets']);
foreach( $targets as $t ) {
if ($t != '') {
$backlinks = FastBacklinksRead( $t );
if( $backlinks ) $backlinks = @array_flip( $backlinks );
$backlinks[ $pagename . "\n" ] = '0';
FastBacklinksWrite( $t, array_keys( $backlinks ) );
}
}
}
$EditFunctions = array('EditTemplate', 'RestorePage', 'ReplaceOnSave',
'SaveAttributes', 'PostPage', 'PostRecentChanges', 'PostFastBacklinks', 'PreviewPage');
##
## Backlinklists
##
function FastBacklinkPagelist($pagename, $pats) {
$backlinks = FastBacklinksRead( $pagename );
natsort( $backlinks );
$new_backlinks = array();
# Veryfying each backlink if it's page still points to us
foreach( $backlinks as $link ) {
$link = rtrim( $link );
# Check if the page still links to us
$page = ReadPage( $link, READPAGE_CURRENT );
$page = $page['targets'];
$page = explode( ',', $page );
if( in_array( $pagename, $page ) ) {
$new_backlinks[] = $link;
$list .= $link.",";
}
FastBacklinksWrite( $pagename, $new_backlinks );
}
$list = substr($list,0,-1); //remove last ',';
$list = explode( ',', $list );
$list = array_intersect ($list, $pats);
return $list;
}
function FastBacklinksList() {
global $pagename;
$backlinks = FastBacklinksRead( $pagename );
natsort( $backlinks );
$new_backlinks = array();
$list = "
- ";
$newgroupname = '';
$oldgroupname = '';
# Veryfying each backlink if it's page still points to us
foreach( $backlinks as $link ) {
$link = rtrim( $link );
# Check if the page still links to us
$page = ReadPage( $link, READPAGE_CURRENT );
$page = $page['targets'];
$page = explode( ',', $page );
if( in_array( $pagename, $page ) ) {
$new_backlinks[] = $link;
$newgroupname = str_replace(strstr($link,'.'),'',$link);
if ($newgroupname != $oldgroupname) $list .= "
- [[".$newgroupname."|+]]
";
$oldgroupname = $newgroupname;
$list .= " - [[" . $link . "|+]]
\n";
}
FastBacklinksWrite( $pagename, $new_backlinks );
}
$list .= '
';
return $list;
}
## FastBacklinksHandleA performs ?action=fastbacklinks. It's basically the same
## as ?action=browse, except it takes its contents from Site.FastBacklinks.
## Based on HandleSearchA() from scripts/pagelist.php, by Patrick Michaud.
function FastBacklinksHandleA($pagename, $level = 'read') {
global $FastBacklinksPageForm, $FmtV, $HandleFastBacklinksFmt,
$PageStartFmt, $PageEndFmt;
SDV($HandleFastBacklinksFmt,array(&$PageStartFmt, '$PageText', &$PageEndFmt));
$form = ReadPage(FmtPageName($FastBacklinksPageForm, $pagename), READPAGE_CURRENT);
$text = @$form['text'];
if (!$text) $text = '(:backlinks:)';
$FmtV['$PageText'] = MarkupToHTML($pagename,$text);
PrintFmt($pagename, $HandleFastBacklinksFmt);
}
##
## Helper functions.
##
function FastBacklinksRead( $pagename ) {
global $FastBacklinksDir;
$fn = $FastBacklinksDir . '/' . $pagename;
return (array)@file( $fn );
}
function FastBacklinksWrite( $pagename, $backlinks ) {
global $FastBacklinksDir;
$fn = $FastBacklinksDir . '/' . $pagename;
# Checking if "\n"s are in the array, or we should add them
if( substr( $backlinks[0], -1 ) === "\n" )
$glue = '';
else
$glue = "\n";
$h = fopen( $fn, 'w' );
if( !$h ) Abort( "Couldn't open $FastBacklinksDir/$pagename for writing in FastBacklinks.php!" );
fwrite( $h, implode( $glue, $backlinks ) . $glue );
fclose( $h );
fixperms( $fn );
}