<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>juust ~ php oddities &#187; xml-rpc</title>
	<atom:link href="http://www.juust.org/index.php/category/xml-rpc/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.juust.org</link>
	<description>Link theory and search engine optimization</description>
	<lastBuildDate>Thu, 19 Jan 2012 09:39:32 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Publish Microsoft Word 2010 documents to your WordPress blog</title>
		<link>http://www.juust.org/index.php/publish-microsoft-word-2010-documents-to-your-wordpress-blog/2011/12/</link>
		<comments>http://www.juust.org/index.php/publish-microsoft-word-2010-documents-to-your-wordpress-blog/2011/12/#comments</comments>
		<pubDate>Wed, 28 Dec 2011 04:30:57 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[juust]]></category>
		<category><![CDATA[wordpress]]></category>
		<category><![CDATA[xml-rpc]]></category>

		<guid isPermaLink="false">http://www.juust.org/?p=1998</guid>
		<description><![CDATA[Hands on test, Microsoft Word 2010 supports publishing a document as WordPress blog post, excellent. I have been sailing for a while, so I haven&#8217;t played around with it yet. I love what Microsoft made. They did not just add &#8230; <a href="http://www.juust.org/index.php/publish-microsoft-word-2010-documents-to-your-wordpress-blog/2011/12/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Hands on test, Microsoft Word 2010 supports publishing a document as WordPress blog post, excellent. I have been sailing for a while, so I haven&#8217;t played around with it yet. I love what Microsoft made. They did not just add an XML-RPC post routine, they added a small editor in Microsoft Word itself, especially for blog posts. It is everything you ever wanted but the WordPress editor just never was. You can manage content you already posted, publish directly or as draft, you can cut and paste screenshots, pictures, excel sheets and access tables, it is such a total improvement.</p>
<h2>How to set Word up as WordPress editor ?</h2>
<p><img src="http://www.juust.org/wp-content/uploads/2011/12/122811_0434_PublishMicr15.png" alt="" align="left" />Make a document and pick from the File menu &#8220;Save and Send&#8221;, and you get an extra option to <span style="text-decoration: underline;"><strong>publish as blog post</strong></span>.</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>Once you pick that it opens an editor for blog posts, that pn the background uses the XML-RPC interface. Word starts a wizard the first time, that you can also access by &#8220;manage accounts&#8221; in the editor menu :</p>
<p><img src="http://www.juust.org/wp-content/uploads/2011/12/122811_0434_PublishMicr24.png" alt="" width="768" height="165" /></p>
<p>But let&#8217;s start by clicking <strong>Save and Send</strong> : Word will ask you to register an account, iow your wordpress blog website.</p>
<p><img src="http://www.juust.org/wp-content/uploads/2011/12/122811_0434_PublishMicr32.png" alt="" width="743" height="433" /></p>
<p>When registering you can pick from a whole list of blog types, of course I picked WordPress</p>
<p><img src="http://www.juust.org/wp-content/uploads/2011/12/122811_0434_PublishMicr44.png" alt="" /></p>
<p>In the dialog &#8216;new wordpress account&#8217; you enter your XML-RPC end point, the directory of your blog with /xmlrpc.php, that is where you can post to your blog. Username and Password can be your normal username and password, you can also register separately at the blog. That would be my choice.</p>
<p><img src="http://www.juust.org/wp-content/uploads/2011/12/122811_0434_PublishMicr54.png" alt="" /></p>
<p>Of course these days blog posts all have pictures, and in the account dialog in the lower left corner there is a button &#8220;picture options&#8221; where you can specify how you want uploaded. You can use an FTP upload but in my case picking the blog provider (iow let WordPress handle it itself) works out of the box.</p>
<p><img src="http://www.juust.org/wp-content/uploads/2011/12/122811_0434_PublishMicr64.png" alt="" /></p>
<p>Once you click OK you also get a warning about the visibility of your login and password, XML-RPC posts are text files and your account user name and password are not encrypted when sent to the blog XML-RPC endpoint. There is little risk in it but it is a point that has to be made.</p>
<p><img src="http://www.juust.org/wp-content/uploads/2011/12/122811_0434_PublishMicr74.png" alt="" /></p>
<p>When you agree to continue you can edit your post. And when done, publish.</p>
<p><img src="http://www.juust.org/wp-content/uploads/2011/12/122811_0434_PublishMicr82.png" alt="" /></p>
<p>&#8230;and out came this post. In the WordPress editor you can add some tags and categories if you publish as draft, but you can also specify a category in the  Word editor..</p>
<p>Word offers a lot of picture effects yet it outputs the result as  .png images so it works without css3 dependencies, and outputs very clean html markup. Just for the picture effects and total ease of editing it gets a 5 out of 5.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.juust.org/index.php/publish-microsoft-word-2010-documents-to-your-wordpress-blog/2011/12/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>p2p with wordpress xml-rpc</title>
		<link>http://www.juust.org/index.php/p2p-with-wordpress-xml-rpc/2010/02/</link>
		<comments>http://www.juust.org/index.php/p2p-with-wordpress-xml-rpc/2010/02/#comments</comments>
		<pubDate>Mon, 08 Feb 2010 15:49:54 +0000</pubDate>
		<dc:creator>juust</dc:creator>
				<category><![CDATA[wordpress]]></category>
		<category><![CDATA[xml-rpc]]></category>

		<guid isPermaLink="false">http://www.juust.org/?p=1233</guid>
		<description><![CDATA[Simple fun with WordPress xml-rpc. I want a way to return a welcome message to interested blog owners. To get that done, I make a new plugin that adds a new method to the xml-rpc server. The method &#8216;p2p.welcome&#8217; is &#8230; <a href="http://www.juust.org/index.php/p2p-with-wordpress-xml-rpc/2010/02/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Simple fun with WordPress xml-rpc. I want a way to return a welcome message to interested blog owners. </p>
<p>To get that done, I make a new plugin that adds a new method to the xml-rpc server. </p>
<p>The method &#8216;p2p.welcome&#8217; is mapped to the plugin function &#8216;p2p_welcome&#8217;, which returns the &#8220;about yourself&#8221; description of the admin profile.</p>
<div class="geshi no php">
<ol>
<li class="li1">
<div class="de1"><span class="coMULTI">/*</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">Plugin Name: P2P rpc</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">Description: RPC Peer to Peer stuff</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">Version: 1.0.0 &nbsp;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">Author: Juust</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">Author URI: http://www.juust.org/</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">*/</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">/* xmlrpc_methods hooks into IXR_Server */</span> &nbsp; &nbsp;</div>
</li>
<li class="li1">
<div class="de1">add_filter<span class="br0">&#40;</span> <span class="st0">&#39;xmlrpc_methods&#39;</span><span class="sy0">,</span> <span class="st0">&#39;p2p_xmlrpc_methods&#39;</span> <span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">/* pass the $methods array and add a new one */</span> &nbsp; &nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">function</span> p2p_xmlrpc_methods<span class="br0">&#40;</span> <span class="re1">$methods</span> <span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp;<span class="re1">$methods</span><span class="br0">&#91;</span><span class="st0">&#39;p2p.whoami&#39;</span><span class="br0">&#93;</span> <span class="sy0">=</span> <span class="st0">&#39;p2p_whoami&#39;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp;<span class="kw1">return</span> <span class="re1">$methods</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">/* the function that returns the profile description of user 1 (admin) */</span> &nbsp; &nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">function</span> p2p_whoami<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">return</span> get_the_author_meta<span class="br0">&#40;</span> <span class="st0">&#39;user_description&#39;</span><span class="sy0">,</span> <span class="nu0">1</span> <span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
</ol>
</div>
<p>I plug that into the wordpress blog.</p>
<p>Then I can make a small test program : </p>
<ul>
<li>include class-IXR.php which has the IXR_Client class</li>
<li>extend IXR_Client as <strong>P2PClient</strong></li>
<li>add a function P2PClient->whoareyou()</li>
<li>&#8230;that calls the new method p2p.whoami on the blog</li>
<li>echo the returned data : the admin profile description</li>
</ul>
<div class="geshi no php">
<ol>
<li class="li1">
<div class="de1"><span class="kw1">include_once</span><span class="br0">&#40;</span><span class="st0">&#39;/absolute/path/to/class-IXR.php&#39;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">Class</span> P2PClient <span class="kw2">extends</span> IXR_Client <span class="br0">&#123;</span> </div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">var</span> <span class="re1">$MyPeerConnection</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">var</span> <span class="re1">$response</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">var</span> <span class="re1">$url</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">function</span> __construct<span class="br0">&#40;</span><span class="re1">$url</span><span class="sy0">=</span><span class="st0">&quot;&quot;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="re1">$this</span><span class="sy0">-&gt;</span><span class="me1">url</span> <span class="sy0">=</span> <span class="re1">$url</span><span class="sy0">;</span> </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">if</span><span class="br0">&#40;</span><span class="sy0">!</span><span class="re1">$this</span><span class="sy0">-&gt;</span><span class="me1">connect</span><span class="br0">&#40;</span><span class="re1">$url</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="kw1">return</span> <span class="kw2">false</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp;<span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">//see if there is an xml rpc endpoint</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">function</span> connect<span class="br0">&#40;</span><span class="re1">$url</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp;<span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp;<span class="kw1">if</span><span class="br0">&#40;</span><span class="sy0">!</span><span class="re1">$this</span><span class="sy0">-&gt;</span><span class="me1">MyPeerConnection</span> <span class="sy0">=</span> <span class="kw2">new</span> IXR_Client<span class="br0">&#40;</span><span class="re1">$this</span><span class="sy0">-&gt;</span><span class="me1">url</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="kw1">return</span> <span class="kw2">false</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp;<span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="co1">//query &#39;p2p.whoami&#39;, store the response</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">function</span> whoareyou<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="re1">$this</span><span class="sy0">-&gt;</span><span class="me1">MyPeerConnection</span><span class="sy0">-&gt;</span><span class="me1">query</span><span class="br0">&#40;</span><span class="st0">&#39;p2p.whoami&#39;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="re1">$this</span><span class="sy0">-&gt;</span><span class="me1">response</span> <span class="sy0">=</span> <span class="re1">$this</span><span class="sy0">-&gt;</span><span class="me1">MyPeerConnection</span><span class="sy0">-&gt;</span><span class="me1">getResponse</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp;<span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">//init the client, query, echo response</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re1">$p2p</span> <span class="sy0">=</span> <span class="kw2">new</span> P2PClient<span class="br0">&#40;</span><span class="st0">&#39;http://loaneys.com/xmlrpc.php&#39;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re1">$p2p</span><span class="sy0">-&gt;</span><span class="me1">whoareyou</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw3">echo</span> <span class="st0">&quot;resp &quot;</span><span class="sy0">.</span> <span class="re1">$p2p</span><span class="sy0">-&gt;</span><span class="me1">response</span><span class="sy0">;</span></div>
</li>
</ol>
</div>
<p>That returns : </p>
<blockquote><p>
Hi I am juust, admin of loaneys.com. I worked as business economist at project control and proces automation in engineering and utilities. These days, I do some scripting as a hobby and stick to painting as job.</p></blockquote>
<p>That is a basic way to exchange blog data by extending the xml-rpc endpoint. </p>
]]></content:encoded>
			<wfw:commentRss>http://www.juust.org/index.php/p2p-with-wordpress-xml-rpc/2010/02/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>metaWeblog.newPost posting to WordPress from Word</title>
		<link>http://www.juust.org/index.php/metaweblog-newpost-posting-to-wordpress-from-word/2009/10/</link>
		<comments>http://www.juust.org/index.php/metaweblog-newpost-posting-to-wordpress-from-word/2009/10/#comments</comments>
		<pubDate>Mon, 26 Oct 2009 11:14:37 +0000</pubDate>
		<dc:creator>juust</dc:creator>
				<category><![CDATA[wordpress]]></category>
		<category><![CDATA[xml-rpc]]></category>

		<guid isPermaLink="false">http://www.juust.org/?p=1027</guid>
		<description><![CDATA[Quick and dirty : posting to WordPress from Word with VBA. I put the text source on the server. It works, to a point. You can take a Word document, run the PostToWordpress macro (with your own blogs settings) and &#8230; <a href="http://www.juust.org/index.php/metaweblog-newpost-posting-to-wordpress-from-word/2009/10/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Quick and dirty : posting to WordPress from Word with VBA. I put the <a href="http://www.juust.org/post_to_wordpress.txt" rel="nofollow">text source</a> on the server. </p>
<p>It works, to a point. You can take a Word document, run the PostToWordpress macro (with your own blogs settings) and it puts the content in WordPress. </p>
<p>I haven&#8217;t worked with Word for a few years, you&#8217;d have to ask someone with up-to-date Word vba skills how to grab the document title, and sanitize and format the document text into proper html-output. For the tests I grabbed a snippet off the net, it does not do a perfect job but the  basic idea is kosher.</p>
<h3>metaWeblog.newPost</h3>
<p>Most sites (including blogger) have skipped from blogger.newPost to newer formats. I prefer using the metaWeblog.newPost rpc method, it is a bit more versatile, and supported by WordPress as well. </p>
<p>(ref. <a href="http://msdn.microsoft.com/en-us/library/aa905673.aspx" rel="nofollow">msdn library article on metaWeblog.newPost</a>)</p>
<p>The <strong>methodcall</strong> is structured like this :</p>
<ul>
<li>methodname : metaWeblog.newPost</li>
<li>blogid</li>
<li>blog user name</li>
<li>blog password</li>
<li>the post struct with it&#8217;s members
<ul>
<li>categories array</li>
<li>description (the doc text)</li>
<li>title</li>
<li>date created</li>
</ul>
</li>
<li>publish (0=save as draft, 1=publish immediately)</li>
</ul>
<p>So let&#8217;s build that step by step as vba routine :</p>
<div class="geshi no vb">
<ol>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">Sub</span> PostToWordpress<span class="br0">&#40;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">&#39;the basic blog settings</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; txtURL = <span class="st0">&quot;http://www.blog.com/xmlrpc.php&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; txtBlogId = <span class="st0">&quot;1&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; txtUserName = <span class="st0">&quot;MyUserName&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; txtPassWord = <span class="st0">&quot;MyPassword&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">&#39;the document settings</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; txtTitle = <span class="st0">&quot;MyTitle&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="co1">&#39;note : you can use the documents creation date here</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; txtDateCreated = <span class="kw1">Format</span><span class="br0">&#40;</span><span class="kw1">Now</span><span class="br0">&#40;</span><span class="br0">&#41;</span>, <span class="st0">&quot;yyyyMMdd&quot;</span><span class="br0">&#41;</span> &amp; <span class="st0">&quot;T&quot;</span> &amp; <span class="kw1">Format</span><span class="br0">&#40;</span><span class="kw1">Now</span><span class="br0">&#40;</span><span class="br0">&#41;</span>, <span class="st0">&quot;hh:mm:ss&quot;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="co1">&#39;Categories is an array in the post,</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="co1">&#39;you can use category names,</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="co1">&#39;and you can always use &quot;Uncategorized&quot; </span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="co1">&#39;as all wordpress blogs have it</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">Dim</span> MyCategories<span class="br0">&#40;</span><span class="nu0">2</span><span class="br0">&#41;</span> <span class="kw1">As</span> <span class="kw1">String</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; MyCategories<span class="br0">&#40;</span><span class="nu0">1</span><span class="br0">&#41;</span> = <span class="st0">&quot;Uncategorized&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; MyCategories<span class="br0">&#40;</span><span class="nu0">2</span><span class="br0">&#41;</span> = <span class="st0">&quot;example_category_one&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="co1">&#39;note: this function grabs the document text, </span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="co1">&#39;replaces linebreaks with html linebreaks etc. </span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="co1">&#39;it needs a lot more work</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; txtDocument = getCurrentDocAsSimpleHtml<span class="br0">&#40;</span><span class="br0">&#41;</span></div>
</li>
</ol>
</div>
<p>Once I have the blog settings and the content + attributes for the new WordPress post, I set up the XMLHttpRequest object :</p>
<div class="geshi no vb">
<ol>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">Dim</span> objSvrHTTP <span class="kw1">As</span> ServerXMLHTTP</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">Dim</span> strT <span class="kw1">As</span> <span class="kw1">String</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">Set</span> objSvrHTTP = <span class="kw1">New</span> ServerXMLHTTP</div>
</li>
<li class="li1">
<div class="de1">&nbsp; </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; objSvrHTTP.<span class="kw1">Open</span> <span class="st0">&quot;POST&quot;</span>, txtURL, <span class="kw1">False</span>, <span class="kw1">CStr</span><span class="br0">&#40;</span>txtUserName<span class="br0">&#41;</span>, _</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">CStr</span><span class="br0">&#40;</span>txtPassWord<span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; objSvrHTTP.<span class="me1">setRequestHeader</span> <span class="st0">&quot;Accept&quot;</span>, <span class="st0">&quot;application/xml&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; objSvrHTTP.<span class="me1">setRequestHeader</span> <span class="st0">&quot;Content-Type&quot;</span>, <span class="st0">&quot;application/xml&quot;</span></div>
</li>
</ol>
</div>
<p>Then I start building the XML to send to WordPress, </p>
<div class="geshi no vb">
<ol>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">&#39;methodcall &nbsp; &nbsp;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; strT = strT &amp; <span class="st0">&quot;&lt;methodcall&gt;&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">&#39;methodname</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; strT = strT &amp; <span class="st0">&quot;&lt;methodname&gt;metaWeblog.newPost&lt;/methodname&gt;&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">&#39;parameters : blog settings</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; strT = strT &amp; <span class="st0">&quot;&lt;params&gt;&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; strT = strT &amp; <span class="st0">&quot;&lt;param&gt;&lt;value&gt;&lt;string&gt;&quot;</span> &amp; txtBlogId &amp; <span class="st0">&quot;&lt;/string&gt;&lt;/value&gt;&lt;/param&gt;&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; strT = strT &amp; <span class="st0">&quot;&lt;param&gt;&lt;value&gt;&lt;string&gt;&quot;</span> &amp; txtUserName &amp; <span class="st0">&quot;&lt;/string&gt;&lt;/value&gt;&lt;/param&gt;&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; strT = strT &amp; <span class="st0">&quot;&lt;param&gt;&lt;value&gt;&lt;string&gt;&quot;</span> &amp; txtPassWord &amp; <span class="st0">&quot;&lt;/string&gt;&lt;/value&gt;&lt;/param&gt;&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">&#39;parameters : the post structure</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; strT = strT &amp; <span class="st0">&quot;&lt;param&gt;&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; strT = strT &amp; <span class="st0">&quot;&lt;struct&gt;&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">&#39;parameters : post : category array</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; strT = strT &amp; <span class="st0">&quot;&lt;member&gt;&lt;name&gt;categories&lt;/name&gt;&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; strT = strT &amp; <span class="st0">&quot;&lt;value&gt;&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; strT = strT &amp; <span class="st0">&quot;&lt;array&gt;&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; strT = strT &amp; <span class="st0">&quot;&lt;data&gt;&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="kw1">For</span> i = <span class="nu0">1</span> <span class="kw1">To</span> <span class="kw1">UBound</span><span class="br0">&#40;</span>MyCategories<span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; strT = strT &amp; <span class="st0">&quot;&lt;value&gt;&quot;</span> &amp; MyCategories<span class="br0">&#40;</span>i<span class="br0">&#41;</span> &amp; <span class="st0">&quot;&lt;/value&gt;&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="kw1">Next</span> i</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; strT = strT &amp; <span class="st0">&quot;&lt;/data&gt;&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; strT = strT &amp; <span class="st0">&quot;&lt;/array&gt;&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; strT = strT &amp; <span class="st0">&quot;&lt;/value&gt;&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; strT = strT &amp; <span class="st0">&quot;&lt;/member&gt;&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">&#39;parameters : post : the content</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; strT = strT &amp; <span class="st0">&quot;&lt;member&gt;&lt;name&gt;description&lt;/name&gt;&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; strT = strT &amp; <span class="st0">&quot;&lt;value&gt;&lt; [!CDATA[&quot;</span> &amp; txtDocument &amp; <span class="st0">&quot;]]&gt;&lt;/value&gt;&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; strT = strT &amp; <span class="st0">&quot;&lt;/member&gt;&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">&#39;parameters : post : title</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; strT = strT &amp; <span class="st0">&quot;&lt;member&gt;&lt;name&gt;title&lt;/name&gt;&lt;value&gt;&quot;</span> &amp; txtTitle &amp; <span class="st0">&quot;&lt;/value&gt;&lt;/member&gt;&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">&#39;parameters : post : date created</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; strT = strT &amp; <span class="st0">&quot;&lt;member&gt;&lt;name&gt;dateCreated&lt;/name&gt;&lt;value&gt;&lt;datetime .iso8601&gt;&quot;</span> &amp; &nbsp;txtDateCreated &amp; <span class="st0">&quot;&lt;/datetime&gt;&lt;/value&gt;&lt;/member&gt;&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; strT = strT &amp; <span class="st0">&quot;&lt;/struct&gt;&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; strT = strT &amp; <span class="st0">&quot;&lt;/param&gt;&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">&#39;parameters : post : store as draft (0) or publish immediately (1)</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; strT = strT &amp; <span class="st0">&quot;&lt;param&gt;&lt;value&gt;&lt;boolean&gt;0&lt;/boolean&gt;&lt;/value&gt;&lt;/param&gt;&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">&#39;end parameters</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; strT = strT &amp; <span class="st0">&quot;&lt;/params&gt;&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">&#39;end methodcall</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; strT = strT &amp; <span class="st0">&quot;&lt;/methodcall&gt;&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">&#39;send it to wordpress</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; objSvrHTTP.<span class="me1">send</span> strT</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">&#39;send the response to the debug window</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; Debug.<span class="kw1">Print</span> objSvrHTTP.<span class="me1">responseText</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">End</span> <span class="kw1">Sub</span></div>
</li>
</ol>
</div>
<h3>conversion to html</h3>
<p>The main practical problem is converting the Word document content to html. I grabbed two quick functions to select the current document text, convert the most common html entities and replace linebreaks with their html counterparts, but it is far from perfect. </p>
<div class="geshi no vb">
<ol>
<li class="li1">
<div class="de1"><span class="kw1">Private</span> <span class="kw1">Function</span> getCurrentDocAsSimpleHtml<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="kw1">As</span> <span class="kw1">String</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co1">&#39;&#8230; see source text</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">End</span> <span class="kw1">Function</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">&#39; simple HTML entity encoder</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">Private</span> <span class="kw1">Function</span> encode<span class="br0">&#40;</span>ByVal s <span class="kw1">As</span> <span class="kw1">String</span><span class="br0">&#41;</span> <span class="kw1">As</span> <span class="kw1">String</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">If</span> s = <span class="st0">&quot;&amp;&quot;</span> <span class="kw1">Then</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; encode = <span class="st0">&quot;&amp;amp;&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">ElseIf</span> s = <span class="st0">&quot;&lt; &quot;</span> <span class="kw1">Then</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; encode = <span class="st0">&quot;&amp;lt;&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">ElseIf</span> s = <span class="st0">&quot;&gt;&quot;</span> <span class="kw1">Then</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; encode = <span class="st0">&quot;&amp;gt;&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">ElseIf</span> s = <span class="kw1">Chr</span><span class="br0">&#40;</span><span class="nu0">13</span><span class="br0">&#41;</span> <span class="kw1">Then</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; encode = <span class="st0">&quot;&lt;br /&gt;&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">Else</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; encode = s</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">End</span> <span class="kw1">If</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">End</span> <span class="kw1">Function</span></div>
</li>
</ol>
</div>
<p>The WordPress Incutio xml-parser will not pass content it cannot make sense of, which leaves you with an empty post.</p>
<h3>using CDATA</h3>
<p>A rather common hack I used above is using < ![CDATA[ ]]&gt; to wrap the post content, which indicates to the wordpress xml-parser that I pass a string of raw character data as content. The parser ignores it, and WordPress stuffs everything in the database. </p>
<p>Works great, but it can backfire and slip stuff in the database that wordpress cannot handle and display correctly. </p>
<p>I&#8217;d test without using CDATA if you want to post from Word on a regular basis, or use a more professional html-converter on the word documents first.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.juust.org/index.php/metaweblog-newpost-posting-to-wordpress-from-word/2009/10/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>RpSequel : rfc sql crud with wordpress</title>
		<link>http://www.juust.org/index.php/rpsequel-rfc-sql-crud-with-wordpress/2009/10/</link>
		<comments>http://www.juust.org/index.php/rpsequel-rfc-sql-crud-with-wordpress/2009/10/#comments</comments>
		<pubDate>Fri, 23 Oct 2009 09:50:07 +0000</pubDate>
		<dc:creator>juust</dc:creator>
				<category><![CDATA[php]]></category>
		<category><![CDATA[wordpress]]></category>
		<category><![CDATA[xml-rpc]]></category>

		<guid isPermaLink="false">http://www.juust.org/?p=1011</guid>
		<description><![CDATA[I set out to use MsAccess with xhr/ajax to maintain tables I added to my wordpress database, from my desktop. (Because I suck at html forms backends and consider them a waste of time.) I used a similar technique ten &#8230; <a href="http://www.juust.org/index.php/rpsequel-rfc-sql-crud-with-wordpress/2009/10/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I set out to use MsAccess with xhr/ajax to maintain tables I added to my wordpress database, from my desktop. (Because I suck at html forms backends and consider them a waste of time.) </p>
<p>I used a similar technique ten years ago, setting up msaccess as reporting tool for SAP R/3 with RFC dll&#8217;s and ActiveX. That remained stable for eight years without maintenance. Hey, I might get lucky with WordPress xml-rpc and xhr/ajax.</p>
<p>I called the example RpSequel.</p>
<h3>adding sql rpc functions</h3>
<p>To sync the data sets, I will duplicate a list with sequel operations from my desktop database as rfc call to my blog&#8217;s  xmlrpc-endpoint. To handle that list, I plug a sql crud method into the xml-rpc method array in WordPress :</p>
<div class="geshi no php">
<ol>
<li class="li1">
<div class="de1">add_filter<span class="br0">&#40;</span> <span class="st0">&#39;xmlrpc_methods&#39;</span><span class="sy0">,</span> <span class="st0">&#39;rpsequel_methods&#39;</span> <span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">function</span> rpsequel_methods<span class="br0">&#40;</span> <span class="re1">$methods</span> <span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="re1">$methods</span><span class="br0">&#91;</span><span class="st0">&#39;rpsequel.rpsequelInsert&#39;</span><span class="br0">&#93;</span> <span class="sy0">=</span> <span class="st0">&#39;rpsequelInsert&#39;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">return</span> <span class="re1">$methods</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">function</span> rpsequelInsert<span class="br0">&#40;</span><span class="re1">$args</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
</ol>
</div>
<p>The basic INSERT method itself can be simple:</p>
<div class="geshi no php">
<ol>
<li class="li1">
<div class="de1"><span class="kw2">function</span> rpsequelInsert<span class="br0">&#40;</span><span class="re1">$args</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">global</span> <span class="re1">$wpdb</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">//the first parameters</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="re1">$blog_id</span> <span class="sy0">=</span> <span class="br0">&#40;</span>int<span class="br0">&#41;</span> <span class="re1">$args</span><span class="br0">&#91;</span><span class="nu0">0</span><span class="br0">&#93;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="re1">$username</span> <span class="sy0">=</span> <span class="re1">$args</span><span class="br0">&#91;</span><span class="nu0">1</span><span class="br0">&#93;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="re1">$password</span> <span class="sy0">=</span> <span class="re1">$args</span><span class="br0">&#91;</span><span class="nu0">2</span><span class="br0">&#93;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="re1">$tablename</span> &nbsp; &nbsp; &nbsp;<span class="sy0">=</span> <span class="re1">$args</span><span class="br0">&#91;</span><span class="nu0">3</span><span class="br0">&#93;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">//get the structs</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="re1">$structs</span> &nbsp; &nbsp; &nbsp; &nbsp;<span class="sy0">=</span> <span class="re1">$args</span><span class="br0">&#91;</span><span class="nu0">4</span><span class="br0">&#93;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">//pick the first </span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="re1">$struct</span> <span class="sy0">=</span> <span class="re1">$structs</span><span class="br0">&#91;</span><span class="nu0">0</span><span class="br0">&#93;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">//compose the mysql insert statement &nbsp; &nbsp; </span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">foreach</span><span class="br0">&#40;</span><span class="re1">$struct</span> <span class="kw1">as</span> <span class="re1">$key</span> <span class="sy0">=&gt;</span> <span class="re1">$value</span><span class="br0">&#41;</span><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re1">$SqlFields</span> <span class="sy0">.=</span> <span class="st0">&quot; `&quot;</span><span class="sy0">.</span><span class="re1">$key</span> <span class="sy0">.</span> <span class="st0">&quot;`,&quot;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re1">$SqlValues</span> <span class="sy0">.=</span> <span class="st0">&quot; &#39;&quot;</span><span class="sy0">.</span><span class="re1">$value</span> <span class="sy0">.</span> <span class="st0">&quot;&#39;,&quot;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="re1">$SqlFields</span><span class="sy0">=</span><span class="kw3">substr</span><span class="br0">&#40;</span><span class="re1">$SqlFields</span><span class="sy0">,</span> <span class="nu0">0</span><span class="sy0">,</span> <span class="kw3">strlen</span><span class="br0">&#40;</span><span class="re1">$SqlFields</span><span class="br0">&#41;</span><span class="nu0">-1</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="re1">$SqlValues</span><span class="sy0">=</span><span class="kw3">substr</span><span class="br0">&#40;</span><span class="re1">$SqlValues</span><span class="sy0">,</span> <span class="nu0">0</span><span class="sy0">,</span> <span class="kw3">strlen</span><span class="br0">&#40;</span><span class="re1">$SqlValues</span><span class="br0">&#41;</span><span class="nu0">-1</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="re1">$SqlStatement</span> <span class="sy0">.=</span> <span class="st0">&quot;INSERT INTO &quot;</span><span class="sy0">.</span><span class="re1">$wpdb</span><span class="sy0">-&gt;</span><span class="me1">prefix</span><span class="sy0">.</span><span class="re1">$tablename</span><span class="sy0">.</span> <span class="st0">&quot; (&quot;</span><span class="sy0">.</span> <span class="re1">$SqlFields</span> <span class="sy0">.</span> &nbsp;<span class="st0">&quot;) VALUES (&quot;</span><span class="sy0">.</span><span class="re1">$SqlValues</span> <span class="sy0">.</span> <span class="st0">&quot;)&quot;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; </div>
</li>
<li class="li1">
<div class="de1"><span class="co1">//execute the query &nbsp; &nbsp; &nbsp; &nbsp;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="re1">$wpdb</span><span class="sy0">-&gt;</span><span class="me1">query</span><span class="br0">&#40;</span><span class="re1">$wpdb</span><span class="sy0">-&gt;</span><span class="me1">prepare</span><span class="br0">&#40;</span><span class="re1">$SqlStatement</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">//return the record id</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp;<span class="kw1">return</span> <span class="re1">$wpdb</span><span class="sy0">-&gt;</span><span class="me1">insert_id</span><span class="sy0">;</span> </div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
</ol>
</div>
<p>That in itself is not very exciting, it stuffs records in the host&#8217;s database. Which is fine, however, I want the blog to respond to individual operations. </p>
<p>I can write rpc-functions for every single function I want the blog to perform, that means truckloads of rpc-functions, on both client and server end. I am incredibly lazy, so I ain&#8217;t gonna go there.</p>
<h3>adding hooks to sql rpc functions</h3>
<p>Lucky for me, WordPress has hooks, hooks are cool. </p>
<p>Adding action hooks (before_insert and after_insert) to the crud method makes it more powerful. Two hooks are enough to separate the business logic of the desktop database from the blogs reporting logic.</p>
<div class="geshi no php">
<ol>
<li class="li1">
<div class="de1"><span class="kw2">function</span> rpsequelInsert<span class="br0">&#40;</span><span class="re1">$args</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">global</span> <span class="re1">$wpdb</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">//the first parameters</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="re1">$blog_id</span> <span class="sy0">=</span> <span class="br0">&#40;</span>int<span class="br0">&#41;</span> <span class="re1">$args</span><span class="br0">&#91;</span><span class="nu0">0</span><span class="br0">&#93;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="re1">$username</span> <span class="sy0">=</span> <span class="re1">$args</span><span class="br0">&#91;</span><span class="nu0">1</span><span class="br0">&#93;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="re1">$password</span> <span class="sy0">=</span> <span class="re1">$args</span><span class="br0">&#91;</span><span class="nu0">2</span><span class="br0">&#93;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="re1">$tablename</span> &nbsp; &nbsp; &nbsp;<span class="sy0">=</span> <span class="re1">$args</span><span class="br0">&#91;</span><span class="nu0">3</span><span class="br0">&#93;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">//get the structs</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="re1">$structs</span> &nbsp; &nbsp; &nbsp; &nbsp;<span class="sy0">=</span> <span class="re1">$args</span><span class="br0">&#91;</span><span class="nu0">4</span><span class="br0">&#93;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">//here is the first action hook,</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co1">//it hands the tablename and the records over to any</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co1">//function that &#39;listens&#39; on the action hook</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">do_action<span class="br0">&#40;</span><span class="st0">&#39;rpsequel_before_insert&#39;</span><span class="sy0">,</span> &nbsp;<span class="re1">$tablename</span><span class="sy0">,</span> <span class="re1">$structs</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">//the rest of the rather dull method</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="re1">$struct</span> <span class="sy0">=</span> <span class="re1">$structs</span><span class="br0">&#91;</span><span class="nu0">0</span><span class="br0">&#93;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co1">//&#8230;. </span></div>
</li>
<li class="li1">
<div class="de1"><span class="co1">//execute the query &nbsp; &nbsp; &nbsp; &nbsp;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="re1">$wpdb</span><span class="sy0">-&gt;</span><span class="me1">query</span><span class="br0">&#40;</span><span class="re1">$wpdb</span><span class="sy0">-&gt;</span><span class="me1">prepare</span><span class="br0">&#40;</span><span class="re1">$SqlStatement</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">//here is the second action hook,</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co1">//it hands the table name with the new record id</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co1">//to any function that &#39;listens&#39; on the action hook</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">do_action<span class="br0">&#40;</span><span class="st0">&#39;rpsequel_after_insert&#39;</span><span class="sy0">,</span> &nbsp;<span class="re1">$tablename</span><span class="sy0">,</span> <span class="re1">$wpdb</span><span class="sy0">-&gt;</span><span class="me1">insert_id</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">//return the record id</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp;<span class="kw1">return</span> <span class="re1">$wpdb</span><span class="sy0">-&gt;</span><span class="me1">insert_id</span><span class="sy0">;</span> </div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
</ol>
</div>
<p>Now it is more exciting. </p>
<ul>
<li>I can send a list of records and a rfc insert-method to the blogs xmlrpc endpoint</li>
<li>the rfc crud-plugin can process the records one by one</li>
<li>Before and after each insert operation, the method triggers an action. </li>
<li>Before inserting, it exposes the record data.</li>
<li>After inserting, it exposes the record id.</li>
</ul>
<p>And the last two, was exactly what I wanted. </p>
<h3>adding functionality with plugins</h3>
<p>Now I can add tiny plugins, that &#8216;listen&#8217; on the action hooks in the rfc-methods. If there is an INSERT into the database, my plugins read which table it affects. They can perform actions, either before the insert, with the new record data, or after the insert, with the new record id.</p>
<div class="geshi no php">
<ol>
<li class="li1">
<div class="de1">add_action <span class="br0">&#40;</span> <span class="st0">&#39;rpsequel_before_insert&#39;</span><span class="sy0">,</span> <span class="st0">&#39;before_insert_logic&#39;</span><span class="sy0">,</span> <span class="nu0">10</span><span class="sy0">,</span> <span class="nu0">2</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">add_action <span class="br0">&#40;</span> <span class="st0">&#39;rpsequel_after_insert&#39;</span><span class="sy0">,</span> <span class="st0">&#39;after_insert_logic&#39;</span><span class="sy0">,</span> <span class="nu0">10</span><span class="sy0">,</span> <span class="nu0">2</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">function</span> before_insert_logic<span class="br0">&#40;</span><span class="re1">$rpc_tablename</span><span class="sy0">,</span> <span class="re1">$rpc_array</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="kw1">if</span><span class="br0">&#40;</span><span class="re1">$rpc_tablename</span><span class="sy0">==</span><span class="st0">&quot;ships&quot;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co1">//do some stuff before inserting incoming records</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">function</span> after_insert_logic<span class="br0">&#40;</span><span class="re1">$rpc_tablename</span><span class="sy0">,</span> <span class="re1">$rpc_insert_id</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="kw1">if</span><span class="br0">&#40;</span><span class="re1">$rpc_tablename</span><span class="sy0">==</span><span class="st0">&quot;ships&quot;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co1">//do some stuff after inserting incoming records</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
</ol>
</div>
<p>That&#8217;s basically all it takes. As technique, it has it&#8217;s limitations, but it can come in handy sometimes. </p>
]]></content:encoded>
			<wfw:commentRss>http://www.juust.org/index.php/rpsequel-rfc-sql-crud-with-wordpress/2009/10/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>integrating ms office and wordpress with vba and xml-rpc</title>
		<link>http://www.juust.org/index.php/integrating-ms-office-and-wordpress-with-vba-and-xml-rpc/2009/10/</link>
		<comments>http://www.juust.org/index.php/integrating-ms-office-and-wordpress-with-vba-and-xml-rpc/2009/10/#comments</comments>
		<pubDate>Tue, 20 Oct 2009 11:20:53 +0000</pubDate>
		<dc:creator>juust</dc:creator>
				<category><![CDATA[juust]]></category>
		<category><![CDATA[wordpress]]></category>
		<category><![CDATA[xml-rpc]]></category>
		<category><![CDATA[vba]]></category>

		<guid isPermaLink="false">http://www.juust.org/?p=979</guid>
		<description><![CDATA[Okay. Yesterday I made some basic stuff to grab my WordPress blog data with visual basic for applicationsn cos I don&#8217;t feel like programming php admin pages for tables. So let&#8217;s make a basic xml-rpc crud plugin and put my &#8230; <a href="http://www.juust.org/index.php/integrating-ms-office-and-wordpress-with-vba-and-xml-rpc/2009/10/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Okay. </p>
<p>Yesterday I made some basic stuff to grab my WordPress blog data with visual basic for applicationsn cos I don&#8217;t feel like programming php admin pages for tables. </p>
<p>So let&#8217;s make a basic xml-rpc crud plugin and put my agenda on vba remote control.</p>
<p>The basic xml-rpc plugin is simple, plug extra methods into the xml-rpc method array, and write a function per crud-method. </p>
<div class="geshi no php">
<ol>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">add_filter<span class="br0">&#40;</span> <span class="st0">&#39;xmlrpc_methods&#39;</span><span class="sy0">,</span> <span class="st0">&#39;add_agenda_xmlrpc_methods&#39;</span> <span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">function</span> add_agenda_xmlrpc_methods<span class="br0">&#40;</span> <span class="re1">$methods</span> <span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="re1">$methods</span><span class="br0">&#91;</span><span class="st0">&#39;agenda.addAgendaItem&#39;</span><span class="br0">&#93;</span> <span class="sy0">=</span> <span class="st0">&#39;addAgendaItem&#39;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="re1">$methods</span><span class="br0">&#91;</span><span class="st0">&#39;agenda.updateAgendaItem&#39;</span><span class="br0">&#93;</span> <span class="sy0">=</span> <span class="st0">&#39;updateAgendaItem&#39;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="re1">$methods</span><span class="br0">&#91;</span><span class="st0">&#39;agenda.deleteAgendaItem&#39;</span><span class="br0">&#93;</span> <span class="sy0">=</span> <span class="st0">&#39;deleteAgendaItem&#39;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="re1">$methods</span><span class="br0">&#91;</span><span class="st0">&#39;agenda.reportAgendaItem&#39;</span><span class="br0">&#93;</span> <span class="sy0">=</span> <span class="st0">&#39;reportAgendaItem&#39;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">return</span> <span class="re1">$methods</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">function</span> addAgendaItem<span class="br0">&#40;</span><span class="re1">$args</span><span class="br0">&#41;</span> <span class="br0">&#123;</span> <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">function</span> updateAgendaItem<span class="br0">&#40;</span><span class="re1">$args</span><span class="br0">&#41;</span> <span class="br0">&#123;</span> <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">function</span> deleteAgendaItem<span class="br0">&#40;</span><span class="re1">$args</span><span class="br0">&#41;</span> <span class="br0">&#123;</span> <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">function</span> reportAgendaItem<span class="br0">&#40;</span><span class="re1">$args</span><span class="br0">&#41;</span> <span class="br0">&#123;</span> <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">//basic login helper function</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">function</span> CheckLogin<span class="br0">&#40;</span><span class="re1">$user</span><span class="sy0">,</span> <span class="re1">$pwd</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><span class="br0">&#125;</span></div>
</li>
</ol>
</div>
<p>There now, if I call on the xmlrpc.php file, the extra methods are added to the callback array and I can use the table CRUD functions from my vba desktop.</p>
<div class="geshi no php">
<ol>
<li class="li1">
<div class="de1"><span class="kw2">function</span> addAgendaItem<span class="br0">&#40;</span><span class="re1">$args</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="re1">$blog_id</span> <span class="sy0">=</span> <span class="br0">&#40;</span>int<span class="br0">&#41;</span> <span class="re1">$args</span><span class="br0">&#91;</span><span class="nu0">0</span><span class="br0">&#93;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="re1">$username</span> <span class="sy0">=</span> <span class="re1">$args</span><span class="br0">&#91;</span><span class="nu0">1</span><span class="br0">&#93;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="re1">$password</span> <span class="sy0">=</span> <span class="re1">$args</span><span class="br0">&#91;</span><span class="nu0">2</span><span class="br0">&#93;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="re1">$AgendaItem</span> &nbsp; &nbsp; <span class="sy0">=</span> <span class="re1">$args</span><span class="br0">&#91;</span><span class="nu0">3</span><span class="br0">&#93;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">//remember : add a login check</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co1">//(for the example it is irrelevant)</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">global</span> <span class="re1">$wpdb</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="re1">$sql</span> <span class="sy0">=</span> <span class="st0">&quot;INSERT INTO &quot;</span><span class="sy0">.</span><span class="re1">$wpdb</span><span class="sy0">-&gt;</span><span class="me1">prefix</span><span class="sy0">.</span><span class="st0">&quot;Agenda (</span></div>
</li>
<li class="li1">
<div class="de1"><span class="st0"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;`userid`, `tags`, `description`, `firstdate`, `enddate`, `link`, `price`, `location`</span></div>
</li>
<li class="li1">
<div class="de1"><span class="st0"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;) VALUES (</span></div>
</li>
<li class="li1">
<div class="de1"><span class="st0"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&#39;&quot;</span><span class="sy0">.</span><span class="re1">$AgendaItem</span><span class="br0">&#91;</span><span class="nu0">0</span><span class="br0">&#93;</span><span class="br0">&#91;</span><span class="st0">&#39;userid&#39;</span><span class="br0">&#93;</span><span class="sy0">.</span><span class="st0">&quot;&#39;,</span></div>
</li>
<li class="li1">
<div class="de1"><span class="st0"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&#39;&quot;</span><span class="sy0">.</span><span class="re1">$AgendaItem</span><span class="br0">&#91;</span><span class="nu0">0</span><span class="br0">&#93;</span><span class="br0">&#91;</span><span class="st0">&#39;tags&#39;</span><span class="br0">&#93;</span><span class="sy0">.</span><span class="st0">&quot;&#39;,</span></div>
</li>
<li class="li1">
<div class="de1"><span class="st0"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&#39;&quot;</span><span class="sy0">.</span><span class="re1">$AgendaItem</span><span class="br0">&#91;</span><span class="nu0">0</span><span class="br0">&#93;</span><span class="br0">&#91;</span><span class="st0">&#39;description&#39;</span><span class="br0">&#93;</span><span class="sy0">.</span><span class="st0">&quot;&#39;,</span></div>
</li>
<li class="li1">
<div class="de1"><span class="st0"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&#39;&quot;</span><span class="sy0">.</span><span class="re1">$AgendaItem</span><span class="br0">&#91;</span><span class="nu0">0</span><span class="br0">&#93;</span><span class="br0">&#91;</span><span class="st0">&#39;firstdate&#39;</span><span class="br0">&#93;</span><span class="sy0">.</span><span class="st0">&quot;&#39;,</span></div>
</li>
<li class="li1">
<div class="de1"><span class="st0"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&#39;&quot;</span><span class="sy0">.</span><span class="re1">$AgendaItem</span><span class="br0">&#91;</span><span class="nu0">0</span><span class="br0">&#93;</span><span class="br0">&#91;</span><span class="st0">&#39;enddate&#39;</span><span class="br0">&#93;</span><span class="sy0">.</span><span class="st0">&quot;&#39;,</span></div>
</li>
<li class="li1">
<div class="de1"><span class="st0"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&#39;&quot;</span><span class="sy0">.</span><span class="re1">$AgendaItem</span><span class="br0">&#91;</span><span class="nu0">0</span><span class="br0">&#93;</span><span class="br0">&#91;</span><span class="st0">&#39;link&#39;</span><span class="br0">&#93;</span><span class="sy0">.</span><span class="st0">&quot;&#39;,</span></div>
</li>
<li class="li1">
<div class="de1"><span class="st0"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&#39;&quot;</span><span class="sy0">.</span><span class="re1">$AgendaItem</span><span class="br0">&#91;</span><span class="nu0">0</span><span class="br0">&#93;</span><span class="br0">&#91;</span><span class="st0">&#39;price&#39;</span><span class="br0">&#93;</span><span class="sy0">.</span><span class="st0">&quot;&#39;,</span></div>
</li>
<li class="li1">
<div class="de1"><span class="st0"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&#39;&quot;</span><span class="sy0">.</span><span class="re1">$AgendaItem</span><span class="br0">&#91;</span><span class="nu0">0</span><span class="br0">&#93;</span><span class="br0">&#91;</span><span class="st0">&#39;location&#39;</span><span class="br0">&#93;</span><span class="sy0">.</span><span class="st0">&quot;&#39; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="st0"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;)&quot;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="re1">$wpdb</span><span class="sy0">-&gt;</span><span class="me1">query</span><span class="br0">&#40;</span><span class="re1">$wpdb</span><span class="sy0">-&gt;</span><span class="me1">prepare</span><span class="br0">&#40;</span><span class="re1">$sql</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">return</span> <span class="re1">$wpdb</span><span class="sy0">-&gt;</span><span class="me1">insert_id</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
</ol>
</div>
<p>note : the agendaitem is a struct in an array (see below), I use [0] to get the first struct (which is the actual array with field-value pairs, my record with agenda info).</p>
<p>Activate the plugin, and write a simple test </p>
<div class="geshi no vb">
<ol>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">&#39;Type to hold an agenda info record</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">Type</span> AgendaItem</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; userid <span class="kw1">As</span> <span class="kw1">String</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; tags <span class="kw1">As</span> <span class="kw1">String</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; Description <span class="kw1">As</span> <span class="kw1">String</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; firstdate <span class="kw1">As</span> <span class="kw1">String</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; enddate <span class="kw1">As</span> <span class="kw1">String</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; link <span class="kw1">As</span> <span class="kw1">String</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; price <span class="kw1">As</span> <span class="kw1">String</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; location <span class="kw1">As</span> <span class="kw1">String</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">End</span> <span class="kw1">Type</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">Function</span> AddAgendaItem<span class="br0">&#40;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">txtURL = <span class="st0">&quot;http://wwwblog.com/xmlrpc.php&quot;</span></div>
</li>
<li class="li1">
<div class="de1">txtUserName = <span class="st0">&quot;MyUsername&quot;</span></div>
</li>
<li class="li1">
<div class="de1">txtPassword = <span class="st0">&quot;MyPassword&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; </div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw1">Dim</span> objSvrHTTP <span class="kw1">As</span> ServerXMLHTTP</div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw1">Dim</span> strT <span class="kw1">As</span> <span class="kw1">String</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw1">Set</span> objSvrHTTP = <span class="kw1">New</span> ServerXMLHTTP</div>
</li>
<li class="li1">
<div class="de1">&nbsp; </div>
</li>
<li class="li1">
<div class="de1">&nbsp; objSvrHTTP.<span class="kw1">Open</span> <span class="st0">&quot;POST&quot;</span>, txtURL, <span class="kw1">False</span>, <span class="kw1">CStr</span><span class="br0">&#40;</span>txtUserName<span class="br0">&#41;</span>, _</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="kw1">CStr</span><span class="br0">&#40;</span>txtPassword<span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; </div>
</li>
<li class="li1">
<div class="de1">&nbsp; objSvrHTTP.<span class="me1">setRequestHeader</span> <span class="st0">&quot;Accept&quot;</span>, <span class="st0">&quot;application/xml&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; objSvrHTTP.<span class="me1">setRequestHeader</span> <span class="st0">&quot;Content-Type&quot;</span>, <span class="st0">&quot;application/xml&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; strT = <span class="st0">&quot;&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; strT = strT &amp; <span class="st0">&quot;&lt;methodcall&gt;&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; strT = strT &amp; <span class="st0">&quot;&lt;methodname&gt;agenda.addAgendaItem&lt;/methodname&gt;&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; strT = strT &amp; <span class="st0">&quot;&lt;params&gt;&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; strT = strT &amp; <span class="st0">&quot;&lt;param&gt;&lt;value&gt;&lt;string&gt;&quot;</span> &amp; txtBlogId &amp; <span class="st0">&quot;&lt;/string&gt;&lt;/value&gt;&lt;/param&gt;&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; strT = strT &amp; <span class="st0">&quot;&lt;param&gt;&lt;value&gt;&lt;string&gt;&quot;</span> &amp; txtUserName &amp; <span class="st0">&quot;&lt;/string&gt;&lt;/value&gt;&lt;/param&gt;&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; strT = strT &amp; <span class="st0">&quot;&lt;param&gt;&lt;value&gt;&lt;string&gt;&quot;</span> &amp; txtPassword &amp; <span class="st0">&quot;&lt;/string&gt;&lt;/value&gt;&lt;/param&gt;&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">&#39;now we go make the struct, I use a Type (stdobject), normally</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co1">&#39;you&#39;d use a recordset</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">Dim</span> a <span class="kw1">As</span> AgendaItem</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">With</span> a</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; .<span class="me1">userid</span> = <span class="nu0">1</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; .<span class="me1">Description</span> = <span class="st0">&quot;rpc testing&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; .<span class="me1">firstdate</span> = <span class="st0">&quot;2009/10/14&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; .<span class="me1">enddate</span> = <span class="st0">&quot;2009/10/14&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; .<span class="me1">link</span> = <span class="st0">&quot;http://www.juust.org/&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; .<span class="me1">price</span> = <span class="st0">&quot;rpc testing&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; .<span class="me1">location</span> = <span class="st0">&quot;limmen&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; .<span class="me1">tags</span> = <span class="st0">&quot;php, xml-rpc&quot;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">End</span> <span class="kw1">With</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; strT = strT &amp; <span class="st0">&quot;&lt;param&gt;&lt;value&gt;&lt;array&gt;&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; strT = strT &amp; <span class="st0">&quot;&lt;data&gt;&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; strT = strT &amp; <span class="st0">&quot;&lt;value&gt;&lt;struct&gt;&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; strT = strT &amp; <span class="st0">&quot;&lt;member&gt;&lt;name&gt;userid&lt;/name&gt;&lt;value&gt;&lt;string&gt;&quot;</span> &amp; a.<span class="me1">userid</span> &amp; <span class="st0">&quot;&lt;/string&gt;&lt;/value&gt;&lt;/member&gt;&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; strT = strT &amp; <span class="st0">&quot;&lt;member&gt;&lt;name&gt;tags&lt;/name&gt;&lt;value&gt;&lt;string&gt;&quot;</span> &amp; a.<span class="me1">tags</span> &amp; <span class="st0">&quot;&lt;/string&gt;&lt;/value&gt;&lt;/member&gt;&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; strT = strT &amp; <span class="st0">&quot;&lt;member&gt;&lt;name&gt;description&lt;/name&gt;&lt;value&gt;&lt;string&gt;&quot;</span> &amp; a.<span class="me1">Description</span> &amp; <span class="st0">&quot;&lt;/string&gt;&lt;/value&gt;&lt;/member&gt;&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; strT = strT &amp; <span class="st0">&quot;&lt;member&gt;&lt;name&gt;firstdate&lt;/name&gt;&lt;value&gt;&lt;string&gt;&quot;</span> &amp; a.<span class="me1">firstdate</span> &amp; <span class="st0">&quot;&lt;/string&gt;&lt;/value&gt;&lt;/member&gt;&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; strT = strT &amp; <span class="st0">&quot;&lt;member&gt;&lt;name&gt;enddate&lt;/name&gt;&lt;value&gt;&lt;string&gt;&quot;</span> &amp; a.<span class="me1">enddate</span> &amp; <span class="st0">&quot;&lt;/string&gt;&lt;/value&gt;&lt;/member&gt;&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; strT = strT &amp; <span class="st0">&quot;&lt;member&gt;&lt;name&gt;link&lt;/name&gt;&lt;value&gt;&lt;string&gt;&quot;</span> &amp; a.<span class="me1">link</span> &amp; <span class="st0">&quot;&lt;/string&gt;&lt;/value&gt;&lt;/member&gt;&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; strT = strT &amp; <span class="st0">&quot;&lt;member&gt;&lt;name&gt;price&lt;/name&gt;&lt;value&gt;&lt;string&gt;&quot;</span> &amp; a.<span class="me1">price</span> &amp; <span class="st0">&quot;&lt;/string&gt;&lt;/value&gt;&lt;/member&gt;&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; strT = strT &amp; <span class="st0">&quot;&lt;member&gt;&lt;name&gt;location&lt;/name&gt;&lt;value&gt;&lt;string&gt;&quot;</span> &amp; a.<span class="me1">location</span> &amp; <span class="st0">&quot;&lt;/string&gt;&lt;/value&gt;&lt;/member&gt;&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">&#39;close the struct &nbsp; &nbsp;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; strT = strT &amp; <span class="st0">&quot;&lt;/struct&gt;&lt;/value&gt;&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; strT = strT &amp; <span class="st0">&quot;&lt;/data&gt;&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">&#39;close the struct array</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; strT = strT &amp; <span class="st0">&quot;&lt;/array&gt;&lt;/value&gt;&lt;/param&gt;&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">&#39;end parameters</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; strT = strT &amp; <span class="st0">&quot;&lt;/params&gt;&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">&#39;end method</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; strT = strT &amp; <span class="st0">&quot;&lt;/methodcall&gt;&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">&#39;send the lot to the blog &nbsp;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; objSvrHTTP.<span class="me1">send</span> strT</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">&#39;print the response to debug </span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; Debug.<span class="kw1">Print</span> &nbsp;objSvrHTTP.<span class="me1">responseText</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">End</span> <span class="kw1">function</span></div>
</li>
</ol>
</div>
<p>Et voila : </p>
<p><img src="http://www.juust.org/wp-content/uploads/2009/10/agenda-rpc.png" alt="agenda rpc" title="agenda rpc" width="550" height="150" class="alignleft size-full wp-image-980" /></p>
<p>That&#8217;s yer basic Office-Wordpress XML-RPC integration.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.juust.org/index.php/integrating-ms-office-and-wordpress-with-vba-and-xml-rpc/2009/10/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>more vba and wordpress xml rpc</title>
		<link>http://www.juust.org/index.php/more-vba-and-wordpress-xml-rpc/2009/10/</link>
		<comments>http://www.juust.org/index.php/more-vba-and-wordpress-xml-rpc/2009/10/#comments</comments>
		<pubDate>Mon, 19 Oct 2009 16:23:58 +0000</pubDate>
		<dc:creator>juust</dc:creator>
				<category><![CDATA[wordpress]]></category>
		<category><![CDATA[xml-rpc]]></category>

		<guid isPermaLink="false">http://www.juust.org/?p=976</guid>
		<description><![CDATA[Basic Example II, vba wordpress remote control, demo.ayHello is fun but quite useless, so let&#8217;s proceed to wp.getUsersBlogs. I make a table in access (id, isAdmin, blogid, url, blogName, xmlrpc) and then query wordpress, parse the xml response in store &#8230; <a href="http://www.juust.org/index.php/more-vba-and-wordpress-xml-rpc/2009/10/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Basic Example II, vba wordpress remote control, demo.ayHello is fun but quite useless, so let&#8217;s proceed to wp.getUsersBlogs. </p>
<p>I make a table in access (id, isAdmin, blogid, url, blogName, xmlrpc) and then query wordpress, parse the xml response in store it in the database.</p>
<p>So here we go query WordPress :</p>
<div class="geshi no vb">
<ol>
<li class="li1">
<div class="de1">&nbsp; &nbsp; methodname = <span class="st0">&quot;wp.getUsersBlogs&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">&#39;xmlrpc url</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; txtURL = <span class="st0">&quot;http://www.blog.com/xmlrpc.php&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">&#39;authorization</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; txtUserName = <span class="st0">&quot;user&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; txtPassword = <span class="st0">&quot;pass&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">&#39;XML http request &nbsp;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">Dim</span> objSvrHTTP <span class="kw1">As</span> ServerXMLHTTP</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">Dim</span> strT <span class="kw1">As</span> <span class="kw1">String</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">Set</span> objSvrHTTP = <span class="kw1">New</span> ServerXMLHTTP</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; objSvrHTTP.<span class="kw1">Open</span> <span class="st0">&quot;POST&quot;</span>, txtURL, <span class="kw1">False</span>, <span class="kw1">CStr</span><span class="br0">&#40;</span>txtUserName<span class="br0">&#41;</span>, _</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp;<span class="kw1">CStr</span><span class="br0">&#40;</span>txtPassword<span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; objSvrHTTP.<span class="me1">setRequestHeader</span> <span class="st0">&quot;Accept&quot;</span>, <span class="st0">&quot;application/xml&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; objSvrHTTP.<span class="me1">setRequestHeader</span> <span class="st0">&quot;Content-Type&quot;</span>, <span class="st0">&quot;application/xml&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">&#39;here is the bit with the wp.getUserBlogs methodname, </span></div>
</li>
<li class="li1">
<div class="de1"><span class="co1">&#39;and the username and password &nbsp; &nbsp;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; strT = <span class="st0">&quot;&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; strT = strT &amp; <span class="st0">&quot;&lt;methodcall&gt;&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; strT = strT &amp; <span class="st0">&quot;&lt;methodname&gt;&quot;</span> &amp; methodname &amp; <span class="st0">&quot;&lt;/methodname&gt;&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; strT = strT &amp; <span class="st0">&quot;&lt;params&gt;&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; strT = strT &amp; <span class="st0">&quot;&lt;param&gt;&lt;value&gt;&lt;string&gt;&quot;</span> &amp; txtUserName &amp; <span class="st0">&quot;&lt;/string&gt;&lt;/value&gt;&lt;/param&gt;&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; strT = strT &amp; <span class="st0">&quot;&lt;param&gt;&lt;value&gt;&lt;string&gt;&quot;</span> &amp; txtPassword &amp; <span class="st0">&quot;&lt;/string&gt;&lt;/value&gt;&lt;/param&gt;&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; strT = strT &amp; <span class="st0">&quot;&lt;/params&gt;&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; strT = strT &amp; <span class="st0">&quot;&lt;/methodcall&gt;&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; objSvrHTTP.<span class="me1">send</span> strT</div>
</li>
</ol>
</div>
<p>that&#8217;s pretty straight forward.</p>
<p>I get an xml message back with the data stored in an array of STRUCT types.</p>
<div class="geshi no vb">
<ol>
<li class="li1">
<div class="de1"><span class="co1">&#39;Create the DomDocument Object</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">Dim</span> oDoc <span class="kw1">As</span> MSXML2.<span class="me1">DOMDocument</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">Set</span> oDoc = <span class="kw1">CreateObject</span><span class="br0">&#40;</span><span class="st0">&quot;MSXML2.DOMDocument&quot;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">oDoc.<span class="me1">async</span> = <span class="kw1">False</span></div>
</li>
<li class="li1">
<div class="de1">oDoc.<span class="me1">validateOnParse</span> = <span class="kw1">False</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">&#39;Load the response in the DomDocument Object</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">Dim</span> fSuccess <span class="kw1">As</span> <span class="kw1">Boolean</span></div>
</li>
<li class="li1">
<div class="de1">fSuccess = oDoc.<span class="me1">loadXML</span><span class="br0">&#40;</span>objSvrHTTP.<span class="me1">responseText</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">If</span> <span class="kw1">Not</span> fSuccess <span class="kw1">Then</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">MsgBox</span> <span class="st0">&quot;failed&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">Exit</span> <span class="kw1">Function</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">End</span> <span class="kw1">If</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; </div>
</li>
<li class="li1">
<div class="de1"><span class="co1">&#39;counters</span></div>
</li>
<li class="li1">
<div class="de1">ct = <span class="nu0">1</span></div>
</li>
<li class="li1">
<div class="de1">cs = <span class="nu0">1</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">&#39;array to story the field values</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">Dim</span> SArray<span class="br0">&#40;</span><span class="nu0">1</span> <span class="kw1">To</span> <span class="nu0">5</span><span class="br0">&#41;</span> <span class="kw1">As</span> <span class="kw1">String</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">&#39;open the table as recordset </span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">Dim</span> d <span class="kw1">As</span> DAO.<span class="kw1">Recordset</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">Set</span> d = CurrentDb.<span class="me1">OpenRecordset</span><span class="br0">&#40;</span><span class="st0">&quot;blogs&quot;</span>, dbOpenTable<span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">&#39;lets get the structs</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">Set</span> oChildren = oDoc.<span class="me1">selectNodes</span><span class="br0">&#40;</span><span class="st0">&quot;//struct&quot;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">For</span> Each oStruct In oChildren</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">&#39;the struct has members, </span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="kw1">Set</span> Members = oStruct.<span class="me1">childNodes</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="kw1">For</span> Each Member In Members</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">&#39;each member has a param pair (field, value)</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co1">&#39;skip the first param, and store the field value</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co1">&#39;in an array</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp;<span class="kw1">Set</span> Params = Member.<span class="me1">childNodes</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp;<span class="kw1">For</span> Each Param In Params</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ct = ct + <span class="nu0">1</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">If</span> ct / <span class="nu0">2</span> &lt;&gt; <span class="kw1">Int</span><span class="br0">&#40;</span>ct / <span class="nu0">2</span><span class="br0">&#41;</span> <span class="kw1">Then</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; SArray<span class="br0">&#40;</span>ct / <span class="nu0">2</span><span class="br0">&#41;</span> = Param.<span class="me1">Text</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; cs = cs + <span class="nu0">1</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">End</span> <span class="kw1">If</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp;<span class="kw1">Next</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">Next</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="co1">&#39;we got the struct data, </span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="co1">&#39;now add the array to the database</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp;<span class="kw1">With</span> d</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; .<span class="me1">AddNew</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; !isAdmin = SArray<span class="br0">&#40;</span><span class="nu0">1</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; !url = SArray<span class="br0">&#40;</span><span class="nu0">2</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; !blogid = SArray<span class="br0">&#40;</span><span class="nu0">3</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; !blogName = SArray<span class="br0">&#40;</span><span class="nu0">4</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; !xmlrpc = SArray<span class="br0">&#40;</span><span class="nu0">5</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; .<span class="me1">Update</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">End</span> <span class="kw1">With</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">Next</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">&#39;close up shop</span></div>
</li>
<li class="li1">
<div class="de1">d.<span class="kw1">Close</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">Set</span> d = <span class="kw1">Nothing</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">End</span> <span class="kw1">Function</span></div>
</li>
</ol>
</div>
<p>The other worpdress api calls work quite the same. </p>
]]></content:encoded>
			<wfw:commentRss>http://www.juust.org/index.php/more-vba-and-wordpress-xml-rpc/2009/10/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>wordpress xmlrpc and microsoft access vba</title>
		<link>http://www.juust.org/index.php/wordpress-xmlrpc-and-microsoft-access-vba/2009/10/</link>
		<comments>http://www.juust.org/index.php/wordpress-xmlrpc-and-microsoft-access-vba/2009/10/#comments</comments>
		<pubDate>Mon, 19 Oct 2009 13:05:25 +0000</pubDate>
		<dc:creator>juust</dc:creator>
				<category><![CDATA[juust]]></category>
		<category><![CDATA[xml-rpc]]></category>
		<category><![CDATA[xhr]]></category>

		<guid isPermaLink="false">http://www.juust.org/?p=972</guid>
		<description><![CDATA[I was building a database in WordPress but their table interface lacks completely and I dont want to spend 200 hours developing a backend for a once-off project. I always used MsAccess for RAD blueprinting and I reckon you can &#8230; <a href="http://www.juust.org/index.php/wordpress-xmlrpc-and-microsoft-access-vba/2009/10/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I was building a database in WordPress but their table interface lacks completely and I dont want to spend 200 hours developing a backend for a once-off project. </p>
<p>I always used MsAccess for RAD blueprinting and I reckon you can build a better more flexible interface in 20 hours. With XHR MsAccess has some better internet capabilities these days, a nice simple XMLHttp library. </p>
<p>You can use it for any http rest api in the cloud. </p>
<p>Ajax for Access :) here&#8217;s the most basic wordpress xml-rpc call, sayHello.</p>
<div class="geshi no vb">
<ol>
<li class="li1">
<div class="de1"><span class="kw1">Sub</span> PutXML<span class="br0">&#40;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">txtURL = <span class="st0">&quot;http://www.blog.com/xmlrpc.php&quot;</span></div>
</li>
<li class="li1">
<div class="de1">txtUserName = <span class="st0">&quot;user&quot;</span></div>
</li>
<li class="li1">
<div class="de1">txtPassword = <span class="st0">&quot;pwd&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; </div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw1">Dim</span> objSvrHTTP <span class="kw1">As</span> ServerXMLHTTP</div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw1">Dim</span> strT <span class="kw1">As</span> <span class="kw1">String</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw1">Set</span> objSvrHTTP = <span class="kw1">New</span> ServerXMLHTTP</div>
</li>
<li class="li1">
<div class="de1">&nbsp; </div>
</li>
<li class="li1">
<div class="de1">&nbsp; objSvrHTTP.<span class="kw1">Open</span> <span class="st0">&quot;POST&quot;</span>, txtURL, <span class="kw1">False</span>, <span class="kw1">CStr</span><span class="br0">&#40;</span>txtUserName<span class="br0">&#41;</span>, _</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="kw1">CStr</span><span class="br0">&#40;</span>txtPassword<span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; </div>
</li>
<li class="li1">
<div class="de1">&nbsp; objSvrHTTP.<span class="me1">setRequestHeader</span> <span class="st0">&quot;Accept&quot;</span>, <span class="st0">&quot;application/xml&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; objSvrHTTP.<span class="me1">setRequestHeader</span> <span class="st0">&quot;Content-Type&quot;</span>, <span class="st0">&quot;application/xml&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; </div>
</li>
<li class="li1">
<div class="de1">&nbsp; strT = <span class="st0">&quot;&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; strT = strT &amp; <span class="st0">&quot;&lt;methodcall&gt;&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; strT = strT &amp; <span class="st0">&quot;&lt;methodname&gt;demo.sayHello&lt;/methodname&gt;&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; strT = strT &amp; <span class="st0">&quot;&lt;/methodcall&gt;&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; </div>
</li>
<li class="li1">
<div class="de1">&nbsp; objSvrHTTP.<span class="me1">send</span> strT</div>
</li>
<li class="li1">
<div class="de1">&nbsp; </div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw1">MsgBox</span> objSvrHTTP.<span class="me1">responseText</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">End</span> <span class="kw1">Sub</span></div>
</li>
</ol>
</div>
<p>For pre-Vista you need the MSXML 6.0 library from microsoft, in Vista I already had it installed so you can add a reference to the library and off you go.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.juust.org/index.php/wordpress-xmlrpc-and-microsoft-access-vba/2009/10/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
	</channel>
</rss>

