User:Fxparlant~metawiki/Technorati
Appearance
The Technorati_extension lacks a few functionalities:
- the user needs to add the wiki categories AND the technorati tags. I think we should be able to hack the category section so that a technorati link is added to each category.
- the technorati server is not pinged at modification of the category list / tag list on edit. The extension should add the ping possibilities through the use of xmlrpc protocols.
Source code tested on mw1.6
[edit]- Load the xmlrpc files
- xmlrpc.inc (15 ko)
- xmlrpcs.inc (10 ko)
- xmlrpc.php (1 ko)
xmlrpc.php
[edit]<?php // $Id: xmlrpc.php,v 1.15 2005/12/10 19:26:47 dries Exp $ /** * @file * PHP page for handling incoming XML-RPC requests from clients. */ //include_once './includes/bootstrap.inc'; //drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL); include_once 'xmlrpc.inc'; include_once 'xmlrpcs.inc'; //xmlrpc_server(module_invoke_all('xmlrpc')); ?>
Editpage.php
[edit]Inside the function edit(), at the " save" if:
if ( 'save' == $this->formtype ) { if ( !$this->attemptSave() ) { wfProfileOut( "$fname-business-end" ); wfProfileOut( $fname ); //Added FXP technorati $this->pingTechnorati(1); return; } }
And now add the function pingTechnorati:
//Added FXP to ping technorati // from http://developers.technorati.com/wiki/pingConfigurations // and http://www.technorati.com/developers/ping/ function pingTechnorati($blog_ID = 1) { global $wgTitle, $use_technoratiping; $fname = 'EditPage::pingTechnorati'; if ( $use_technoratiping == 1) { $client = new xmlrpc_client("/rpc/ping", "rpc.technorati.com", 80); $message = new xmlrpcmsg("weblogUpdates.ping", array(new xmlrpcval($wgTitle->getPrefixedDBkey()), new xmlrpcval("http://www.fwparlant.net/"))); $result = $client->send($message); if (!$result || $result->faultCode()){ return(false); wfDebug( "$fname: failed to notify 'technorati.com'\n" ); } wfDebug( "$fname: super ping to 'technorati.com'\n" ); return(true); } else return(false); }
- There must be a variable with the url of your site, but for now, change manually fxparlant.net with your site's adress
OutputPage.php
[edit]For mediawiki 1.6 modify the addCategoryLinks function with this
function addCategoryLinks($categories) { global $wgUser, $wgContLang, $technorati ; # Add the links to the link cache in a batch $arr = array( NS_CATEGORY => $categories ); $lb = new LinkBatch; $lb->setArray( $arr ); $lb->execute(); $sk =& $wgUser->getSkin(); foreach ( $categories as $category => $arbitrary ) { $title = Title::makeTitleSafe( NS_CATEGORY, $category ); $text = $wgContLang->convertHtml( $title->getText() ); $this->mCategoryLinks[] = $sk->makeLinkObj( $title, $text ); //Modified FXP technorati $text2 = str_replace(" ", "+", $text); $technorati .= "<a href=\"http://technorati.com/tag/" . $text2 . "\" rel=\"tag\">" . $text . "</a>"; } //square technorati in a display none style $technorati = "<div class=\"technorati\" style=\"display:none\">" . $technorati . "</div>"; }
Localsetting.php
[edit]Add:
$use_technoratiping = 1; include