<?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>Kapusta Brothers &#187; PHP5</title>
	<atom:link href="http://www.kapustabrothers.com/tag/php5/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.kapustabrothers.com</link>
	<description></description>
	<lastBuildDate>Wed, 26 Oct 2011 12:13:02 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Zend Certified Engineer</title>
		<link>http://www.kapustabrothers.com/2008/09/21/zend-certified-engineer/</link>
		<comments>http://www.kapustabrothers.com/2008/09/21/zend-certified-engineer/#comments</comments>
		<pubDate>Sun, 21 Sep 2008 17:01:17 +0000</pubDate>
		<dc:creator>farrelley</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[PHP5]]></category>
		<category><![CDATA[ZCE]]></category>
		<category><![CDATA[Zend]]></category>
		<category><![CDATA[Zend Certified Engineer]]></category>
		<category><![CDATA[ZendCon08]]></category>

		<guid isPermaLink="false">http://www.kapustabrothers.com/?p=903</guid>
		<description><![CDATA[Last week at ZendCon08 I took my ZCE test for PHP5 and passed.  I am now a ZCE!]]></description>
			<content:encoded><![CDATA[<p><a href="http://zend.com/zce.php?c=ZEND008515&#038;r=226472412"><img class="alignleft size-full wp-image-904" title="ZCE" src="http://www.kapustabrothers.com/journal/wp-content/uploads/2008/09/php5-zce-logo-new.gif" alt="" width="73" height="68" /></a> Last week at ZendCon08 I took my ZCE test for PHP5 and passed.  I am now a ZCE!<br clear="left" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.kapustabrothers.com/2008/09/21/zend-certified-engineer/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Putting Twitter on Your Blog</title>
		<link>http://www.kapustabrothers.com/2008/04/27/putting-twitter-on-your-blog/</link>
		<comments>http://www.kapustabrothers.com/2008/04/27/putting-twitter-on-your-blog/#comments</comments>
		<pubDate>Mon, 28 Apr 2008 02:01:23 +0000</pubDate>
		<dc:creator>farrelley</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Atom]]></category>
		<category><![CDATA[Feeds]]></category>
		<category><![CDATA[PHP5]]></category>
		<category><![CDATA[RSS]]></category>
		<category><![CDATA[SimpleXML]]></category>
		<category><![CDATA[twitter]]></category>
		<category><![CDATA[XML]]></category>

		<guid isPermaLink="false">http://www.kapustabrothers.com/?p=477</guid>
		<description><![CDATA[Today I wanted to put my Twitter feed on my blog but didn&#8217;t really want to use a widget since that is for distribution purposes and I was looking for something more permanent. Twitter gives everyone the ability to see &#8230; <a href="http://www.kapustabrothers.com/2008/04/27/putting-twitter-on-your-blog/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Today I wanted to put my <a title="twitter" href="http://www.twitter.com">Twitter</a> feed on my blog but didn&#8217;t really want to use a widget since that is for distribution purposes and I was looking for something more permanent.  <a title="twitter" href="http://www.twitter.com/">Twitter</a> gives everyone the ability to see their tweets via rss or atom feeds so  I choose to use the rss feed.  Mine feed was located at <a title="rss feed" href="http://twitter.com/statuses/user_timeline/2376811.rss">http://twitter.com/statuses/user_timeline/2376811.rss</a>.  If you have PHP5 then parsing out an XML (rss) file is very easy thanks to the <a title="simpleXML" href="http://us2.php.net/manual/en/ref.simplexml.php">SimpleXML</a> functions.  One small problem that I ran into was that my host doesn&#8217;t allow me to read in the file like I wanted to.  I had to use <a title="Curl" href="http://us2.php.net/manual/en/ref.curl.php">CURL</a> to read the file save it locally and then reopen that file to parse it with SimpleXML.  Let step though the code.  First you have to get the data from the rss feed and use curl to store this as a new file on your local server.</p>
<pre class="brush: php; title: ; notranslate">
//open the remote fee from twitter.
$ch = curl_init(&quot;http://twitter.com/statuses/user_timeline/2376811.rss&quot;);
//overwrite this feed to a local file
$fp = fopen (&quot;twitter_feed.xml&quot;, &quot;w&quot;);
curl_setopt ($ch, CURLOPT_FILE, $fp);
curl_setopt ($ch, CURLOPT_HEADER, 0);
curl_exec ($ch);
curl_close ($ch);
fclose ($fp);
</pre>
<p>Then you have to parse the local file that you just created.  Twitter&#8217;s RSS feed puts the feed data in item nodes but nested in a channel node.  Here we will use SimpleXML (PHP5 Only!) and a foreach loop to parse through each item node.</p>
<pre class="brush: php; title: ; notranslate">
$xml = simplexml_load_file (&quot;twitter_feed.xml&quot;);
foreach ($xml-&amp;amp;gt;channel-&amp;amp;gt;item as $item) {
echo str_replace (&quot;farrelley:&quot;, &quot;&quot;, $item-&amp;amp;gt;description);
}
</pre>
<p>Basically that is the heart of the code.  Next we will put it all together into a function.  We will also add in a counter that when you call the function you can specify how many item nodes or tweets you want to see.</p>
<pre class="brush: php; title: ; notranslate">
// Display Twitter Feed
function getTwitterFeed($disp) {
//use Curl to get the feed and store it locally
$ch = curl_init (&quot;http://twitter.com/statuses/user_timeline/2376811.rss&quot;);
//open the local feed.
$fp = fopen (&quot;twitter_feed.xml&quot;, &quot;w&quot;);
//set the counter = 1 its the first time through the script/
$count = 1;
curl_setopt ($ch, CURLOPT_FILE, $fp);
curl_setopt ($ch, CURLOPT_HEADER, 0);
curl_exec ($ch);
curl_close ($ch);
fclose ($fp);
//parse through locally stored feed
$xml = simplexml_load_file (&quot;twitter_feed.xml&quot;);
foreach ($xml-&amp;amp;gt;channel-&amp;amp;gt;item as $item) {
//strip out my username each description has username: at beginning.
echo str_replace (&quot;farrelley:&quot;, &quot;&quot;, $item-&amp;amp;gt;description);
//if the count = the number to display then break out of foreach
if ($count == $disp) break;
//else increment count and continue.
else $count++;
}
}
</pre>
<p>Then you just have to add this call to the function where you want the data to be output.</p>
<pre class="brush: php; title: ; notranslate">
getTwitterFeed (1);
</pre>
<p>You can see this in action (on the right sidebar) on my other blog at <a title="Living in the District" href="http://www.livinginthedistrict.com/">Living in the District (http://www.livinginthedistrict.com/)</a>. Like always and comments please post comments.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kapustabrothers.com/2008/04/27/putting-twitter-on-your-blog/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Indexing PDF&#8217;s &#8211; The Why?</title>
		<link>http://www.kapustabrothers.com/2008/01/26/indexing-pdfs-the-why/</link>
		<comments>http://www.kapustabrothers.com/2008/01/26/indexing-pdfs-the-why/#comments</comments>
		<pubDate>Sat, 26 Jan 2008 15:51:29 +0000</pubDate>
		<dc:creator>farrelley</dc:creator>
				<category><![CDATA[Web Development & Programming]]></category>
		<category><![CDATA[Index PDF]]></category>
		<category><![CDATA[Indexing PDF's]]></category>
		<category><![CDATA[Lucene]]></category>
		<category><![CDATA[PDF]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[PHP5]]></category>
		<category><![CDATA[Search PDF]]></category>
		<category><![CDATA[Searching]]></category>
		<category><![CDATA[Searching PDF's]]></category>
		<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[Zend]]></category>
		<category><![CDATA[Zend Framework]]></category>
		<category><![CDATA[Zend Search Lucene]]></category>

		<guid isPermaLink="false">http://www.kapustabrothers.com/2008/01/26/indexing-pdfs-the-why/</guid>
		<description><![CDATA[After I published my small article on &#8220;Indexing PDF Documents with Zend_Search_Lucene&#8221; I was surprised to find it on the Zend Developer Zone blog. I had no idea that this would get the attention that it did and I thank &#8230; <a href="http://www.kapustabrothers.com/2008/01/26/indexing-pdfs-the-why/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.kapustabrothers.com/journal/wp-content/uploads/2008/01/pdf_icon_large.thumbnail.jpg" alt="PDF Icon" hspace="5" width="73" height="73" align="left" />After I published my small article on &#8220;<a title="Permanent Link: Indexing PDF Documents with Zend_Search_Lucene" rel="bookmark" href="http://www.kapustabrothers.com/2008/01/20/indexing-pdf-documents-with-zend_search_lucene/">Indexing PDF Documents with Zend_Search_Lucene</a>&#8221; I was surprised to find it on the <a title="Zend Developer Zone Blog" href="http://devzone.zend.com/public/view">Zend Developer Zone blog</a>.  I had no idea that this would get the attention that it did and I thank everyone for checking it out.  So now that you know how you would index a PDF, you may be asking why the heck would you do this?</p>
<p><img src="http://www.kapustabrothers.com/journal/wp-content/uploads/2008/01/img-165-96x96.thumbnail.jpg" alt="Lucene" hspace="5" align="right" />Many companies large and small have support centers, either be in internal help desks or external help desks.  In addition to the help desk, many companies publish PDF documents such as manuals, specs, services guides, and setup/connections guides etc.  So instead of a help desk employee (or anyone) remembering what manual does what and what page everything is on, you can simple index these PDF files for easy searching.  Just think about it this way, say you have 50 products all having 5 manuals each, that&#8217;s 250 manuals that you have to keep track of (not including how many pages each manual has).  The easy way would be to index the PDF&#8217;s, add the necessary metadata to the manual, build a search form around a web page and wa-la.  You have a easy way to search PDF files finding information quickly for a customer or whoever, and saving loads of time searching page by page for the same information.</p>
<p>Many companies do this, and many companies bloat how they are the best at doing it.  So next time you are looking for a searchable PDF solution, remember that anyone can do this and it&#8217;s easy to do yourself.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kapustabrothers.com/2008/01/26/indexing-pdfs-the-why/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Indexing PDF Documents with Zend_Search_Lucene</title>
		<link>http://www.kapustabrothers.com/2008/01/20/indexing-pdf-documents-with-zend_search_lucene/</link>
		<comments>http://www.kapustabrothers.com/2008/01/20/indexing-pdf-documents-with-zend_search_lucene/#comments</comments>
		<pubDate>Mon, 21 Jan 2008 00:13:05 +0000</pubDate>
		<dc:creator>farrelley</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Web Development & Programming]]></category>
		<category><![CDATA[Index PDF]]></category>
		<category><![CDATA[Indexing PDF's]]></category>
		<category><![CDATA[Lucene]]></category>
		<category><![CDATA[PDF]]></category>
		<category><![CDATA[PHP5]]></category>
		<category><![CDATA[Search PDF]]></category>
		<category><![CDATA[Searching]]></category>
		<category><![CDATA[Searching PDF's]]></category>
		<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[Zend]]></category>
		<category><![CDATA[Zend Framework]]></category>
		<category><![CDATA[Zend Search Lucene]]></category>

		<guid isPermaLink="false">http://www.kapustabrothers.com/2008/01/20/indexing-pdf-documents-with-zend_search_lucene/</guid>
		<description><![CDATA[Part I I along with many others have been trying and asking how to index and search PDF files. Once Zend released its Framework, which is a port of Java Lucene to PHP, I decided to jump on board and &#8230; <a href="http://www.kapustabrothers.com/2008/01/20/indexing-pdf-documents-with-zend_search_lucene/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><strong>Part I</strong></p>
<p>I along with many others have been trying and asking how to index and search PDF files.  Once Zend released its <a title="Zend Framework" href="http://framework.zend.com/home">Framework</a>, which is a port of Java Lucene to PHP, I decided to jump on board and find a way to index and search PDF files. So… Lets get started.</p>
<p><strong>The Setup&#8230; </strong></p>
<p>We will use <a title="XPDF" href="http://www.foolabs.com/xpdf/">XPDF</a> to parse the PDF files and <a title="Zend Framework" href="http://framework.zend.com/manual/en/zend.search.lucene.html">Zend_Search_Lucene</a> for indexing and searching.   First we need to read the PDF files and get relevant PDF information such as Title, Author, Modification Date, PDF size, and number of pages in the file.   To do all this, download <a title="XPDF" href="http://www.foolabs.com/xpdf/">XPDF</a> and copy the pdftotext and pdfinfo into a directory on your web server.   The pdfinfo call will get us metadata of the PDF and the pdftotext will convert the PDF to a text file.  Converting the PDF to a text file will allow us to store the data in the index.</p>
<p>Next we will have to download the <a title="Zend Framework" href="http://framework.zend.com/home">Zend Framework</a> and copy it over to the web server.  You  can just copy over the Zend_Search folder and the necessary functions but for now we will make it easy and copy everything to the server.</p>
<p><strong>The Code&#8230; </strong></p>
<p>Lets start by parsing a file and storing the data into the index file.  First we need to make sure that our include path is pointed to the working directory and that we can access the <a title="Zend Framework" href="http://framework.zend.com/manual/en/zend.search.lucene.html">Zend Search Lucene functions</a>.</p>
<pre class="brush: php; title: ; notranslate">
/** Zend_Search_Lucene */
ini_set('include_path','/path/to/working/directory/);
require_once 'Zend/Search/Lucene.php';
</pre>
<p><span id="more-417"></span>Next we create and index or open an existing index. Here we will call the index pdf_index.  This is created as a directory with index files inside it.  When you call the create index everything will be created.  There is no need to create the pdf_index manually.</p>
<pre class="brush: php; title: ; notranslate">
/** if the index exists then open it.  Otherwise we will create the index */
if(is_dir(&quot;/path/to/index/location/pdf_index/&quot;) == 1) {
// Open existing index
$index = Zend_Search_Lucene::open('/path/to/index/location/pdf_index/');
}
else {
//Create a new index
$index = Zend_Search_Lucene::create('/path/to/index/location/pdf_index/');
}
</pre>
<p>After the index we have to instantiate the document object which will be used to add data to the index.</p>
<pre class="brush: php; title: ; notranslate">
$doc = new Zend_Search_Lucene_Document();
</pre>
<p>Next is the most important part of the parsing.  We will use <a title="XPDF" href="http://www.foolabs.com/xpdf/">XPDF</a>&#8216;s pdfinfo to get metadata about the PDF file.  This is a critical part of indexing a PDF since it will get the data that we need in order parse through the actual PDF file.  We will store this data in an array and parse through it to get the information we need.  Not all the metadata will be used but you can certainly use the additional data if you want.</p>
<pre class="brush: php; title: ; notranslate">
//Name of the pdf document with out the extension
$pdf_filename = &quot;KDS50A3000&quot;;
// get pdf information
$output = shell_exec (&quot;pdfinfo &quot;.$pdf_filename.&quot;.pdf&quot;);
//Gets the metadata
$data = explode(&quot;\n&quot;, $output); //puts it into an array
//Get the metadata that we need from the PDF.
//Parse through the Array and store in variables. */
for($c=0; $c &lt; count($data); $c++) {
//Number of Pages
if(stristr($data[$c],&quot;pages&quot;) == true) {
$pagestr = $data[$c];
}
//Author
if(stristr($data[$c],&quot;author&quot;) == true) {
$authorstr = $data[$c];
}
//Title
if(stristr($data[$c],&quot;title&quot;) == true) {
$titlestr = $data[$c];
}
//Modification Date
if(stristr($data[$c],&quot;ModDate&quot;) == true) {
$moddatestr = $data[$c];
}
//File Size
if(stristr($data[$c],&quot;File size&quot;) == true) {
$sizestr = $data[$c];
}
}
//Remove the titles to the metadata
$pages = trim(substr($pagestr,6));
$author = trim(substr($authorstr,7));
$title = trim(substr($titlestr,6));
$date = trim(substr($moddatestr,8));
$size = get_size(trim(substr(trim(substr($sizestr,10)),0,-5)));
</pre>
<p>With the file size we call another function called get_size to put the size in a human readable form.</p>
<pre class="brush: php; title: ; notranslate">
function get_size($size) {
$bytes = array('B','KB','MB','GB','TB');
foreach($bytes as $val) {
if($size &gt; 1024) {
$size = $size / 1024;
}
else {
break;
}
}
return round($size, 2).&quot; &quot;.$val;
}
</pre>
<p>Now we have all the necessary data that we need to parse through the PDF file, here is how we will do it.  Since we know how many pages there are in the PDF we will create a for loop and increment through each page.  So if we have a 2 page PDF file, we will convert page 1 and store it in the index then convert page two and store it in the index.  Each page will be stored as a separate document in the index.  This allows us to specify what page of the PDF the relevant search terms are referencing.</p>
<p>Below is the code that does just that.</p>
<pre class="brush: php; title: ; notranslate">
// parse the pages into the index
for($i=1; $i &lt; = $pages; $i++) {
//Here we will loop through all the page in the PDF

exec (&quot;pdftotext -f &quot;.$i.&quot; -l &quot;.$i.&quot; &quot;.$pdf_filename.&quot;.pdf &quot;.$pdf_filename.$i.&quot;.txt&quot;);
// Store data in the document object that will be commited to the index at the end of the loop
$doc-&gt;addField(Zend_Search_Lucene_Field::Keyword('id', $i)); //Stores the ID
//Stores the File name of the PDF
$doc-&gt;addField(Zend_Search_Lucene_Field::Text('url', $pdf_filename.&quot;.pdf&quot;));
//Here we will open the txt file (1 page of the pdf) and read it in to a String Variable
//Then we will store that sting in the document object for the index.
$filename = $pdf_filename.$i.&quot;.txt&quot;;
$handle = fopen ($filename, &quot;rb&quot;);
$docContent = fread($handle, filesize($filename));
fclose($handle);
$doc-&gt;addField(Zend_Search_Lucene_Field::Text('contents', $docContent));
//Stores the page # so that we can open this page up
$doc-&gt;addField(Zend_Search_Lucene_Field::UnIndexed('page', $i));
// Add all the data stored in the document object into the index.
$index-&gt;addDocument($doc);
//get rid of the txt file that the page data was stored in.
shell_exec (&quot;rm &quot;.$pdf_filename.$i.&quot;.txt&quot;);
echo &quot;Page &quot;.$i.&quot; Complete&quot;;
}
//Optimize index so that things run better.
//This is done after all the pages are inserted into the index
$index-&gt;optimize();
//Get some index data
$indexSize = $index-&gt;count();
$documents = $index-&gt;numDocs();
echo &quot;Index Size: &quot;.$indexSize;
echo &quot;Document Count: &quot;.$documents;
</pre>
<p>That&#8217;s pretty much it for putting the PDF data into the index.  Now all that&#8217;s left is searching the index. which will be addressed in another post.</p>
<p><strong>Let&#8217;s review a little&#8230;</strong></p>
<p>Our goal was to index PDF files for searching. Using <a title="XPDF" href="http://www.foolabs.com/xpdf/">XPDF</a>,  <a title="Zend Framework" href="http://framework.zend.com/manual/en/zend.search.lucene.html">Zend Search Lucene</a> from the Zend Framework, and a PDF file, we were able to get metadata from the PDF file and parse the file page by page while inserting data into the index.   What I didn&#8217;t get into was how the index works, what <a title="Zend Framework" href="http://framework.zend.com/manual/en/zend.search.lucene.html#zend.search.lucene.index-creation.understanding-field-types">Zend_Search_Lucene_Fields</a> work best, and what is index and what is not.  That is all documented nicely at the <a title="Zend Framework" href="http://framework.zend.com/manual/en/">Zend Framework site</a>.</p>
<p>Also, this code is simple. It works with one PDF file, doesn&#8217;t check to see if the PDF is already indexed, and so forth.   However, it can be very easily modified to do things dynamically.  This is just a prototype to show that indexing and searching PDF&#8217;s can be done.  Part II will be posted soon and will show you how to search the index.    I also suggest looking at the following sites that may give you more incite on implementing <a title="Zend Framework" href="http://framework.zend.com/manual/en/zend.search.lucene.html">Zend Search Lucene</a>.</p>
<ul>
<li><a title="Content Indexing with Zend_Search_Lucene" href="http://www.slideshare.net/shahar/content-indexing-with-zendsearchlucene/">Content Indexing with Zend_Search_Lucene</a></li>
<li><a title="Roll Your Own Search Engine with Zend_Search_Lucene" href="http://devzone.zend.com/node/view/id/91">Roll Your Own Search Engine with Zend_Search_Lucene</a></li>
<li><a title="Chapter 29. Zend_Search_Lucene" href="http://framework.zend.com/manual/en/zend.search.lucene.html">Chapter 29. Zend_Search_Lucene</a></li>
<li><a title="Creating A Fulltext Search Engine In PHP 5 With The Zend Framework's Zend Search Lucene" href="http://www.phpriot.com/articles/zend-search-lucene">Creating A Fulltext Search Engine In PHP 5 With The Zend Framework&#8217;s Zend Search Lucene</a></li>
</ul>
<p>For now, enjoy!  Oh yeah&#8230;here is the <a title="PDF Index Zip" href="http://www.kapustabrothers.com/dl/pdf_index.zip">Zip File</a> of the data files.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kapustabrothers.com/2008/01/20/indexing-pdf-documents-with-zend_search_lucene/feed/</wfw:commentRss>
		<slash:comments>24</slash:comments>
		</item>
		<item>
		<title>SilverStripe Fist Glance</title>
		<link>http://www.kapustabrothers.com/2007/09/14/silverstripe-fist-glance/</link>
		<comments>http://www.kapustabrothers.com/2007/09/14/silverstripe-fist-glance/#comments</comments>
		<pubDate>Fri, 14 Sep 2007 12:50:35 +0000</pubDate>
		<dc:creator>farrelley</dc:creator>
				<category><![CDATA[Web Development & Programming]]></category>
		<category><![CDATA[Blogging]]></category>
		<category><![CDATA[CMS]]></category>
		<category><![CDATA[Drupal]]></category>
		<category><![CDATA[PHP5]]></category>
		<category><![CDATA[SilverStripe]]></category>
		<category><![CDATA[Wordpress]]></category>

		<guid isPermaLink="false">http://www.kapustabrothers.com/2007/09/14/silverstripe-fist-glance/</guid>
		<description><![CDATA[Read/Write has posted a good article about SilverStripe, a new lightweight CMS built on PHP5 and Ajax. I checked out the demo that they had up and it really looks pretty good. I haven’t done an install or looked at &#8230; <a href="http://www.kapustabrothers.com/2007/09/14/silverstripe-fist-glance/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.readwriteweb.com/archives/silverstripe_open_source_cms_google_summer_of_code.php#more">Read/Write has posted a good article</a> about <a href="http://www.silverstripe.com/">SilverStripe</a>, a new lightweight CMS built on <a href="http://www.php.net/">PHP5 </a>and Ajax. I checked out the demo that they had up and it really looks pretty good. I haven’t done an install or looked at the code to change layout, but from what I can see, it looks fairly easily.</p>
<p>They have a couple of good starts on modules too. Some of these include</p>
<ul>
<li> E-commerce</li>
<li> Forum</li>
<li> Flickr</li>
<li> Gallery</li>
<li> Google Maps</li>
<li> Blog</li>
</ul>
<p>By far not as extensive as <a href="http://www.wordpress.org/">WordPress </a>or <a href="http://www.drupal.org/">Drupal </a>but it’s a good start. I’m going to keep an eye on this <a href="http://www.silverstripe.com/">New Zealand Company</a> as they might make a bigger splash into the CMS world here soon. I would say that this CMS Package is a mix between a blogging CMS package and an Enterprise CMS package. Look for more to come on this topic.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kapustabrothers.com/2007/09/14/silverstripe-fist-glance/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

