¿Tienes alguna sugerencia para esta sección? Escribe a wiki (at) ebenimeli (dot) org y compártela.

Notificar en Twitter cambios en una wiki

De Ebenimeli wiki

Sección Wiki

  Esta página es sólo un borrador, por lo que puede aparecer incompleta.

Tabla de contenidos

Sobre cómo notificar en Twitter los cambios y actualizaciones en una wiki.

Extensión SendToTwitter para MediaWiki (con cambios)

Recuerdo que al intentar instalar la extensión original (en estado experimental) se producían una serie de errores. Finalmente conseguí que funcionara con algunos cambios. Adjunto el código a continuación.

<?php
/**
 * SendToTwitter extension - sends twitter a tweet when a page is changed
 *
 * @file
 * @ingroup Extensions
 * @version 1.0
 * @author Rohit Keshwani
 * @license http://www.gnu.org/copyleft/gpl.html GNU General Public License 2.0 or later
 * @link http://www.mediawiki.org/wiki/Extension:SendToTwitter Documentation
 */
 
if ( !defined( 'MEDIAWIKI' ) )
	die( "This is not a valid entry point.\n" );
 
// Extension credits that will show up on Special:Version
$wgExtensionCredits['other'][] = array(
	'name' => 'SendToTwitter',
	'version' => '1.0',
	'author' => 'Rohit Keshwani',
	'url' => 'http://www.mediawiki.org/wiki/Extension:SendToTwitter',
	'description' => 'Extension to send twitter a tweet when a page is changed.',
);
 
#Configuration parameters
$wgSendToTwitterUsername = 'twitterusername';
$wgSendToTwitterPassword = 'twitterpassword';
$wgSendToTwitterWikiURL = 'http://yourwikiurl/index.php/';

#$wgHooks['EditPageBeforeEditChecks'][] = 'beforeEditChecks';
$wgHooks['EditPage::attemptSave'][] = 'QueryTwitter';

#$wgHooks['ArticleSaveComplete'][] = 'QueryTwitter';

#function beforeEditChecks( &$editpage, &$checks, &$tabindex ) { 
#}


function QueryTwitter( &$q ) {
	global $wgTitle;
	global $wgArticle;
	global $wgSendToTwitterUsername, $wgSendToTwitterPassword, $wgSendToTwitterWikiURL;
	global $wgRequest;
	
 
	$title = $wgTitle;
	$article = $wgArticle;
	$wurl = $wgSendToTwitterWikiURL;

	//$test2 = explode( "\n", $article->getContent() );
	
	$wikiurl = $title->getFullURL();

	$isMinor = $wgRequest->getCheck('wpMinoredit'); 
	$summary = $wgRequest->getVal('wpSummary'); 
	
	if ($isMinor != '1') {
	// The message you want to send
	$ch = curl_init();
	$timeout = 5;
	curl_setopt( $ch, CURLOPT_URL, 'http://tinyurl.com/api-create.php?url=' . $wikiurl );
	curl_setopt( $ch, CURLOPT_RETURNTRANSFER, 1 );
	curl_setopt( $ch, CURLOPT_CONNECTTIMEOUT, $timeout );
	curl_setopt( $ch, CURLOPT_HEADER, 0);
	$test = curl_exec( $ch );
	curl_close( $ch );
 
	$switcher = rand( 1, 3 );
	switch( $switcher ) {
		case 1:
			$message = 'Actualizando la wiki: ' . $summary . ' en "' . $title->getText() . '" - ' . $test;
			break;
		case 2:
			$message = 'Actualizando "' . $title->getText() . '" en la wiki: ' . $summary . ' - ' . $test;
			break;
		case 3:
			$message = 'En la wiki: ' . $test . ': ' . $summary . ' en "' . $title->getText() . '"';
			break;
	}
	
 
	// The twitter API address
	$url = 'http://twitter.com/statuses/update.xml';
	// Alternative JSON version
	// $url = 'http://twitter.com/statuses/update.json';
	// Set up and execute the curl process
	$curl_handle = curl_init();
	curl_setopt( $curl_handle, CURLOPT_URL, "$url" );
	curl_setopt( $curl_handle, CURLOPT_CONNECTTIMEOUT, 2 );
	curl_setopt( $curl_handle, CURLOPT_RETURNTRANSFER, 1 );
	curl_setopt( $curl_handle, CURLOPT_POST, 1 );
	curl_setopt( $curl_handle, CURLOPT_POSTFIELDS, "status=$message" );
	curl_setopt( $curl_handle, CURLOPT_USERPWD, "$wgSendToTwitterUsername:$wgSendToTwitterPassword" );
	$buffer = curl_exec( $curl_handle );
	curl_close( $curl_handle );
	// check for success or failure
	if( empty( $buffer ) ) {
		return false;
	} else {
		return true;
	}
	} else {
		return true;
	}
}

Enlaces externos

Herramientas personales