1#!/usr/bin/perl 2 3# $Id: maint.pl 11896 2003-03-04 21:21:05Z ralfbecker $ 4# 5# This script is used by WikkiTikkiTavi versions 0.1 and greater to maintain 6# the list of known remote pages. This is used by the TwinPages feature. 7# Typically, it will be set up as a cron job to run periodically (e.g., 8# once per week). 9# 10# See http://tavi.sourceforge.net/SisterWiki for more information. 11 12$database = ""; # Database name. 13$user = ""; # Database use name. 14$pass = ""; # Database password. 15$prefix = ""; # Table name prefix (e.g. "wiki_"). 16$linkptn = "([A-Z][a-z]+[A-Z][A-Za-z]*(/[A-Z][A-Za-z]+)?)"; 17 18use DBI; 19 20$dbh = DBI->connect("DBI:mysql:$database:127.0.0.1", $user, $pass) 21 or die "Connecting: $DBI::errstr\n"; 22 23sub insert_page 24{ 25 my ($page) = @_; 26 my ($qid); 27 28 $qid = $dbh->prepare("SELECT page FROM " . $prefix . "remote_pages " . 29 "WHERE site='$site' and page='$page'"); 30 $qid->execute; 31 if(!$qid->fetchrow_hashref) 32 { 33 $qid = $dbh->prepare("INSERT INTO " . $prefix . "remote_pages " . 34 "VALUES('$page', '$site')"); 35 $qid->execute; 36 } 37 38 return ""; 39} 40 41$qid = $dbh->prepare("SELECT prefix, url FROM " . $prefix . "sisterwiki)"); 42$qid->execute; 43 44while($row = $qid->fetchrow_hashref) 45{ 46 $site = $row->{'prefix'}; 47 print "Scanning $site\n"; 48 49 $_ = "lynx -source " . $row->{'url'}; 50 s/&/\\&/g; 51 s/;/\\;/g; 52 $html = `$_`; 53 54 $q2 = $dbh->prepare("DELETE FROM " . $prefix . "remote_pages " . 55 "WHERE site='$site'"); 56 $q2->execute; 57 58 foreach(split(/\n/, $html)) 59 { 60 s/<[Aa].*>($linkptn)<\/[Aa]>/&insert_page($1)/geo; 61 } 62} 63 64