<?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; tool</title>
	<atom:link href="http://www.juust.org/index.php/tag/tool/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>google suggest scraper (php &amp; simplexml)</title>
		<link>http://www.juust.org/index.php/google-suggest-scraper-php-simplexml/2011/12/</link>
		<comments>http://www.juust.org/index.php/google-suggest-scraper-php-simplexml/2011/12/#comments</comments>
		<pubDate>Mon, 19 Dec 2011 00:08:12 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[google]]></category>
		<category><![CDATA[seo tips and tricks]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[scrape]]></category>
		<category><![CDATA[simplexml]]></category>
		<category><![CDATA[tool]]></category>

		<guid isPermaLink="false">http://www.juust.org/?p=1834</guid>
		<description><![CDATA[Today&#8217;s goal is a basic php Google Suggest scraper because I wanted traffic data and keywords for free. Before we start : google scraping is bad ! Good People use the Google Adwords API : 25 cents for 1000 units, &#8230; <a href="http://www.juust.org/index.php/google-suggest-scraper-php-simplexml/2011/12/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Today&#8217;s goal is a basic php Google Suggest scraper because I wanted traffic data and keywords for free.</p>
<p>Before we start :</p>
<h2 style="text-align: center;">google scraping is <strong>bad</strong> !</h2>
<p>Good People use the <a title="google adwords api" href="http://code.google.com/apis/adwords/">Google Adwords API</a> : 25 cents for 1000 units, 15++ units for keyword suggestion so they pay 4 or 5 dollar for 1000 keyword suggestions (if they can find a good programmer which also costs a few dollars). Or they opt for <a title="search engine marketing data" href="http://www.semrush.com" rel="nofollow">SemRush</a> (also my preference), <a href="http://www.keywordspy.com" rel="nofollow">KeywordSpy</a>, <a href="http://www.spyfu.com" rel="nofollow">Spyfu</a>, and other services like 7Search PPC programs to get keyword and traffic data and data on their competitors but these also charge about 80 dollars per month for a limited account up to a few hundred per month for seo companies. Good people pay plenty.</p>
<p>We tiny grey webmice of marketing however just want a few estimates, at low or better no cost : like this :</p>
<table width="276" border="0" cellspacing="0" cellpadding="0">
<colgroup>
<col width="206" />
<col width="70" /> </colgroup>
<tbody>
<tr>
<td width="206" height="20">data</td>
<td align="right" width="70">num queries</td>
</tr>
<tr>
<td width="206" height="20">google suggest</td>
<td align="right" width="70">57800000</td>
</tr>
<tr>
<td height="20">google suggestion box</td>
<td align="right">5390000</td>
</tr>
<tr>
<td height="20">google suggest api</td>
<td align="right">5030000</td>
</tr>
<tr>
<td height="20">google suggestion tool</td>
<td align="right">3670000</td>
</tr>
<tr>
<td height="20">google suggest a site</td>
<td align="right">72700000</td>
</tr>
<tr>
<td height="20">google suggested users</td>
<td align="right">57000000</td>
</tr>
<tr>
<td height="20">google suggestions funny</td>
<td align="right">37400000</td>
</tr>
<tr>
<td height="20"><strong>google suggest scraper</strong></td>
<td align="right">62800</td>
</tr>
<tr>
<td height="20">google suggestions not working</td>
<td align="right">87100000</td>
</tr>
<tr>
<td height="20">google suggested user list</td>
<td align="right">254000000</td>
</tr>
</tbody>
</table>
<p>Suggestion autocomplete is AJAX, it outputs XML :</p>
<pre>&lt; ?xml version="1.0"? &gt;
   &lt;toplevel&gt;
     &lt;CompleteSuggestion&gt;
       &lt;suggestion data="senior quotes"/&gt;
       &lt;num_queries int="30000000"/&gt;
     &lt;/CompleteSuggestion&gt;
     &lt;CompleteSuggestion&gt;
       &lt;suggestion data="senior skip day lyrics"/&gt;
       &lt;num_queries int="441000"/&gt;
     &lt;/CompleteSuggestion&gt;
   &lt;/toplevel&gt;</pre>
<p>Using SimpleXML, the PHP routine is as simple as querying <strong><em>g00gle.c0m/complete/search?</em></strong>, grabbing the autocomplete xml, and extracting the attribute data :</p>
<div class="geshi no php">
<ol>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span><span class="re1">$_SERVER</span><span class="br0">&#91;</span><span class="st0">&#39;QUERY_STRING&#39;</span><span class="br0">&#93;</span><span class="sy0">==</span><span class="st0">&#39;&#39;</span><span class="br0">&#41;</span> <span class="kw3">die</span><span class="br0">&#40;</span><span class="st0">&#39;enter a query like http://host/filename.php?query&#39;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="re1">$contentstring</span> <span class="sy0">=</span> <span class="sy0">@</span><span class="kw3">file_get_contents</span><span class="br0">&#40;</span><span class="st0">&quot;http://g00gle.c0m/complete/search?output=toolbar&amp;amp;q=&quot;</span><span class="sy0">.</span><span class="kw3">urlencode</span><span class="br0">&#40;</span><span class="re1">$kw</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span> &nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="re1">$content</span> <span class="sy0">=</span> simplexml_load_string<span class="br0">&#40;</span><span class="re1">$contentstring</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">foreach</span><span class="br0">&#40;</span><span class="re1">$content</span><span class="sy0">-&amp;</span>gt<span class="sy0">;</span>CompleteSuggestion <span class="kw1">as</span> <span class="re1">$c</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">$term</span> <span class="sy0">=</span> <span class="br0">&#40;</span>string<span class="br0">&#41;</span> <span class="re1">$c</span><span class="sy0">-&amp;</span>gt<span class="sy0">;</span>suggestion<span class="sy0">-&amp;</span>gt<span class="sy0">;</span>attributes<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">-&amp;</span>gt<span class="sy0">;</span>data<span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">//note : traffic data is sometimes missing &nbsp; </span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re1">$traffic</span> <span class="sy0">=</span> <span class="br0">&#40;</span>string<span class="br0">&#41;</span> <span class="re1">$c</span><span class="sy0">-&amp;</span>gt<span class="sy0">;</span>num_queries<span class="sy0">-&amp;</span>gt<span class="sy0">;</span>attributes<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">-&amp;</span>gt<span class="sy0">;</span>int<span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">echo</span> <span class="re1">$term</span><span class="sy0">.</span> <span class="st0">&quot; &quot;</span><span class="sy0">.</span><span class="re1">$traffic</span> <span class="sy0">.</span> <span class="st0">&quot;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="st0">&quot;</span> <span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="br0">&#125;</span></div>
</li>
</ol>
</div>
<p>I made a quick php script that outputs the terms as a list of new queries so you can walk through the suggestions :</p>
<p><a href="http://www.juust.org/wp-content/uploads/2011/12/google-suggest-scraper-tool.jpg" rel="shadowbox[post-1834];player=img;"><img class="alignnone size-medium wp-image-1835" title="google suggest scraper tool" src="http://www.juust.org/wp-content/uploads/2011/12/google-suggest-scraper-tool-300x289.jpg" alt="" width="529" height="400" /></a></p>
<p><a href="http://www.juust.org/wp-content/uploads/2011/12/google-suggest-scraper-tool-II1.jpg" rel="shadowbox[post-1834];player=img;"><img class="alignnone size-medium wp-image-1837" title="google suggest scraper tool II" src="http://www.juust.org/wp-content/uploads/2011/12/google-suggest-scraper-tool-II1-300x286.jpg" alt="" width="462" height="440" /></a></p>
<p>The source is as text file up for <a title="google suggest scraper tool code" href="http://www.juust.org/suggestit.txt">download overhere</a> (rename it to suggestit.php and it should run on any server with php5.* and simplexml).</p>
]]></content:encoded>
			<wfw:commentRss>http://www.juust.org/index.php/google-suggest-scraper-php-simplexml/2011/12/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>RedHat Seo : scraper auto-blogging</title>
		<link>http://www.juust.org/index.php/redhat-seo-christmas-edition/2008/12/</link>
		<comments>http://www.juust.org/index.php/redhat-seo-christmas-edition/2008/12/#comments</comments>
		<pubDate>Fri, 26 Dec 2008 18:07:01 +0000</pubDate>
		<dc:creator>juust</dc:creator>
				<category><![CDATA[google]]></category>
		<category><![CDATA[seo]]></category>
		<category><![CDATA[seo tips and tricks]]></category>
		<category><![CDATA[tool]]></category>
		<category><![CDATA[wordpress]]></category>
		<category><![CDATA[xml-rpc]]></category>
		<category><![CDATA[scrape]]></category>

		<guid isPermaLink="false">http://www.juust.org/?p=270</guid>
		<description><![CDATA[Just give us your endpoint and we&#8217;ll take it from there, sparky! I was going to make one of these tools to scrape google and conjur a full blog out of nowhere, as Christmas special, RedHat Seo. The rough sketch &#8230; <a href="http://www.juust.org/index.php/redhat-seo-christmas-edition/2008/12/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<blockquote><p>Just give us your endpoint and we&#8217;ll take it from there, sparky!</p></blockquote>
<p>I was going to make one of these tools to scrape google and conjur a full blog out of nowhere, as Christmas special, RedHat Seo. The rough sketch has arrived , far from perfect, but it does produce a blog and don&#8217;t even look too shabby. I scraped a <a href="" rel="nofollow" target="_blank">small batch</a> of posts off of blogs, keeping the links intact and adding a tribute links. I hope they will pardon me for it. </p>
<h3>structure</h3>
<p>I use three main classes, </p>
<table>
<tbody>
<tr>
<td>BlogMaker    </td>
<td>     the application</td>
</tr>
<tr>
<td>Target         </td>
<td>     the blogs you aim for</td>
</tr>
<tr>
<td>WPContent   </td>
<td>     the scraped goodies</td>
</tr>
</tbody>
</table>
<p>&#8230;and two support classes</p>
<table>
<tbody>
<tr>
<td>SerpResult    </td>
<td>    scraped urls</td>
</tr>
<tr>
<td>Custom_RPC   </td>
<td>    a simple rpc-poster</td>
</tr>
</tbody>
</table>
<p>Target blogs have three texts, </p>
<table>
<tbody>
<tr>
<td>file</td>
<td>contents</td>
<td>maintenance</td>
</tr>
<tr>
<td>blog categories</td>
<td>category you post under</td>
<td>manual</td>
</tr>
<tr>
<td>blog tags</td>
<td> tags you list on the blog</td>
<td>manual</td>
</tr>
<tr>
<td>blog urls</td>
<td> urls already used for the blog</td>
<td>system</td>
</tr>
</tbody>
</table>
<h3>routine</h3>
<p>The BlogMaker class grabs a result list (up to 1000 urls per phrase) from Google, extracts the urls and stores them in SerpResult,  scrapes the urls and extracts the <strong>entry</strong> divs, stores div-entries in the WPContent class (that has some basic functions to sanitize the text), and uses the BlogTarget-definitions to post it up blogs with xml-rpc.</p>
<h3>usage</h3>
<div class="geshi no php">
<ol>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">//make main instance</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re1">$Blog</span> <span class="sy0">=</span> <span class="kw2">new</span> BlogMaker<span class="br0">&#40;</span><span class="st0">&quot;keyword&quot;</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">//define a target blog, you can define multiple blogs and refer with code</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co1">//then add rpc-url, password and user</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co1">//and for every target blog three text-files </span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="re1">$T</span><span class="sy0">=</span><span class="re1">$Blog</span><span class="sy0">-&gt;</span><span class="me1">AddTarget</span><span class="br0">&#40;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="st0">&#39;blogcode&#39;</span><span class="sy0">,</span> </div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="st0">&#39;http://my.blog.com/xmlrpc.php&#39;</span><span class="sy0">,</span> </div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="st0">&#39;password&#39;</span><span class="sy0">,</span> </div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="st0">&#39;user&#39;</span><span class="sy0">,</span> </div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="st0">&#39;keyword.categories.txt&#39;</span><span class="sy0">,</span> </div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="st0">&#39;keyword.tags.txt&#39;</span><span class="sy0">,</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="st0">&#39;keyword.urls.txt&#39;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<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">//read the tags, cats and url text files stored on the server </span></div>
</li>
<li class="li1">
<div class="de1"><span class="co1">//all retrieved urls are tested, if the target blog already has that</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co1">//scraped url, it is discarded.</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re1">$T</span><span class="sy0">-&gt;</span><span class="me1">CSV_GetTags</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="re1">$T</span><span class="sy0">-&gt;</span><span class="me1">List_GetCats</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="re1">$T</span><span class="sy0">-&gt;</span><span class="me1">ReadURL</span><span class="br0">&#40;</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">//grab the google result list</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co1">//use params (pages, keywords) to specify search</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re1">$Blog</span><span class="sy0">-&gt;</span><span class="me1">GoogleResults</span><span class="br0">&#40;</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="re1">$a</span><span class="sy0">=</span><span class="nu0">0</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">foreach</span><span class="br0">&#40;</span><span class="re1">$Blog</span><span class="sy0">-&gt;</span><span class="me1">Results</span> <span class="kw1">as</span> <span class="re1">$BlogUrl</span><span class="br0">&#41;</span> <span class="br0">&#123;</span> </div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="re1">$a</span><span class="sy0">++;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw3">echo</span> <span class="re1">$BlogUrl</span><span class="sy0">-&gt;</span><span class="me1">url</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co1">//see if the url isnt used yet</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">if</span><span class="br0">&#40;</span><span class="re1">$T</span><span class="sy0">-&gt;</span><span class="me1">checkURL</span><span class="br0">&#40;</span><span class="kw3">trim</span><span class="br0">&#40;</span><span class="re1">$BlogUrl</span><span class="sy0">-&gt;</span><span class="me1">url</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">!=</span><span class="kw2">true</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="kw3">echo</span> <span class="st0">&#39;&#8230;checking &#39;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="kw3">flush</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="co1">//if not used, get the source</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="re1">$BlogUrl</span><span class="sy0">-&gt;</span><span class="me1">scrape</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="co1">//check for divs marked &quot;entry&quot;, if they arent there, check &quot;post&quot;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co1">//some blogs use other indications for the content</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co1">//but entry and post cover 40%</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="re1">$entries</span> <span class="sy0">=</span> <span class="re1">$BlogUrl</span><span class="sy0">-&gt;</span><span class="me1">get_entries</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;<span class="kw1">if</span><span class="br0">&#40;</span><span class="kw3">count</span><span class="br0">&#40;</span><span class="re1">$entries</span><span class="br0">&#41;</span><span class="sy0">&amp;</span>lt<span class="sy0">;</span><span class="nu0">1</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw3">echo</span> <span class="st0">&#39;no entries&#8230;&#39;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw3">flush</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; <span class="re1">$entries</span> <span class="sy0">=</span> <span class="re1">$BlogUrl</span><span class="sy0">-&gt;</span><span class="me1">get_posts</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="kw1">if</span><span class="br0">&#40;</span><span class="kw3">count</span><span class="br0">&#40;</span><span class="re1">$entries</span><span class="br0">&#41;</span><span class="sy0">&amp;</span>lt<span class="sy0">;</span><span class="nu0">1</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; <span class="kw3">echo</span> <span class="st0">&#39;no posts either&#8230;&#39;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co1">//if no entry-post div, mark url as done</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; <span class="re1">$T</span><span class="sy0">-&gt;</span><span class="me1">RegisterURL</span><span class="br0">&#40;</span><span class="re1">$BlogUrl</span><span class="sy0">-&gt;</span><span class="me1">url</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">&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;<span class="re1">$ct</span><span class="sy0">=</span><span class="nu0">0</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="kw1">foreach</span><span class="br0">&#40;</span><span class="re1">$BlogUrl</span><span class="sy0">-&gt;</span><span class="me1">WpContentPieces</span> <span class="kw1">as</span> <span class="re1">$WpContent</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co1">//in the get_entries/get_post function the fragments are stored</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co1">//as wpcontent</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="re1">$ct</span><span class="sy0">++;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">if</span><span class="br0">&#40;</span><span class="re1">$WpContent</span><span class="sy0">-&gt;</span><span class="me1">judge</span><span class="br0">&#40;</span><span class="nu0">2000</span><span class="sy0">,</span> <span class="nu0">200</span><span class="sy0">,</span> <span class="nu0">5</span><span class="br0">&#41;</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">$WpContent</span><span class="sy0">-&gt;</span><span class="me1">tribute</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span> &nbsp;<span class="co1">//add tribute link</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp;<span class="re1">$T</span><span class="sy0">-&gt;</span><span class="me1">settags</span><span class="br0">&#40;</span><span class="re1">$WpContent</span><span class="sy0">-&gt;</span><span class="me1">divcontent</span><span class="br0">&#41;</span><span class="sy0">;</span> <span class="co1">//add tags</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp;<span class="re1">$T</span><span class="sy0">-&gt;</span><span class="me1">postCustomRPC</span><span class="br0">&#40;</span><span class="re1">$WpContent</span><span class="sy0">-&gt;</span><span class="me1">title</span><span class="sy0">,</span> <span class="re1">$WpContent</span><span class="sy0">-&gt;</span><span class="me1">divcontent</span><span class="sy0">,</span> <span class="nu0">1</span><span class="br0">&#41;</span><span class="sy0">;</span> <span class="co1">//1=publish, 0=draft</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp;<span class="re1">$T</span><span class="sy0">-&gt;</span><span class="me1">RegisterURL</span><span class="br0">&#40;</span><span class="re1">$WpContent</span><span class="sy0">-&gt;</span><span class="me1">url</span><span class="br0">&#41;</span><span class="sy0">;</span> &nbsp;<span class="co1">//register use of url</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw3">usleep</span><span class="br0">&#40;</span><span class="nu0">20000000</span><span class="br0">&#41;</span><span class="sy0">;</span> &nbsp;<span class="co1">//20 seconds break, for sitemapping</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="br0">&#125;</span></div>
</li>
</ol>
</div>
<h3>notes</h3>
<ul>
<li>xml-rpc needs to be activated explicitly on the wordpress dashboard under settings/writing.</li>
<li>categories must be present in the blog</li>
<li>url file must be writeable by the server (777)</li>
</ul>
<p>It seems wordpress builds the sitemap as background process, the standard google xml sitemap plugin wil attempt to build in the cache (takes anywhere between 2 and 10 seconds), and apart from building a sitemap the posts also get pinged around. Giving the install 10 to 20 seconds between posts allows for all the hooked in functions to be completed.</p>
<h3>period</h3>
<p>That&#8217;s about all,<br />
consider it gpl, I added some comments in the source but I will not develop this any further. A mysql backed blogfarm tool (euphemistically called &#8216;publishing tool&#8217;) is more interesting, besides, I am off to the wharves to do some painting.</p>
<p>if you use it, send some feedback,<br />
merry christmas dogheads</p>
]]></content:encoded>
			<wfw:commentRss>http://www.juust.org/index.php/redhat-seo-christmas-edition/2008/12/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>some thoughts on search engine marketing</title>
		<link>http://www.juust.org/index.php/search-engine-marketing/2008/11/</link>
		<comments>http://www.juust.org/index.php/search-engine-marketing/2008/11/#comments</comments>
		<pubDate>Mon, 17 Nov 2008 10:41:31 +0000</pubDate>
		<dc:creator>juust</dc:creator>
				<category><![CDATA[google]]></category>
		<category><![CDATA[sem]]></category>
		<category><![CDATA[tool]]></category>

		<guid isPermaLink="false">http://www.juust.org/?p=219</guid>
		<description><![CDATA[I want a quick way to check the competitors in a niche, and estimate what can I spend on a search engine marketing campaign to make money in the segment, using the search engines (read: Google). For a quick test &#8230; <a href="http://www.juust.org/index.php/search-engine-marketing/2008/11/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I want a quick way to check the competitors in a niche, and estimate what can I spend on a search engine marketing campaign to make money in the segment, using the search engines (read: Google). </p>
<p>For a quick test I  dive into the <strong>money</strong> segment, got the top 70 search phrases of October off of <a href="http://conversion.7search.com/scripts/advertisertools/keywordsuggestion.aspx" rel="nofollow">7Search</a> and for each get the top 100 results, resulting in a mysql database with 7.000 url&#8217;s on 3500 domains. </p>
<p>Then I try three cross-sections to extract the top 25 domains in the segment :</p>
<ul>
<li>(100 &#8211; position) / 100 per result</li>
<li>(100 &#8211; position) / 100 per result, +1 for first 10, +1 for first 6, +1 for first three</li>
<li>AOL experience based percentage of search volume</li>
</ul>
<h4>rating by rank</h4>
<p>If I rate the sites&#8217; urls based on (100 &#8211; position) / 100 per result.</p>
<p>place 1 = 0.99, place 100 = 0, that yields this table : </p>
<table cellspacing="10">
<tbody>
<tr>
<td><strong>domain</strong></td>
<td><strong>score</strong></td>
</tr>
<tr>
<td>www.amazon.com</td>
<td>51.05</td>
</tr>
<tr>
<td>www.youtube.com</td>
<td>34.82</td>
</tr>
<tr>
<td>en.wikipedia.org</td>
<td>34.04</td>
</tr>
<tr>
<td>wordpress.com</td>
<td>30.93</td>
</tr>
<tr>
<td>www.streetdirectory.com</td>
<td>29.62</td>
</tr>
<tr>
<td>money.cnn.com</td>
<td>24.5</td>
</tr>
<tr>
<td>www.wikihow.com</td>
<td>22.84</td>
</tr>
<tr>
<td>www.experienced-people.co.uk</td>
<td>22.29</td>
</tr>
<tr>
<td>ezinearticles.com</td>
<td>22.26</td>
</tr>
<tr>
<td>books.google.com</td>
<td>19.22</td>
</tr>
<tr>
<td>www.problogger.net</td>
<td>17.52</td>
</tr>
<tr>
<td>entrepreneurs.about.com</td>
<td>16.53</td>
</tr>
<tr>
<td>www.43things.com</td>
<td>14.75</td>
</tr>
<tr>
<td>moneycentral.msn.com</td>
<td>14.74</td>
</tr>
<tr>
<td>answers.yahoo.com</td>
<td>14.41</td>
</tr>
</tbody>
</table>
<p>That makes Amazon top dog for all phrases containing &#8216;money&#8217;. I know the first pages get most traffic, and that first method doesn&#8217;t express that, so I change the routine and do my old trick.</p>
<h4>rating by rank, bonus for front page</h4>
<p>(100 &#8211; pos) / 100, and<br />
for place 1-3  3 points<br />
for place 4-6  2 points<br />
for place 7-10 1 points</p>
<p>That gives this table :</p>
<table cellspacing="10">
<tbody>
<tr>
<td><strong>domain</strong></td>
<td><strong>scor</strong>e</td>
</tr>
<tr>
<td>en.wikipedia.org</td>
<td>91.04</td>
</tr>
<tr>
<td>www.wikihow.com</td>
<td>67.84</td>
</tr>
<tr>
<td>www.amazon.com</td>
<td>65.05</td>
</tr>
<tr>
<td>www.youtube.com</td>
<td>56.82</td>
</tr>
<tr>
<td>money.cnn.com</td>
<td>50.5</td>
</tr>
<tr>
<td>entrepreneurs.about.com</td>
<td>45.53</td>
</tr>
<tr>
<td>ezinearticles.com</td>
<td>45.26</td>
</tr>
<tr>
<td>www.experienced-people.co.uk</td>
<td>42.29</td>
</tr>
<tr>
<td>www.freemoneyfinance.com</td>
<td>31.9</td>
</tr>
<tr>
<td>www.streetdirectory.com</td>
<td>31.62</td>
</tr>
<tr>
<td>wordpress.com</td>
<td>30.93</td>
</tr>
<tr>
<td>www.43things.com</td>
<td>30.75</td>
</tr>
<tr>
<td>abcnews.go.com</td>
<td>30.15</td>
</tr>
<tr>
<td>moneycentral.msn.com</td>
<td>29.74</td>
</tr>
<tr>
<td>moneymakerinfo.blogspot.com</td>
<td>29.55</td>
</tr>
<tr>
<td>www.thisismoney.co.uk</td>
<td>27.06</td>
</tr>
<tr>
<td>www.moneymakingmommy.com</td>
</tr>
</tbody>
</table>
<p>That still does not show what domains actually get the traffic I need for conversion. </p>
<p>It is easy to score in a low traffic niche and anyone can be a winner on long tails, &#8220;alabama ski resort&#8221;, but long tails only get you a few hits (and wonder if they are serious?). And these results doesn&#8217;t give me a clue what I can spend (or what my competition would be willing to spend) on the actual traffic spots.</p>
<p>So I am going to estimate what traffic every site gets. I need search volumes and percentages for the serp ranks. I grabbed the search volumes per phrase from <a href="http://conversion.7search.com/scripts/advertisertools/keywordsuggestion.aspx" rel="nofollow" title="search volume data">7Search</a>. For percentages, <a href="http://www.seobook.com/google-universal-search" rel="nofollow" title="seobook">Aaron Wall</a> quotes an old AOL source on the average click through rate of search engine result pages per spot on the first page :</p>
<table border="0" cellspacing="10">
<tr>
<td>
<h4>Overall Percent of Clicks </h4>
</td>
<td>
<h4>Relative Click Volume</h4>
</td>
</tr>
<tr>
<td valign="bottom">
<ol>
<li> <strong>42.13%</strong>, 2,075,765 clicks </li>
<li><strong>11.90%</strong>, 586,100 clicks</li>
<li><strong>8.50%</strong>, 418,643 clicks</li>
<li><strong>6.06%</strong>, 298,532 clicks</li>
<li><strong>4.92%</strong>, 242,169 clicks</li>
<li><strong>4.05%</strong>, 199,541 clicks</li>
<li><strong>3.41%</strong>, 168,080 clicks</li>
<li><strong>3.01%</strong>, 148,489 clicks</li>
<li><strong>2.85%</strong>, 140,356 clicks</li>
<li><strong>2.99%</strong>, 147,551 clicks</li>
</ol>
</td>
<td valign="bottom">
<ol start="2">
<li>3.5x less</li>
<li>4.9x less</li>
<li>6.9x less</li>
<li>8.5x less</li>
<li>10.4x less</li>
<li>12.3x less</li>
<li>14.0x less</li>
<li>14.8x less</li>
<li>14.1x less</li>
</ol>
</td>
</tr>
<tr>
<td colspan="2" valign="bottom">
<p><strong>1st page totals:</strong> 89.82%, 4,425,226 clicks<br />
          <strong>2nd page totals: </strong>10.18%, 501,397 clicks</p>
</td>
</tr>
</table>
<p>That was what i was looking for. Given these percentages I can estimate the traffic any spot on the  search engine result front page in Google would generate, and that yields a more realistic table of the <strong>money</strong> segment :</p>
<table cellspacing="10">
<tbody cellspacing="10">
<tr>
<td>domain</td>
<td>traffic</td>
<td>result</td>
<td>result+(1,2,3)</td>
</tr>
<tr>
<td>www.bidvertiser.com</td>
<td>737478</td>
<td>6.65</td>
<td>17.65</td>
</tr>
<tr>
<td>money.cnn.com</td>
<td>294316</td>
<td>24.5</td>
<td>50.5</td>
</tr>
<tr>
<td>en.wikipedia.org</td>
<td>160370</td>
<td>34.04</td>
<td>91.04</td>
</tr>
<tr>
<td>www.wikihow.com</td>
<td>132332</td>
<td>22.84</td>
<td>67.84</td>
</tr>
<tr>
<td>www.wealthsuccess.usana.com</td>
<td>123503</td>
<td>9.4</td>
<td>24.4</td>
</tr>
<tr>
<td>entrepreneurs.about.com</td>
<td>117069</td>
<td>16.53</td>
<td>45.53</td>
</tr>
<tr>
<td>www.moneymakingmommy.com</td>
<td>112507</td>
<td>11.65</td>
<td>26.65</td>
</tr>
<tr>
<td>www.freemoneyfinance.com</td>
<td>102122</td>
<td>12.9</td>
<td>31.9</td>
</tr>
<tr>
<td>www.experienced-people.co.uk</td>
<td>86498</td>
<td>22.29</td>
<td>42.29</td>
</tr>
<tr>
<td>www.forbes.com</td>
<td>84393</td>
<td>7.22</td>
<td>19.22</td>
</tr>
<tr>
<td>www.netjobs4all.com</td>
<td>75868</td>
<td>4.61</td>
<td>12.61</td>
</tr>
<tr>
<td>makemoneyforbeginners.blogspot.com</td>
<td>75399</td>
<td>6.53</td>
<td>15.53</td>
</tr>
<tr>
<td>www.missingmoney.com</td>
<td>65326</td>
<td>3.63</td>
<td>12.63</td>
</tr>
<tr>
<td>www.youtube.com</td>
<td>60586</td>
<td>34.82</td>
<td>56.82</td>
</tr>
<tr>
<td>technology.timesonline.co.uk</td>
<td>55009</td>
<td>3.53</td>
<td>8.53</td>
</tr>
<tr>
<td>moneymakerinfo.blogspot.com</td>
<td>54431</td>
<td>13.55</td>
<td>29.55</td>
</tr>
<tr>
<td>www.moneyclaim.gov.uk</td>
<td>50544</td>
<td>1.9</td>
<td>5.9</td>
</tr>
<tr>
<td>moneycentral.msn.com</td>
<td>39399</td>
<td>14.74</td>
<td>29.74</td>
</tr>
</tbody>
</table>
<p>That shows which sites actively target and get the traffic in the segment, a site like amazon doesn&#8217;t show in the top of the last table. </p>
<p>One way of testing the validity of the estimates is comparing with alexa rank, doing a quick SeoQuake toolbar check :</p>
<table cellspacing="10">
<tbody cellspacing="10">
<tr>
<td>domain</td>
<td>est. search traffic</td>
<td>alexa rank</td>
</tr>
<tr>
<td>www.wealthsuccess.usana.com</td>
<td>200000</td>
<td>20000</td>
</tr>
<tr>
<td>moneymakingmommy</td>
<td>110000</td>
<td>70000</td>
</tr>
<tr>
<td>freemoneyfinance</td>
<td>100000</td>
<td>60000</td>
</tr>
<tr>
<td>makemoneyforbeginners.blogspot.com</td>
<td>75000</td>
<td>140000</td>
</tr>
<tr>
<td>problogger.com</td>
<td>6500</td>
<td>43000</td>
</tr>
</tbody>
</table>
<p>That&#8217;s roughly correct based on old AOL percentages (well done, Aaron) and Oktober&#8217;s search volumes. It does not work for youtube, msn and others that have an alexa rank based on the entire domain. Being a search engine traffic estimate it doesn&#8217;t cover your &#8216;audience&#8217; (returning visitors on bookmarks and referrals off of other sites (which are included in the alexa ranking) or other segments. </p>
<p>Problogger for example, according to that calculation would get about 6K hits through Google but the Alexa rank indicates it has ~~160K hits a month. That indicates high return visits and direct traffic, a high usability and I think they get traffic from other segments (&#8216;blog&#8217; ?).</p>
<h4>The use of it</h4>
<p>Why did I start doing this ? To estimate a budget for niche penetration.</p>
<p>If I were interested in a niche and have a 1% conversion at $100,- per year per conversion, what would I be able to spend to get Bidvertisers&#8217; traffic in the search engines ?  With their traffic and my conversion, 730.000/100 = 7300 conversions per month =y 88.000 a year @100/conversion = 8.8 million dollar gross revenue on search engine traffic conversions. </p>
<p>If my marketing budget is 20% of gross sales, for a year project that amounts to 1.7 million dollar. If I already had 300K hits my budget would be a million. </p>
<p>That (roughly) answers my question. </p>
<p>I have my doubts about the use of a tool like this, it could function as quick way to scan a segment, make a &#8216;heatmap&#8217; and pinpoint the soft spots that are easy to penetrate and get a foothold, but that would require some stiff programming and a lot of switches, as well as processing a lot more segments. Nice project for the winter.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.juust.org/index.php/search-engine-marketing/2008/11/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>serp tool</title>
		<link>http://www.juust.org/index.php/serp-tool/2008/11/</link>
		<comments>http://www.juust.org/index.php/serp-tool/2008/11/#comments</comments>
		<pubDate>Mon, 03 Nov 2008 22:20:49 +0000</pubDate>
		<dc:creator>juust</dc:creator>
				<category><![CDATA[serp]]></category>
		<category><![CDATA[tool]]></category>

		<guid isPermaLink="false">http://www.juust.org/?p=208</guid>
		<description><![CDATA[I was putting together a serp tool with a database and an emailer on a cronjob, mainly because I am lazy, I always get cranky when I have to type in these keywords again, I ain&#8217;t a teletubby. I wanted &#8230; <a href="http://www.juust.org/index.php/serp-tool/2008/11/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I was putting together a <a href="http://www.juust.org/serp/index.php">serp tool</a> with a database and an emailer on a cronjob, mainly because I am <em>lazy</em>, I always get cranky when I have to type in these keywords again, I ain&#8217;t a teletubby. </p>
<p>I wanted an automated one with a history that sends me an email every day, so I started putting on together but I got distracted because the gethost server was shut down and my moms Mary Chapel event blog was on it. My old site was also on it, with my crappy blog, but losing that ain&#8217;t half as bad as losing yer moms Mary Chapel blog, that is bad karma. </p>
<p>So I got her a domain and put it on one of my accounts, installed a new blog and made sure it ranks number one in google again. Apart from that I was putting together a scraper and still needed some cron jobs for the scraper scripts. </p>
<p>I found a nice <a href="http://www.onlinecronjobs.com/" rel="nofollow">free cron job site</a>, standard 5 jobs a day. It&#8217;s free and it works flawless, no hassles. Very nice. </p>
<p>Once I had that I remembered I still had to finish that serp thing as well, so I finished the basic routines today. Still needs some testing, and it could use the yahoo and msn serps. I&#8217;ll grab them from a wordpress widget and add some language options, after that it should be a fine tool. </p>
<p>I&#8217;ll put the scripts up for download in two or three weeks or something.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.juust.org/index.php/serp-tool/2008/11/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>zend php and google webmaster tools api</title>
		<link>http://www.juust.org/index.php/zend-php-and-google-webmaster-tools-api/2008/10/</link>
		<comments>http://www.juust.org/index.php/zend-php-and-google-webmaster-tools-api/2008/10/#comments</comments>
		<pubDate>Sun, 19 Oct 2008 11:44:18 +0000</pubDate>
		<dc:creator>juust</dc:creator>
				<category><![CDATA[php]]></category>
		<category><![CDATA[tool]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://www.juust.org/?p=191</guid>
		<description><![CDATA[update 2: Sandrine worked out a set of routines, as far as I know using Zend 1.7, she lists the code here. update: Google updated their API in oktober (almost at the time I wrote these posts) and this code &#8230; <a href="http://www.juust.org/index.php/zend-php-and-google-webmaster-tools-api/2008/10/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><em>update 2: Sandrine worked out a set of routines, as far as I know using Zend 1.7, she lists the <a title="zend php google webmaster api" href="http://sandrine.reboul.free.fr/articlesdev.php?idart=92">code here</a>.</em></p>
<p><em>update: Google updated their API in oktober (almost at the time I wrote these posts) and this code fails as it still based on the V1 APi. You can access the whole WT: toolset namespace (including sitemaps, verification) through the V2 API now, but you need to send a version id along with your request, that is handled in the new Zend 1.7 download. </em></p>
<h4>The Problem</h4>
<p>I can add 32.000 blogs on a standard WordPressMu install. How do I add 32.000 subdomains, verify them and add their sitemaps to Google Webmaster, without having to go to the webmaster page about 96.000 times ?</p>
<h4>The solution</h4>
<p>Integrating Google Webmaster Tools API into my WordPress Mu install.</p>
<h4>What is it worth ?</h4>
<p>If registering and verifying a site and adding a sitemap takes 5 minutes per domain, at E12,- per hour, that makes it 96.000 euros and 4 labor years for 32.000 sites. Writing a script is worth E96.000,- and saves me four years of mindless drone work, so that is well worth having a look at.</p>
<h4>Software : Zend</h4>
<p>Zend gData is a <a title="zend php framework download page" href="http://framework.zend.com/download/" rel="nofollow">php framework</a> that is programmed to handle Google Data. Their ClientLogin routine isn&#8217;t very flexible and they haven&#8217;t covered GWT Api yet, so I&#8217;ll have to hack some routines together.</p>
<p>After getting stonewalled by the zend program a few times, I went searching and ended up on <a title="blogger api clientlogin" href="http://www.ngoprekweb.com/2006/11/04/clientlogin-authentication-for-zend-gdata/" rel="nofollow">ngoprekweb</a> who have a nice post on ClientLogin authorization for the blogger api. <a href="http://www.ngoprekweb.com/about/" rel="nofollow">Eris Ristemena</a> uses a modified Zend ClientLogin, very nice work. I installed the adapted classes and tried that one to get through the ClientLogin, and it paid off.</p>
<h4>The good stuff : Gwt api access</h4>
<p>I am not interested in the blogger stuff though, I want access to GWT Google Webmaster Tools, so I worked Eris Ristemena&#8217;s blogger routine around a little.</p>
<div class="geshi no php">
<div class="head">set_include_path(dirname(__FILE__) . &#39;/Zend_Gdata&#39;);</div>
<ol>
<li class="li1">
<div class="de1">&nbsp; <span class="kw1">require_once</span> <span class="st0">&#39;Zend.php&#39;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; Zend<span class="sy0">::</span><span class="me2">loadClass</span><span class="br0">&#40;</span><span class="st0">&#39;Zend_Gdata_ClientLogin&#39;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; Zend<span class="sy0">::</span><span class="me2">loadClass</span><span class="br0">&#40;</span><span class="st0">&#39;Zend_Gdata&#39;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; Zend<span class="sy0">::</span><span class="me2">loadClass</span><span class="br0">&#40;</span><span class="st0">&#39;Zend_Feed&#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">&nbsp; <span class="re1">$username</span> &nbsp; &nbsp; <span class="sy0">=</span> <span class="st0">&#39;&#39;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="re1">$password</span> &nbsp; &nbsp; <span class="sy0">=</span> <span class="st0">&#39;&#39;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="re1">$service</span> &nbsp; &nbsp; &nbsp;<span class="sy0">=</span> <span class="st0">&#39;sitemaps&#39;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="re1">$source</span> &nbsp; &nbsp; &nbsp; <span class="sy0">=</span> <span class="st0">&#39;Zend_ZendFramework-0.1.1&#39;</span><span class="sy0">;</span> <span class="co1">// companyName-applicationName-versionID</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="re1">$logintoken</span> &nbsp; <span class="sy0">=</span> <span class="re1">$_POST</span><span class="br0">&#91;</span><span class="st0">&#39;captchatoken&#39;</span><span class="br0">&#93;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="re1">$logincaptcha</span> <span class="sy0">=</span> <span class="re1">$_POST</span><span class="br0">&#91;</span><span class="st0">&#39;captchaanswer&#39;</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">&nbsp; try <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="re1">$resp</span> <span class="sy0">=</span> Zend_Gdata_ClientLogin<span class="sy0">::</span><span class="me2">getClientLoginAuth</span><span class="br0">&#40;</span><span class="re1">$username</span><span class="sy0">,</span><span class="re1">$password</span><span class="sy0">,</span><span class="re1">$service</span><span class="sy0">,</span><span class="re1">$source</span><span class="sy0">,</span><span class="re1">$logintoken</span><span class="sy0">,</span><span class="re1">$logincaptcha</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; <span class="kw1">if</span> <span class="br0">&#40;</span> <span class="re1">$resp</span><span class="br0">&#91;</span><span class="st0">&#39;response&#39;</span><span class="br0">&#93;</span><span class="sy0">==</span><span class="st0">&#39;authorized&#39;</span> <span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; <span class="re1">$client</span> <span class="sy0">=</span> Zend_Gdata_ClientLogin<span class="sy0">::</span><span class="me2">getHttpClient</span><span class="br0">&#40;</span><span class="re1">$resp</span><span class="br0">&#91;</span><span class="st0">&#39;auth&#39;</span><span class="br0">&#93;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; <span class="re1">$gdata</span> <span class="sy0">=</span> <span class="kw2">new</span> Zend_Gdata<span class="br0">&#40;</span><span class="re1">$client</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;<span class="re1">$feed</span> <span class="sy0">=</span> <span class="re1">$gdata</span><span class="sy0">-&amp;</span>gt<span class="sy0">;</span>getFeed<span class="br0">&#40;</span><span class="st0">&quot;https://www.google.com/webmasters/tools/feeds/sites/&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="kw1">foreach</span> <span class="br0">&#40;</span><span class="re1">$feed</span> <span class="kw1">as</span> <span class="re1">$item</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">echo</span> <span class="st0">&#39;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="st0"</span></div>
</li>
</ol>
</div>
<h3><a href="'.$item->title().&#8217;&#8221; target=&#8221;_blank&#8221;>&#8217; . $item-&gt;title() . &#8216;</a></h3>
<div class="geshi no php">
<ol>
<li class="li1">
<div class="de1"><span class="st0">&#39;;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="st0"> &nbsp; &nbsp; &nbsp; &nbsp; }</span></div>
</li>
<li class="li1">
<div class="de1"><span class="st0"> &nbsp; &nbsp;}</span></div>
</li>
<li class="li1">
<div class="de1"><span class="st0"> &nbsp; &nbsp;elseif ( $resp[&#39;</span>response<span class="st0">&#39;]==&#39;</span>captcha<span class="st0">&#39; )</span></div>
</li>
<li class="li1">
<div class="de1"><span class="st0"> &nbsp; &nbsp;{</span></div>
</li>
<li class="li1">
<div class="de1"><span class="st0"> &nbsp; &nbsp; &nbsp;echo &#39;</span>Google requires you to solve this CAPTCHA image<span class="st0">&#39;;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="st0"> &nbsp; &nbsp; &nbsp;echo &#39;</span></div>
</li>
</ol>
</div>
<p><img src="https://www.google.com/accounts/'.$resp['captchaurl'].'" alt="" /></p>
<div class="geshi no php">
<div class="head">&#39;;</div>
<ol>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; <span class="kw3">echo</span> <span class="st0">&#39;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="st0"</span></div>
</li>
</ol>
</div>
<form action="'.$_SERVER['PHP_SELF'].'" method="POST">&#8216;; echo &#8216;Answer :<br />
<input type="text" name="captchaanswer" size="10" />&#8216;; echo &#8216;<br />
<input type="hidden" name="captchatoken" value="'.$resp['captchatoken'].'" />&#8216;; echo &#8216;<br />
<input type="submit" />&#8216;; echo &#8216;</form>
<div class="geshi no php">
<ol>
<li class="li1">
<div class="de1"><span class="st0">&#39;;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="st0"> &nbsp; &nbsp; &nbsp;exit;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="st0"> &nbsp; &nbsp;}</span></div>
</li>
<li class="li1">
<div class="de1"><span class="st0"> &nbsp; &nbsp;else</span></div>
</li>
<li class="li1">
<div class="de1"><span class="st0"> &nbsp; &nbsp;{</span></div>
</li>
<li class="li1">
<div class="de1"><span class="st0"> &nbsp; &nbsp; &nbsp;// there is no way you can go here, some exceptions must have been thrown</span></div>
</li>
<li class="li1">
<div class="de1"><span class="st0"> &nbsp; &nbsp;}</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="st0"> &nbsp;} catch ( Exception $e ) &nbsp;{</span></div>
</li>
<li class="li1">
<div class="de1"><span class="st0"> &nbsp; &nbsp;echo $e-&amp;gt;getMessage();</span></div>
</li>
<li class="li1">
<div class="de1"><span class="st0"> &nbsp;}</span></div>
</li>
<li class="li1">
<div class="de1"><span class="st0"</span></div>
</li>
</ol>
</div>
<p><small>(I added <strong>https://www.google.com/accounts/</strong> to the captcha image source, otherwise it keeps drawing blanks.)</small></p>
<p>Zend uses a &#8220;HttpClient&#8221; for the connection to Google, and a gData class (usually the main &#8216;feed&#8217;, blogs, sites) that you use to do basic data manipulation. All feed entries are an atom format with a custom namespace.</p>
<p>Now I am going to add a domain. In my <strong>add_site</strong> function I put an XML Atom together to post (using the <strong>post()</strong> function of the gData class) to the sites feed url, and the Google API does the rest :</p>
<div class="geshi no php">
<div class="head">function add_site($domain, $client) {</div>
<ol>
<li class="li1">
<div class="de1">&nbsp; <span class="re1">$xml</span><span class="sy0">=</span><span class="st0">&#39;&#39;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="re1">$xml</span><span class="sy0">.=</span><span class="st0">&#39;&#39;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="re1">$xml</span><span class="sy0">.=</span><span class="st0">&#39;&#39;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="re1">$fdata</span> <span class="sy0">=</span> <span class="kw2">new</span> Zend_Gdata<span class="br0">&#40;</span><span class="re1">$client</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="re1">$result</span><span class="sy0">=</span><span class="re1">$fdata</span><span class="sy0">-&amp;</span>gt<span class="sy0">;</span>post<span class="br0">&#40;</span><span class="re1">$xml</span><span class="sy0">,</span><span class="st0">&quot;https://www.google.com/webmasters/tools/feeds/sites/&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw1">return</span> <span class="re1">$result</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
</ol>
</div>
<p>In the main routine I pass the domain and the running httpclient to the add_site() function :</p>
<div class="geshi no php">
<div class="head">if ( $resp[&#39;response&#39;]==&#39;authorized&#39; )</div>
<ol>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; <span class="re1">$client</span> <span class="sy0">=</span> Zend_Gdata_ClientLogin<span class="sy0">::</span><span class="me2">getHttpClient</span><span class="br0">&#40;</span><span class="re1">$resp</span><span class="br0">&#91;</span><span class="st0">&#39;auth&#39;</span><span class="br0">&#93;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; <span class="kw3">echo</span> add_site<span class="br0">&#40;</span><span class="st0">&#39;test.blacknorati.com&#39;</span><span class="sy0">,</span> <span class="re1">$client</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
</ol>
</div>
<p>Cool. That saves me up to 32.000 site registrations. The rest of it is still greek to me, but this part functions. Next week : more nonsense (verify the site, add a sitemap, and integrate it in the blog creation function of wordpress mu).</p>
<blockquote><p>1) about the blogger function : I tried to list the blogger posts with the <a title="blogger api clientlogin modified php code" href="http://www.ngoprekweb.com/2006/11/04/clientlogin-authentication-for-zend-gdata/" rel="nofollow">ngoprekweb</a> php code, but it seems blogger use a different string these days to identify the blog in gData, the id is returned as &#8220;tag:blogger.com-blabla-(blogid)&#8221; and you want the last part to access the blogs post atom feed :</p></blockquote>
<div class="geshi no php">
<div class="head">$idText = split(&#39;-&#39;, $item-&gt;id());</div>
<ol>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="re1">$blogid</span> <span class="sy0">=</span> <span class="re1">$idText</span><span class="br0">&#91;</span><span class="nu0">2</span><span class="br0">&#93;</span><span class="sy0">;</span></div>
</li>
</ol>
</div>
<p>(modified from the Zend 1.6.1 codebase)</p>
<div class="geshi no php">
<div class="head">foreach ($feed as $item) {</div>
<ol>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">echo</span> <span class="st0">&#39;&lt;a href=&quot;&#39;</span><span class="sy0">.</span><span class="re1">$item</span><span class="sy0">-&gt;</span><span class="me1">link</span><span class="br0">&#40;</span><span class="st0">&quot;&gt;&#39; . $item-&amp;gt;title() . &#39;&lt;/a&gt;&#39;;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="st0"> $idText = split(&#39;-&#39;, $item-&amp;gt;id());</span></div>
</li>
<li class="li1">
<div class="de1"><span class="st0"> &nbsp; &nbsp; &nbsp; &nbsp;$blogid = $idText[2];</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="st0"> &nbsp; &nbsp; &nbsp; &nbsp;$feed1 = $gdata-&amp;gt;getFeed(&quot;</span>http<span class="sy0">:</span><span class="co1">//www.blogger.com/feeds/$blogid/posts/summary&quot;);</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co1">//&#8230;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
</ol>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.juust.org/index.php/zend-php-and-google-webmaster-tools-api/2008/10/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>serp tool 2008</title>
		<link>http://www.juust.org/index.php/serp-tool-2008/2008/09/</link>
		<comments>http://www.juust.org/index.php/serp-tool-2008/2008/09/#comments</comments>
		<pubDate>Sun, 21 Sep 2008 23:55:09 +0000</pubDate>
		<dc:creator>juust</dc:creator>
				<category><![CDATA[serp]]></category>
		<category><![CDATA[tool]]></category>

		<guid isPermaLink="false">http://www.juust.org/?p=152</guid>
		<description><![CDATA[I never got around to building a serp tool with a mysql backend, one on a cronjob with an email option. This weekend I got an OSWD free template, then it at least looks like a website. I develop a &#8230; <a href="http://www.juust.org/index.php/serp-tool-2008/2008/09/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I never got around to building a serp tool with a mysql backend, one on a cronjob with an email option.<br />
This weekend I got an OSWD free template, then it at least looks like a website. I develop a lot easier when it has a template. Filling in the blanks.</p>
<p>Often if you program a rough sketch, in time it sort of develops itself. If you don&#8217;t start nothing gets done. </p>
<p>I am developing it on <a href="http://www.juust.org/serp/serp.single.php" rel="nofollow">juust.org/serp/</a>, once its finished i&#8217;ll put one on trismegistos.net and put the source up for download. </p>
<p>It&#8217;s flimsy but the idea of a serp minisite with emailer option is commercially attractive.</p>
<p>It&#8217;s also important for the blog to have a &#8216;serp&#8217; page in the menu, and a serp page should have serp tools, in abundance, all kinds of them.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.juust.org/index.php/serp-tool-2008/2008/09/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>blogger auto-poster</title>
		<link>http://www.juust.org/index.php/blogger-auto-poster/2008/08/</link>
		<comments>http://www.juust.org/index.php/blogger-auto-poster/2008/08/#comments</comments>
		<pubDate>Thu, 28 Aug 2008 23:23:15 +0000</pubDate>
		<dc:creator>juust</dc:creator>
				<category><![CDATA[links]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[seo]]></category>
		<category><![CDATA[tool]]></category>

		<guid isPermaLink="false">http://www.juust.org/?p=130</guid>
		<description><![CDATA[I needed to get my new linkdirectory&#8217;s pages indexed and crawled and google needs some stimulation. So I take a blogger subdomain, and a 700 category php link directory and make a table PLD_TAGCLOUD(CAT_ID, POSTED, TAG, FULLPATH) CREATE TABLE `PLD_TAGCLOUD` &#8230; <a href="http://www.juust.org/index.php/blogger-auto-poster/2008/08/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I needed to get my new linkdirectory&#8217;s pages indexed and crawled and google needs some stimulation.</p>
<p>So I take a blogger subdomain,<br />
and a 700 category php link directory<br />
and make a table PLD_TAGCLOUD(CAT_ID, POSTED, TAG, FULLPATH) </p>
<p> CREATE TABLE `PLD_TAGCLOUD` (<br />
`ID` BIGINT( 11 ) NOT NULL ,<br />
`CAT_ID` DOUBLE NOT NULL ,<br />
`POSTED` DOUBLE NOT NULL ,<br />
`LEVEL` DOUBLE NOT NULL ,<br />
`TAG` VARCHAR( 250 ) NOT NULL ,<br />
`FULLPATH` VARCHAR( 250 ) NOT NULL ,<br />
PRIMARY KEY ( `ID` )<br />
) ENGINE = MYISAM </p>
<p>I fill the table with a recursive tree traversal on the category table where &#8220;tag&#8221; is the &#8216;title&#8217; field,<br />
and I get the FULLPATH url by using the domain root and the path generated by traversing the tree :</p>
<div class="geshi no php">
<ol>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">function</span> connect<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">$DB_USER</span> <span class="sy0">=</span> &nbsp;<span class="st0">&quot;&quot;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="re1">$DB_PASSWORD</span> <span class="sy0">=</span> <span class="st0">&quot;&quot;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="re1">$DB_HOST</span> <span class="sy0">=</span> <span class="st0">&quot;&quot;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="re1">$DB_DATA</span> <span class="sy0">=</span> <span class="st0">&quot;&quot;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="re1">$link</span> <span class="sy0">=</span> &nbsp;<span class="kw3">mysql_connect</span><span class="br0">&#40;</span><span class="re1">$DB_HOST</span><span class="sy0">,</span> <span class="re1">$DB_USER</span><span class="sy0">,</span> <span class="re1">$DB_PASSWORD</span><span class="br0">&#41;</span> or <span class="re1">$error</span> <span class="sy0">=</span> <span class="kw3">mysql_error</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">if</span> <span class="br0">&#40;</span><span class="sy0">!</span><span class="re1">$link</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp;<span class="kw3">echo</span> <span class="re1">$error</span><span class="sy0">;</span> </div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw3">exit</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="br0">&#125;</span> <span class="kw1">else</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw3">mysql_select_db</span><span class="br0">&#40;</span><span class="re1">$DB_DATA</span><span class="sy0">,</span> <span class="re1">$link</span><span class="br0">&#41;</span> or <span class="re1">$error</span> <span class="sy0">=</span> <span class="kw3">mysql_error</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">return</span> <span class="re1">$link</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&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="re1">$link</span> <span class="sy0">=</span> connect<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re1">$del</span><span class="sy0">=</span><span class="st0">&quot;DELETE FROM `PLD_TAGCLOUD`&quot;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re1">$mydel</span> <span class="sy0">=</span> <span class="kw3">mysql_query</span><span class="br0">&#40;</span><span class="re1">$del</span><span class="sy0">,</span> <span class="re1">$link</span><span class="br0">&#41;</span> or <span class="kw3">die</span><span class="br0">&#40;</span><span class="kw3">mysql_error</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="sy0">@</span><span class="kw3">mysql_close</span><span class="br0">&#40;</span><span class="re1">$link</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="re1">$root</span><span class="sy0">=</span><span class="st0">&#39;http://links.trismegistos.net&#39;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re1">$content</span> <span class="sy0">.=</span> read<span class="br0">&#40;</span><span class="nu0">0</span><span class="sy0">,</span> <span class="re1">$root</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">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">function</span> read<span class="br0">&#40;</span><span class="re1">$rootid</span><span class="sy0">,</span> <span class="re1">$pathid</span><span class="sy0">,</span> <span class="re1">$thislevel</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="re1">$link</span> <span class="sy0">=</span> connect<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="re1">$myqry</span> <span class="sy0">=</span> <span class="st0">&quot;SELECT * FROM `PLD_CATEGORY` WHERE `PARENT_ID`=&#39;&quot;</span><span class="sy0">.</span><span class="re1">$rootid</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;<span class="re1">$myres</span> <span class="sy0">=</span> <span class="kw3">mysql_query</span><span class="br0">&#40;</span><span class="re1">$myqry</span><span class="sy0">,</span> <span class="re1">$link</span><span class="br0">&#41;</span> or <span class="kw3">die</span><span class="br0">&#40;</span><span class="kw3">mysql_error</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">if</span><span class="br0">&#40;</span><span class="kw3">mysql_num_rows</span><span class="br0">&#40;</span><span class="re1">$myres</span><span class="br0">&#41;</span><span class="sy0">&amp;</span>lt<span class="sy0">;</span><span class="nu0">1</span><span class="br0">&#41;</span> <span class="kw1">return</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">while</span><span class="br0">&#40;</span><span class="re1">$row</span><span class="sy0">=</span><span class="kw3">mysql_fetch_assoc</span><span class="br0">&#40;</span><span class="re1">$myres</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span> &nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="re1">$thispath</span><span class="sy0">=</span> <span class="re1">$pathid</span> <span class="sy0">.</span><span class="st0">&quot;/&quot;</span><span class="sy0">.</span><span class="re1">$row</span><span class="br0">&#91;</span><span class="st0">&#39;TITLE_URL&#39;</span><span class="br0">&#93;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="re1">$link2</span> <span class="sy0">=</span> connect<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="re1">$add</span><span class="sy0">=</span><span class="st0">&quot;INSERT INTO `PLD_TAGCLOUD` (`CAT_ID`, `LEVEL`, `TAG`, `FULLPATH`) VALUES (&#39;&quot;</span><span class="sy0">.</span><span class="re1">$row</span><span class="br0">&#91;</span><span class="st0">&#39;ID&#39;</span><span class="br0">&#93;</span><span class="sy0">.</span><span class="st0">&quot;&#39;, &#39;&quot;</span><span class="sy0">.</span><span class="re1">$thislevel</span><span class="sy0">.</span><span class="st0">&quot;&#39;, &#39;&quot;</span><span class="sy0">.</span><span class="kw3">htmlentities</span><span class="br0">&#40;</span><span class="re1">$row</span><span class="br0">&#91;</span><span class="st0">&#39;TITLE&#39;</span><span class="br0">&#93;</span><span class="sy0">,</span> ENT_QUOTES<span class="br0">&#41;</span><span class="sy0">.</span><span class="st0">&quot;&#39; ,&#39;&quot;</span><span class="sy0">.</span><span class="re1">$thispath</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; <span class="re1">$addit</span> <span class="sy0">=</span> <span class="kw3">mysql_query</span><span class="br0">&#40;</span><span class="re1">$add</span><span class="sy0">,</span> <span class="re1">$link2</span><span class="br0">&#41;</span> or <span class="kw3">die</span><span class="br0">&#40;</span><span class="kw3">mysql_error</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="sy0">@</span><span class="kw3">mysql_close</span><span class="br0">&#40;</span><span class="re1">$link2</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; read<span class="br0">&#40;</span><span class="re1">$row</span><span class="br0">&#91;</span><span class="st0">&#39;ID&#39;</span><span class="br0">&#93;</span><span class="sy0">,</span> <span class="re1">$thispath</span><span class="sy0">,</span> <span class="re1">$thislevel</span><span class="nu0">+1</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="sy0">@</span><span class="kw3">mysql_close</span><span class="br0">&#40;</span><span class="re1">$link</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>note : I also use a field level to store the depth of a category-page (o for root, 1 for main categories and mine goes down to 4)</p>
<p>Then we make a simple routine to grab the first record for posted=0,<br />
grab the url<br />
grab the title<br />
grab 3 posts off of google-blogsearch on the TITLE, add em to an email,<br />
add a link to the category page url,<br />
mail(email, subject, message-body, headers)</p>
<p>and ofcourse the coupe-de-grace, the cronjob, 700 posts, 4 per hour, so in about 170 hours my entire site is listed on a nice juicy blog. Just for the hell of it i put the links of the blogsearch on &#8216;follow&#8217; so my poor victims get a link as well.</p>
<div class="geshi no php">
<ol>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">function</span> connect<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">$DB_USER</span> <span class="sy0">=</span> &nbsp;<span class="st0">&quot;&quot;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="re1">$DB_PASSWORD</span> <span class="sy0">=</span> <span class="st0">&quot;&quot;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="re1">$DB_HOST</span> <span class="sy0">=</span> <span class="st0">&quot;&quot;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="re1">$DB_DATA</span> <span class="sy0">=</span> <span class="st0">&quot;&quot;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="re1">$link</span> <span class="sy0">=</span> &nbsp;<span class="kw3">mysql_connect</span><span class="br0">&#40;</span><span class="re1">$DB_HOST</span><span class="sy0">,</span> <span class="re1">$DB_USER</span><span class="sy0">,</span> <span class="re1">$DB_PASSWORD</span><span class="br0">&#41;</span> or <span class="re1">$error</span> <span class="sy0">=</span> <span class="kw3">mysql_error</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">if</span> <span class="br0">&#40;</span><span class="sy0">!</span><span class="re1">$link</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp;<span class="kw3">echo</span> <span class="re1">$error</span><span class="sy0">;</span> </div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw3">exit</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="br0">&#125;</span> <span class="kw1">else</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw3">mysql_select_db</span><span class="br0">&#40;</span><span class="re1">$DB_DATA</span><span class="sy0">,</span> <span class="re1">$link</span><span class="br0">&#41;</span> or <span class="re1">$error</span> <span class="sy0">=</span> <span class="kw3">mysql_error</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">return</span> <span class="re1">$link</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&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">&nbsp;<span class="re1">$link</span> <span class="sy0">=</span> connect<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="re1">$myqry</span> <span class="sy0">=</span> <span class="st0">&quot;SELECT * FROM `PLD_TAGCLOUD` WHERE `POSTED`=&#39;0&#39; ORDER BY ID DESC&quot;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="re1">$myres</span> <span class="sy0">=</span> <span class="kw3">mysql_query</span><span class="br0">&#40;</span><span class="re1">$myqry</span><span class="sy0">,</span> <span class="re1">$link</span><span class="br0">&#41;</span> or <span class="kw3">die</span><span class="br0">&#40;</span><span class="kw3">mysql_error</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">if</span><span class="br0">&#40;</span><span class="kw3">mysql_num_rows</span><span class="br0">&#40;</span><span class="re1">$myres</span><span class="br0">&#41;</span><span class="sy0">&amp;</span>lt<span class="sy0">;</span><span class="nu0">1</span><span class="br0">&#41;</span> <span class="kw1">return</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">while</span><span class="br0">&#40;</span><span class="re1">$row</span><span class="sy0">=</span><span class="kw3">mysql_fetch_assoc</span><span class="br0">&#40;</span><span class="re1">$myres</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span> &nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="re1">$myurl</span> <span class="sy0">=</span> <span class="re1">$row</span><span class="br0">&#91;</span><span class="st0">&#39;FULLPATH&#39;</span><span class="br0">&#93;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="re1">$mykey</span> <span class="sy0">=</span> <span class="kw3">urlencode</span><span class="br0">&#40;</span><span class="re1">$row</span><span class="br0">&#91;</span><span class="st0">&#39;TAG&#39;</span><span class="br0">&#93;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="re1">$link2</span> <span class="sy0">=</span> connect<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="re1">$add</span><span class="sy0">=</span><span class="st0">&quot;UPDATE `PLD_TAGCLOUD` SET `POSTED`=&#39;1&#39; WHERE `ID`=&#39;&quot;</span><span class="sy0">.</span><span class="re1">$row</span><span class="br0">&#91;</span><span class="st0">&#39;ID&#39;</span><span class="br0">&#93;</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; <span class="re1">$addit</span> <span class="sy0">=</span> <span class="kw3">mysql_query</span><span class="br0">&#40;</span><span class="re1">$add</span><span class="sy0">,</span> <span class="re1">$link2</span><span class="br0">&#41;</span> or <span class="kw3">die</span><span class="br0">&#40;</span><span class="kw3">mysql_error</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="sy0">@</span><span class="kw3">mysql_close</span><span class="br0">&#40;</span><span class="re1">$link2</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw1">break</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="sy0">@</span><span class="kw3">mysql_close</span><span class="br0">&#40;</span><span class="re1">$link</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;</div>
</li>
<li class="li1">
<div class="de1"><span class="re1">$xmlSource</span><span class="sy0">=</span><span class="st0">&quot;http://blogsearch.google.com/blogsearch_feeds?hl=en&amp;c2coff=1&amp;lr=&amp;safe=active&amp;as_drrb=q&amp;as_qdr=d&amp;q=&quot;</span><span class="sy0">.</span><span class="re1">$mykey</span><span class="sy0">.</span><span class="st0">&quot;&amp;ie=utf-8&amp;num=3&amp;output=rss&quot;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re1">$title</span><span class="sy0">=</span><span class="st0">&quot;&quot;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re1">$link</span><span class="sy0">=</span><span class="st0">&quot;&quot;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re1">$description</span><span class="sy0">=</span><span class="st0">&quot;&quot;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re1">$author</span><span class="sy0">=</span><span class="st0">&quot;&quot;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re1">$pubDate</span><span class="sy0">=</span><span class="st0">&quot;&quot;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re1">$currentElement</span><span class="sy0">=</span><span class="st0">&quot;&quot;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re1">$nieuwsitems</span> <span class="sy0">=</span> <span class="kw3">array</span><span class="br0">&#40;</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> startElement<span class="br0">&#40;</span><span class="re1">$parser</span><span class="sy0">,</span><span class="re1">$name</span><span class="sy0">,</span><span class="re1">$attr</span><span class="br0">&#41;</span><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">if</span><span class="br0">&#40;</span><span class="kw3">strcmp</span><span class="br0">&#40;</span><span class="re1">$name</span><span class="sy0">,</span><span class="st0">&quot;item&quot;</span><span class="br0">&#41;</span><span class="sy0">==</span><span class="nu0">0</span><span class="br0">&#41;</span><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="re1">$GLOBALS</span><span class="br0">&#91;</span><span class="st0">&#39;title&#39;</span><span class="br0">&#93;</span><span class="sy0">=</span><span class="st0">&quot;&quot;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="re1">$GLOBALS</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;&quot;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="re1">$GLOBALS</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;&quot;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="re1">$GLOBALS</span><span class="br0">&#91;</span><span class="st0">&#39;author&#39;</span><span class="br0">&#93;</span><span class="sy0">=</span><span class="st0">&quot;&quot;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="re1">$GLOBALS</span><span class="br0">&#91;</span><span class="st0">&#39;pubDate&#39;</span><span class="br0">&#93;</span><span class="sy0">=</span><span class="st0">&quot;&quot;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="re1">$GLOBALS</span><span class="br0">&#91;</span><span class="st0">&#39;currentElement&#39;</span><span class="br0">&#93;</span><span class="sy0">=</span><span class="re1">$name</span><span class="sy0">;</span> </div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">if</span><span class="br0">&#40;</span><span class="kw3">strcmp</span><span class="br0">&#40;</span><span class="re1">$name</span><span class="sy0">,</span><span class="st0">&quot;link&quot;</span><span class="br0">&#41;</span><span class="sy0">==</span><span class="nu0">0</span><span class="br0">&#41;</span><span class="br0">&#123;</span> <span class="re1">$GLOBALS</span><span class="br0">&#91;</span><span class="st0">&#39;href&#39;</span><span class="br0">&#93;</span><span class="sy0">=</span><span class="re1">$attr</span><span class="br0">&#91;</span><span class="st0">&quot;href&quot;</span><span class="br0">&#93;</span><span class="sy0">;</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="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> endElement<span class="br0">&#40;</span><span class="re1">$parser</span><span class="sy0">,</span><span class="re1">$name</span><span class="br0">&#41;</span><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="re1">$elements</span><span class="sy0">=</span><span class="kw3">array</span><span class="br0">&#40;</span><span class="st0">&#39;title&#39;</span><span class="sy0">,</span><span class="st0">&#39;link&#39;</span><span class="sy0">,</span><span class="st0">&#39;description&#39;</span><span class="sy0">,</span><span class="st0">&#39;author&#39;</span><span class="sy0">,</span><span class="st0">&#39;pubDate&#39;</span><span class="br0">&#41;</span><span class="sy0">;</span> &nbsp; &nbsp; </div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">if</span><span class="br0">&#40;</span><span class="kw3">strcmp</span><span class="br0">&#40;</span><span class="re1">$name</span><span class="sy0">,</span><span class="st0">&quot;item&quot;</span><span class="br0">&#41;</span><span class="sy0">==</span><span class="nu0">0</span><span class="br0">&#41;</span><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw1">foreach</span><span class="br0">&#40;</span><span class="re1">$elements</span> <span class="kw1">as</span> <span class="re1">$element</span><span class="br0">&#41;</span><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="re1">$temp</span><span class="br0">&#91;</span><span class="re1">$element</span><span class="br0">&#93;</span> <span class="sy0">=</span> <span class="re1">$GLOBALS</span><span class="br0">&#91;</span><span class="re1">$element</span><span class="br0">&#93;</span><span class="sy0">;</span> &nbsp; &nbsp; &nbsp; </div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="re1">$GLOBALS</span><span class="br0">&#91;</span><span class="st0">&#39;nieuwsitems&#39;</span><span class="br0">&#93;</span><span class="br0">&#91;</span><span class="br0">&#93;</span><span class="sy0">=</span><span class="re1">$temp</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="re1">$GLOBALS</span><span class="br0">&#91;</span><span class="st0">&#39;title&#39;</span><span class="br0">&#93;</span><span class="sy0">=</span><span class="st0">&quot;&quot;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="re1">$GLOBALS</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;&quot;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="re1">$GLOBALS</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;&quot;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="re1">$GLOBALS</span><span class="br0">&#91;</span><span class="st0">&#39;author&#39;</span><span class="br0">&#93;</span><span class="sy0">=</span><span class="st0">&quot;&quot;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="re1">$GLOBALS</span><span class="br0">&#91;</span><span class="st0">&#39;pubDate&#39;</span><span class="br0">&#93;</span><span class="sy0">=</span><span class="st0">&quot;&quot;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">if</span><span class="br0">&#40;</span><span class="kw3">strcmp</span><span class="br0">&#40;</span><span class="re1">$name</span><span class="sy0">,</span><span class="st0">&quot;item&quot;</span><span class="br0">&#41;</span><span class="sy0">==</span><span class="nu0">0</span><span class="br0">&#41;</span><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="re1">$GLOBALS</span><span class="br0">&#91;</span><span class="st0">&#39;title&#39;</span><span class="br0">&#93;</span><span class="sy0">=</span><span class="st0">&quot;&quot;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="re1">$GLOBALS</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;&quot;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="re1">$GLOBALS</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;&quot;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="re1">$GLOBALS</span><span class="br0">&#91;</span><span class="st0">&#39;author&#39;</span><span class="br0">&#93;</span><span class="sy0">=</span><span class="st0">&quot;&quot;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="re1">$GLOBALS</span><span class="br0">&#91;</span><span class="st0">&#39;pubDate&#39;</span><span class="br0">&#93;</span><span class="sy0">=</span><span class="st0">&quot;&quot;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&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> characterData<span class="br0">&#40;</span><span class="re1">$parser</span><span class="sy0">,</span> <span class="re1">$data</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="re1">$elements</span> <span class="sy0">=</span> <span class="kw3">array</span> <span class="br0">&#40;</span><span class="st0">&#39;title&#39;</span><span class="sy0">,</span> <span class="st0">&#39;link&#39;</span><span class="sy0">,</span> <span class="st0">&#39;description&#39;</span><span class="sy0">,</span><span class="st0">&#39;author&#39;</span><span class="sy0">,</span><span class="st0">&#39;pubDate&#39;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">foreach</span> <span class="br0">&#40;</span><span class="re1">$elements</span> <span class="kw1">as</span> <span class="re1">$element</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span><span class="re1">$GLOBALS</span><span class="br0">&#91;</span><span class="st0">&quot;currentElement&quot;</span><span class="br0">&#93;</span> <span class="sy0">==</span> <span class="re1">$element</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="re1">$GLOBALS</span><span class="br0">&#91;</span><span class="re1">$element</span><span class="br0">&#93;</span> <span class="sy0">.=</span> <span class="re1">$data</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&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> parseFile<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="kw3">global</span> <span class="re1">$xmlSource</span><span class="sy0">,</span><span class="re1">$nieuwsitems</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="re1">$xml_parser</span><span class="sy0">=</span><span class="kw3">xml_parser_create</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw3">xml_set_element_handler</span><span class="br0">&#40;</span><span class="re1">$xml_parser</span><span class="sy0">,</span><span class="st0">&quot;startElement&quot;</span><span class="sy0">,</span><span class="st0">&quot;endElement&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw3">xml_set_character_data_handler</span><span class="br0">&#40;</span><span class="re1">$xml_parser</span><span class="sy0">,</span><span class="st0">&quot;characterData&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw3">xml_parser_set_option</span><span class="br0">&#40;</span><span class="re1">$xml_parser</span><span class="sy0">,</span>XML_OPTION_CASE_FOLDING<span class="sy0">,</span><span class="kw2">false</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">if</span><span class="br0">&#40;</span><span class="sy0">!</span><span class="br0">&#40;</span><span class="re1">$fp</span><span class="sy0">=</span><span class="kw3">fopen</span><span class="br0">&#40;</span><span class="re1">$xmlSource</span><span class="sy0">,</span><span class="st0">&quot;r&quot;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw3">die</span><span class="br0">&#40;</span><span class="st0">&quot;Cannot open &nbsp;$xmlSource &nbsp;&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">while</span><span class="br0">&#40;</span><span class="br0">&#40;</span><span class="re1">$data</span><span class="sy0">=</span><span class="kw3">fread</span><span class="br0">&#40;</span><span class="re1">$fp</span><span class="sy0">,</span><span class="nu0">4096</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw1">if</span><span class="br0">&#40;</span><span class="sy0">!</span><span class="kw3">xml_parse</span><span class="br0">&#40;</span><span class="re1">$xml_parser</span><span class="sy0">,</span><span class="re1">$data</span><span class="sy0">,</span><span class="kw3">feof</span><span class="br0">&#40;</span><span class="re1">$fp</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="kw3">die</span><span class="br0">&#40;</span><span class="kw3">sprintf</span><span class="br0">&#40;</span><span class="st0">&quot;XML error at line %d column %d &quot;</span><span class="sy0">,</span> </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="kw3">xml_get_current_line_number</span><span class="br0">&#40;</span><span class="re1">$xml_parser</span><span class="br0">&#41;</span><span class="sy0">,</span> </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="kw3">xml_get_current_column_number</span><span class="br0">&#40;</span><span class="re1">$xml_parser</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw3">xml_parser_free</span><span class="br0">&#40;</span><span class="re1">$xml_parser</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">return</span> <span class="re1">$nieuwsitems</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="re1">$result</span> <span class="sy0">=</span> parseFile<span class="br0">&#40;</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="kw1">foreach</span><span class="br0">&#40;</span><span class="re1">$result</span> <span class="kw1">as</span> <span class="re1">$arr</span><span class="br0">&#41;</span><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="re1">$strResult</span> <span class="sy0">.=</span> <span class="st0">&#39;&lt; hr /&gt;&#39;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="re1">$strResult</span> <span class="sy0">.=</span> <span class="st0">&#39;&lt; h4&gt;&#39;</span><span class="sy0">.</span><span class="re1">$arr</span><span class="br0">&#91;</span><span class="st0">&quot;title&quot;</span><span class="br0">&#93;</span><span class="sy0">.</span><span class="st0">&#39;&lt; /h4&gt;&#39;</span><span class="sy0">.</span><span class="re1">$arr</span><span class="br0">&#91;</span><span class="st0">&quot;description&quot;</span><span class="br0">&#93;</span><span class="sy0">.</span><span class="st0">&#39;&lt; br /&gt;&lt;a href=&quot;&#39;</span><span class="sy0">.</span><span class="re1">$arr</span><span class="br0">&#91;</span><span class="st0">&quot;link&quot;</span><span class="br0">&#93;</span><span class="sy0">.</span><span class="st0">&#39;&quot; title=&quot;&#39;</span><span class="sy0">.</span><span class="re1">$arr</span><span class="br0">&#91;</span><span class="st0">&quot;title&quot;</span><span class="br0">&#93;</span><span class="sy0">.</span><span class="st0">&#39; (&#39;</span><span class="sy0">.</span><span class="kw3">parse_url</span><span class="br0">&#40;</span><span class="re1">$arr</span><span class="br0">&#91;</span><span class="st0">&quot;link&quot;</span><span class="br0">&#93;</span><span class="sy0">,</span> PHP_URL_HOST<span class="br0">&#41;</span><span class="sy0">.</span><span class="st0">&#39;)&quot;&gt;&quot;&#39;</span><span class="sy0">.</span><span class="re1">$arr</span><span class="br0">&#91;</span><span class="st0">&quot;title&quot;</span><span class="br0">&#93;</span><span class="sy0">.</span><span class="st0">&#39; (&#39;</span><span class="sy0">.</span><span class="kw3">parse_url</span><span class="br0">&#40;</span><span class="re1">$arr</span><span class="br0">&#91;</span><span class="st0">&quot;link&quot;</span><span class="br0">&#93;</span><span class="sy0">,</span> PHP_URL_HOST<span class="br0">&#41;</span><span class="sy0">.</span><span class="st0">&#39;)&lt;/a&gt;&lt; br /&gt;&lt; br /&gt;&#39;</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="re1">$strResult</span> <span class="sy0">.=</span> <span class="st0">&#39;&lt; br /&gt; &lt; a href=&quot;&#39;</span><span class="sy0">.</span><span class="re1">$myurl</span><span class="sy0">.</span><span class="st0">&#39;&quot; title=&quot;&#39;</span><span class="sy0">.</span><span class="re1">$mykey</span><span class="sy0">.</span><span class="st0">&#39;&quot;&gt;trismegistos links : &#39;</span><span class="sy0">.</span><span class="re1">$mykey</span><span class="sy0">.</span><span class="st0">&#39;&lt; /a&gt;&lt; br /&gt;&#39;</span><span class="sy0">;</span> </div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="re1">$email</span><span class="sy0">=</span><span class="st0">&#39;juustout.linkdirectory@blogger.com&#39;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re1">$subject</span> <span class="sy0">=</span> <span class="re1">$mykey</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw3">mail</span><span class="br0">&#40;</span><span class="re1">$email</span><span class="sy0">,</span><span class="re1">$subject</span><span class="sy0">,</span><span class="re1">$strResult</span><span class="sy0">,</span> <span class="st0">&quot;MIME-Version: 1.0<span class="es0">\n</span>&quot;</span><span class="sy0">.</span><span class="st0">&quot;Content-type: text/html; charset=iso-8859-1&quot;</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="kw3">echo</span> <span class="re1">$strResult</span><span class="sy0">;</span></div>
</li>
</ol>
</div>
<p>(note the html markup in the last lines is < br />, if you cut and paste it, remove the space or you get a mess, also note the extra header in the php mail function, makes it possible to post html-marked up text (otherwise you get flat text posted and your site looks like ****).</p>
]]></content:encoded>
			<wfw:commentRss>http://www.juust.org/index.php/blogger-auto-poster/2008/08/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

