User:Trublu/WP2Wiki
Template:Extension WP2Wiki
An extension to show newest Wordpress-Posts in Mediawiki.
Installation
edit- Save Code as SpecialWP2Wiki.php in folder "extensions" in your mediawiki installation
- add
include './extensions/SpecialWP2Wiki.php';
in your Localsettings.php - If your wordpress uses another name for tables, edit "$page" accordingly
- include {{Special:WP2Wiki}} wherever desired
Code
edit<?php if (!defined('MEDIAWIKI')) die(); /** * A special page extension that show the newest posts from a wordpress-blog * * @package MediaWiki * @subpackage Extensions * * @link http://www.c-peper.de/wiki/WP2Wiki Documentation * * @author (Christian) Jason Peper <trublu@c-peper.de> * @copyright Copyright © 2006, (Christian) Jason Peper * @license http://www.gnu.org/copyleft/gpl.html GNU General Public License 2.0 or later */ $pars; $wgExtensionFunctions[] = 'wfSpecialWP2WikiS'; $wgExtensionCredits['specialpage'][] = array( 'name' => 'WP2Wiki', 'author' => '(Christian) Jason Peper', 'version' => '0.51', 'description' => 'Wordpress to Mediawiki', 'url' => 'http://www.c-peper.de/wiki/WP2Wiki' ); function wfSpecialWP2WikiS() { global $IP, $wgMessageCache; $wgMessageCache->addMessage('wp2wiki', "WP2Wiki"); $wgMessageCache->addMessage('wp2wikitemplate',"<small>$1</small> · '''[$2 $3]'''<br/>"); $wgMessageCache->addMessage('wp2wikitemplateText', "$1"); require_once "$IP/includes/SpecialPage.php"; // $wgSpecialPages['WP2Wiki'] = 'WP2Wiki'; SpecialPage::addPage(new SpecialPage('WP2Wiki', '', true, 'wfSpecialWP2Wiki', 'default', true)); } function wfSpecialWP2Wiki($par=NULL) { global $wgOut, $par_text, $par_count, $par_lines; $wgOut->setPageTitle("WP2Wiki"); $pars = explode("/",$par); $par_count = $pars[0]; $par_lines = $pars[2]; if ($par_lines == "") { $par_lines = 1; } if ($par_count == "") { $par_count = 3; } if ($pars[1] == "text") { $par_text = True; } $dbr =& wfGetDB( DB_SLAVE ); $page = $dbr->tableName( 'wp_posts' ); $sql = 'SELECT post_title, post_date, post_content, guid FROM ' . $page . ' order by post_date desc limit ' . $par_count . " "; // SELECT * FROM `wp_post2cat`,`wp_posts` WHERE `ID` = wp_post2cat.post_id AND wp_post2cat.category_id = 8 OR `ID` = wp_post2cat.post_id AND wp_post2cat.category_id = 3 ORDER BY post_date DESC $res = $dbr->query( $sql ); $out = ""; while( $row = $dbr->fetchObject($res) ) { $out .= makeListItem($row); } $wgOut->addWikiText($out); } function makeListItem( $row ) { global $par_text, $par_lines; // text parsing $text = $row->post_content; $text = preg_replace("/\n?<!--more-->.*/s", "",$text); $text = preg_replace("/<a.*href=\"(.*)\".*>(.*)<\/a>/U", "[$1 $2]", $text); $text = preg_replace("/((.*\. )).*$/sU","$2...",$text); $text = str_replace("\n","\n:",$text); // Date $parts = explode(" ",$row->post_date); $dates = explode("-", $parts[0]); $times = explode(":", $parts[1]); $date = $dates[2] . "." . $dates[1] . "." . $dates[0]; $out = wfMsgForContent('wp2wikitemplate',$date,$row->guid,$row->post_title); if ($par_text == 1) { $out .= "\n:" . wfMsgForContent('wp2wikitemplateText',$text,$row->guid) . "<br/>\n"; } return $out; } ?>