*
* Notify search engines when a page is modified
*
* Developed and tested using PmWiki 2.2.x
* Partly based on Stefan Schimanski's GoogleBlogPing
*
* To install, add the following to your configuration file:
include_once("$FarmD/cookbook/bloge-ping.php");
* This is a part of the Bloge bundle of recipes, but may be used by itself.
* For more information, please see the online documentation at
* http://www.pmwiki.org/wiki/Cookbook/Bloge-Ping and at
* http://www.pmwiki.org/wiki/Cookbook/Bloge
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*/
$RecipeInfo['Bloge-Ping']['Version'] = '2009-08-11';
$EditFunctions[] = 'BlogePing';
function BlogePing($pagename, &$page, &$new) {
global $IsPagePosted, $BlogePing, $MessagesFmt;
SDVA($BlogePing, array(
'page' => $pagename,
'pagefilter' => '/.*/',
'name' => '{$WikiTitle}',
'url' => '{$ScriptUrl}',
'changesURL' => '',
'tgt' => array(),
'msgok' => '',
'msgerror' => 'Bloge-Ping error ($tgt):
$msg
'
));
SDVA($BlogePing['tgt'], array(
'googleblogsearch' => array(
'url' => 'http://blogsearch.google.com/ping',
'param' => array('name','url','changesURL'),
'msgpat' => '/Thanks for the ping/'
)
));
$pn_filt = MatchPageNames($pagename, $BlogePing['pagefilter']);
if (!$IsPagePosted || ( @$_POST['diffclass'] == 'minor' ) || empty($pn_filt)) return;
$pn = MakePageName($pagename, $BlogePing['page']);
foreach ( $BlogePing['tgt'] as $t => $tgt ) {
$param = array();
foreach ( $tgt['param'] as $k ) $param[] = "$k=" . urlencode(FmtPageName(isset($tgt[$k]) ? $tgt[$k] : $BlogePing[$k], $pn));
$url = $tgt['url'] . '?' . implode('&', $param);
if (function_exists('curl_init')) {
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
$msg = curl_exec($ch);
if (empty($msg)) $msg = 'connection error: ' . curl_error($ch);
curl_close($ch);
} else {
$msg = file_get_contents($url);
if (empty($msg)) $msg = 'connection error';
}
$msg_filt = MatchPageNames($msg, $tgt['msgpat']);
$MessagesFmt[] = str_replace(
array( '$tgt','$msg' ),
array( $t, htmlspecialchars($msg) ),
$tgt[ empty($msg_filt) ? 'msgerror' : 'msgok' ]
);
}
}