User:Trublu/WP2Wiki

From Meta, a Wikimedia project coordination wiki
Jump to navigation Jump to search
Blue Glass Arrow.svg MediaWiki logo.png
This page should be moved to MediaWiki.org.
Please do not move the page by hand. It will be imported by a MediaWiki.org administrator with the full edit history. In the meantime, you may continue to edit the page as normal.
WP2Wiki
Type: Special page
Author: (Christian) Jason Peper
Version
Version: 0.51
Maturity: beta
MediaWiki: unknown (all?)
Last Updated: 17. September 2006
Description
show latest posts from a wordpress blog
Links
Download: http://www.c-peper.de/wiki/WP2Wiki
MediaWiki extensions

WP2Wiki

An extension to show newest Wordpress-Posts in Mediawiki.

http://www.c-peper.de/wiki/WP2Wiki

Installation[edit]

  1. Save Code as SpecialWP2Wiki.php in folder "extensions" in your mediawiki installation
  2. add
    include './extensions/SpecialWP2Wiki.php';
    in your Localsettings.php
  3. If your wordpress uses another name for tables, edit "$page" accordingly
  4. 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;
 }
 
 ?>