I have this silly little website called Linux Stuff, where I post things I learn about Linux that I think might be useful for other people as well.

When a new article is posted I get an email about it, piece of cake using the PHP mail() function.

For some reason (I already forgot why) I now want a new post on this blog whenever a new article on Linux Stuff was added. It turned out to be not so hard.

First I found a file on the internet called remotepost.class.php, and edited that to look like this:

<?php
class remotePost
{
  private $client;
  private $wpURL = 'http://localhost/grumble/xmlrpc.php ';
  private $ixrPath = '../grumble/wp-includes/class-IXR.php';
  private $uname = 'newuser';
  private $pass = 'newpass';
  public $postID;
  function __construct($content)
  {
    if(!is_array($content)) throw new Exception('Invalid Argument');
    include $this->ixrPath;
    $this->client = new IXR_Client($this->wpURL);

    $this->postID = $this->postContent($content);
  }
  private function postContent($content)
  {
    $content['description'] =  $content['description'];
    if(!$this->client->query('metaWeblog.newPost','',$this->uname,$this->pass,$content,true)) throw new Exception($this->client->getErrorMessage());
    return $this->client->getResponse();
  }
}
?>

I made that file only readable by Apache, just in case, even though this is not a multi-user server. The newuser I created in the wordpress Users panel.

Then in my Linux Stuff PHP on submit I added these few lines of code:

    /* Send it to Grumble Grumble too */
    $content['title'] = $got_articlename;
    $content['categories'] = array('Open Source');
    $content['description'] = "New post added to Linux Stuff: $got_articlename.";
    try
    {
      $posted = new remotePost($content);
      $pid = $posted->postID;
    }
    catch(Exception $e)
    {
      echo $e->getMessage();
    }

Piece of cake! Now I can post interesting things either here in wordpress or on Linux Stuff, and LuckyYou can learn about them :)