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