<?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/"
	xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Cake Explorer's Weblog</title>
	<atom:link href="http://cakeexplorer.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://cakeexplorer.wordpress.com</link>
	<description>Just another WordPress.com weblog</description>
	<lastBuildDate>Mon, 17 Dec 2007 08:54:58 +0000</lastBuildDate>
	<generator>http://wordpress.com/</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<cloud domain='cakeexplorer.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://www.gravatar.com/blavatar/fd7215aff8222de350257d67cab5d5f0?s=96&#038;d=http://s.wordpress.com/i/buttonw-com.png</url>
		<title>Cake Explorer's Weblog</title>
		<link>http://cakeexplorer.wordpress.com</link>
	</image>
			<item>
		<title>Cake script in app folder.</title>
		<link>http://cakeexplorer.wordpress.com/2007/12/14/cake-script-in-app-folder/</link>
		<comments>http://cakeexplorer.wordpress.com/2007/12/14/cake-script-in-app-folder/#comments</comments>
		<pubDate>Fri, 14 Dec 2007 14:59:13 +0000</pubDate>
		<dc:creator>cakeexplorer</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://cakeexplorer.wordpress.com/2007/12/14/cake-script-in-app-folder/</guid>
		<description><![CDATA[Somebody like to have one installation of cake core and many applications with it.
But  when you have many projects written in different time in diferent versions of cake this is impossible.
Appears problem how to easy use cake shells if you can&#8217;t add this util to path.
I propose next solution.
All we need is call modified script [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cakeexplorer.wordpress.com&blog=1571352&post=19&subd=cakeexplorer&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Somebody like to have one installation of cake core and many applications with it.</p>
<p>But  when you have many projects written in different time in diferent versions of cake this is impossible.</p>
<p>Appears problem how to easy use cake shells if you can&#8217;t add this util to path.</p>
<p>I propose next solution.</p>
<p>All we need is call modified script from app folder.</p>
<p><em>Example:</em></p>
<p><em>  cd /var/www/shop/app</em></p>
<p><em>  ./cake bake</em></p>
<p><strong>Windows version <em>cake.bat</em></strong><br />
@echo.<br />
@echo off<br />
@set path=%path%;C:\dev\_tools_\graphviz-2.16\bin\</p>
<p>SET app=%0<br />
SET app1=%CD%<br />
 <br />
cd ..\cake\console<br />
SET lib=%~dp0</p>
<p>php -q &#8220;%CD%\cake.php&#8221; -working &#8220;%app1%&#8221;  %*</p>
<p>echo.<br />
cd %app1%<br />
@echo on</p>
<p><strong>Unix version: ./cake</strong></p>
<p>#!/bin/bash<br />
clear</p>
<p>APP=`pwd`<br />
APP1=`pwd`<br />
cd ../cake/console<br />
LIB=${0/%cake/}</p>
<p>echo &#8220;Hello $USER,&#8221;</p>
<p>exec php -q ${LIB}cake.php -working &#8220;${APP1}&#8221; &#8220;$@&#8221;</p>
<p>cd ${APP1}<br />
@echo on</p>
<p>echo &#8221; &#8220;;</p>
<p>exit;</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/cakeexplorer.wordpress.com/19/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/cakeexplorer.wordpress.com/19/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/cakeexplorer.wordpress.com/19/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/cakeexplorer.wordpress.com/19/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/cakeexplorer.wordpress.com/19/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/cakeexplorer.wordpress.com/19/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/cakeexplorer.wordpress.com/19/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/cakeexplorer.wordpress.com/19/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/cakeexplorer.wordpress.com/19/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/cakeexplorer.wordpress.com/19/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/cakeexplorer.wordpress.com/19/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/cakeexplorer.wordpress.com/19/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cakeexplorer.wordpress.com&blog=1571352&post=19&subd=cakeexplorer&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://cakeexplorer.wordpress.com/2007/12/14/cake-script-in-app-folder/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/2f11c840ab7eccb6788ab0c4331f5dad?s=96&#38;d=identicon" medium="image">
			<media:title type="html">CakeExplorer</media:title>
		</media:content>
	</item>
		<item>
		<title>Build image of current cake schema.</title>
		<link>http://cakeexplorer.wordpress.com/2007/12/14/build-image-of-current-cake-schema/</link>
		<comments>http://cakeexplorer.wordpress.com/2007/12/14/build-image-of-current-cake-schema/#comments</comments>
		<pubDate>Fri, 14 Dec 2007 08:46:33 +0000</pubDate>
		<dc:creator>cakeexplorer</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://cakeexplorer.wordpress.com/2007/12/14/build-image-of-current-cake-schema/</guid>
		<description><![CDATA[
Simple task for build graphic representation of cake schema based on graphwiz.
For this task need to have installed graphviz in path or use &#8220;-tool path/to/graphwiz/dot&#8221;
Graphviz youcan dowload from  http://www.graphviz.org/Download..php 
 Live example was generated on well known aplication &#8211; Bakery. I also include bakery schema made in designer. For me generated graphviz schema looks more pretty and [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cakeexplorer.wordpress.com&blog=1571352&post=18&subd=cakeexplorer&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p><a href="http://cakeexplorer.files.wordpress.com/2007/12/bakery.png" title="Example of schema - bakery application"></a></p>
<p>Simple task for build graphic representation of cake schema based on graphwiz.</p>
<p>For this task need to have installed graphviz in path or use &#8220;-tool path/to/graphwiz/dot&#8221;</p>
<p>Graphviz youcan dowload from  <a href="http://www.graphviz.org/Download..php">http://www.graphviz.org/Download..php</a> </p>
<p> Live example was generated on well known aplication &#8211; Bakery. I also include bakery schema made in designer. For me generated graphviz schema looks more pretty and easier to explore.</p>
<p><a href="http://cakeexplorer.files.wordpress.com/2007/12/bakery.png" title="Bakery DBDesigner schema.">Bakery DBDesigner schema.</a></p>
<p><a href="http://cakeexplorer.files.wordpress.com/2007/12/model_bakery.png" title="Example of schema - bakery application">Example of schema &#8211; bakery application</a></p>
<p><span style="color:#000000;"><span style="color:#0000bb;"></span></span></p>
<p><span style="color:#000000;"><span style="color:#0000bb;"><font face="Courier New">&lt;?php</font></span></span><span style="color:#000000;"><span style="color:#0000bb;"><font face="Courier New"><font face="Courier New"><span style="color:#ff8000;">/**<br />
 * <br />
 * <br />
 * PHP versions 4 and 5<br />
 *<br />
 * Copyright (c) Tomenko Yevgeny<br />
 *<br />
 * Licensed under The MIT License<br />
 * Redistributions of files must retain the above copyright notice.<br />
 *<br />
 */</span><span style="color:#0000bb;">uses</span><span style="color:#007700;">(</span><span style="color:#dd0000;">&#8216;Folder&#8217;</span><span style="color:#007700;">,</span><span style="color:#dd0000;">&#8216;File&#8217;</span><span style="color:#007700;">,</span><span style="color:#dd0000;">&#8216;model&#8217;</span><span style="color:#007700;">.</span><span style="color:#0000bb;">DS</span><span style="color:#007700;">.</span><span style="color:#dd0000;">&#8216;connection_manager&#8217;</span></font></font></span></span><span style="color:#000000;"><span style="color:#0000bb;"><font face="Courier New"> </font></span></span><span style="color:#000000;"><span style="color:#0000bb;"><font face="Courier New"><font face="Courier New"><span style="color:#007700;">);</span></font><font face="Courier New"><span style="color:#007700;">class <span style="color:#0000bb;">VisualizeShell </span><span style="color:#007700;">extends </span><span style="color:#0000bb;">Shell </span><font face="Courier New"><span style="color:#007700;">{       var </span><span style="color:#0000bb;">$DOC_DIR</span></font></span></font></font></span></span><span style="color:#000000;"><span style="color:#0000bb;"><font face="Courier New"> </font></span></span><font face="Courier New"><span style="color:#007700;">;<br />
    var </span><span style="color:#0000bb;">$PREFIX</span></font><font face="Courier New"><span style="color:#007700;">;<br />
    var </span><span style="color:#0000bb;">$graphToolPath </span><span style="color:#007700;">= </span><span style="color:#dd0000;">&#8216;dot.exe&#8217;</span></font><span style="color:#007700;"><font face="Courier New">;<br />
</font></span><font face="Courier New"><span style="color:#ff8000;">// cake visualize -tool C:\dev\_tools_\graphviz-2.16\bin\dot.exe<br />
    </span><span style="color:#007700;">function </span><span style="color:#0000bb;">help</span></font><font face="Courier New"><span style="color:#007700;">() {<br />
        </span><span style="color:#0000bb;">$this</span><span style="color:#007700;">-&gt;</span><span style="color:#0000bb;">out</span><span style="color:#007700;">(</span><span style="color:#dd0000;">&#8216;CakePHP visualise:&#8217;</span></font><font face="Courier New"><span style="color:#007700;">);<br />
        </span><span style="color:#0000bb;">$this</span><span style="color:#007700;">-&gt;</span><span style="color:#0000bb;">out</span><span style="color:#007700;">(</span><span style="color:#dd0000;">&#8220;cake visualise [-tool graphVizTool]&#8220;</span></font><font face="Courier New"><span style="color:#007700;">);<br />
        </span><span style="color:#0000bb;">$this</span><span style="color:#007700;">-&gt;</span><span style="color:#0000bb;">hr</span></font><font face="Courier New"><span style="color:#007700;">();<br />
    }</span></font><font face="Courier New"><span style="color:#007700;">    function <span style="color:#0000bb;">initialize</span><font face="Courier New"><span style="color:#007700;">() {<br />
        </span><span style="color:#0000bb;">$this</span><span style="color:#007700;">-&gt;</span><span style="color:#0000bb;">DOC_DIR </span><span style="color:#007700;">= </span><span style="color:#0000bb;">APP </span><span style="color:#007700;">. </span><span style="color:#dd0000;">&#8220;doc&#8221;</span></font><font face="Courier New"><span style="color:#007700;">;<br />
        </span><span style="color:#0000bb;">$this</span><span style="color:#007700;">-&gt;</span><span style="color:#0000bb;">PREFIX</span><span style="color:#007700;">= </span><span style="color:#dd0000;">&#8220;img_&#8221;</span></font><font face="Courier New"><span style="color:#007700;">;<br />
        if (isset(</span><span style="color:#0000bb;">$this</span><span style="color:#007700;">-&gt;</span><span style="color:#0000bb;">params</span><span style="color:#007700;">[</span><span style="color:#dd0000;">'tool'</span></font><font face="Courier New"><span style="color:#007700;">])) {<br />
            </span><span style="color:#0000bb;">$this</span><span style="color:#007700;">-&gt;</span><span style="color:#0000bb;">graphToolPath </span><span style="color:#007700;">=</span><span style="color:#0000bb;">$this</span><span style="color:#007700;">-&gt;</span><span style="color:#0000bb;">params</span><span style="color:#007700;">[</span><span style="color:#dd0000;">'tool'</span></font><font face="Courier New"><span style="color:#007700;">];<br />
        }<br />
        return </span><span style="color:#0000bb;">true</span></font><font face="Courier New"><span style="color:#007700;">;<br />
    }    <br />
    function </span><span style="color:#0000bb;">main</span></font></span></font><font face="Courier New"><span style="color:#007700;"><font face="Courier New"><span style="color:#007700;">() { <br />
        </span><span style="color:#0000bb;">$this</span><span style="color:#007700;">-&gt;</span><span style="color:#0000bb;">help</span></font><font face="Courier New"><span style="color:#007700;">();<br />
        </span><span style="color:#0000bb;">$this</span><span style="color:#007700;">-&gt;</span><span style="color:#0000bb;">doVisualize</span></font><font face="Courier New"><span style="color:#007700;">();    <br />
    }<br />
    <br />
    function </span><span style="color:#0000bb;">getSchemaInfo</span><span style="color:#007700;">(</span><span style="color:#0000bb;">$modelName</span><span style="color:#007700;">,</span><span style="color:#0000bb;">$table_name</span></font><font face="Courier New"><span style="color:#007700;">) {<br />
        </span><span style="color:#0000bb;">$attrs </span></font><font face="Courier New"><span style="color:#007700;">= array();<br />
        if (</span><span style="color:#0000bb;">App</span><span style="color:#007700;">::</span><span style="color:#0000bb;">import</span><span style="color:#007700;">(</span><span style="color:#dd0000;">&#8216;model&#8217;</span><span style="color:#007700;">,</span><span style="color:#0000bb;">$modelName</span></font><font face="Courier New"><span style="color:#007700;">)) {<br />
            </span><span style="color:#0000bb;">$model </span><span style="color:#007700;">= &amp; new </span><span style="color:#0000bb;">$modelName</span></font><font face="Courier New"><span style="color:#007700;">();<br />
            </span><span style="color:#0000bb;">$attrs</span><span style="color:#007700;">=</span><span style="color:#0000bb;">$model</span><span style="color:#007700;">-&gt;</span><span style="color:#0000bb;">schema</span></font><font face="Courier New"><span style="color:#007700;">();<br />
            return </span><span style="color:#0000bb;">$attrs</span></font><font face="Courier New"><span style="color:#007700;">;<br />
        } else {<br />
            </span><span style="color:#0000bb;">$DynamicModel </span><span style="color:#007700;">= new </span><span style="color:#0000bb;">Model</span><span style="color:#007700;">(array(</span><span style="color:#dd0000;">&#8216;name&#8217;</span><span style="color:#007700;">=&gt; </span><span style="color:#0000bb;">$modelName</span><span style="color:#007700;">, </span><span style="color:#dd0000;">&#8216;table&#8217;</span><span style="color:#007700;">=&gt; </span><span style="color:#0000bb;">$table_name</span></font><font face="Courier New"><span style="color:#007700;">)); <br />
            </span><span style="color:#0000bb;">$attrs</span><span style="color:#007700;">=</span><span style="color:#0000bb;">$DynamicModel</span><span style="color:#007700;">-&gt;</span><span style="color:#0000bb;">schema</span></font><font face="Courier New"><span style="color:#007700;">();<br />
            return </span><span style="color:#0000bb;">$attrs</span></font><font face="Courier New"><span style="color:#007700;">;<br />
        }<br />
        return </span><span style="color:#0000bb;">false</span></font><font face="Courier New"><span style="color:#007700;">;<br />
    }     <br />
    <br />
    <br />
    function </span><span style="color:#0000bb;">doVisualize</span></font><font face="Courier New"><span style="color:#007700;">() {<br />
        </span><span style="color:#0000bb;">$header</span><span style="color:#007700;">=</span><span style="color:#0000bb;">$this</span><span style="color:#007700;">-&gt;</span><span style="color:#0000bb;">PREFIX</span><span style="color:#007700;">+</span><span style="color:#0000bb;">strftime</span><span style="color:#007700;">(</span><span style="color:#dd0000;">&#8216;%Y-%m-%d %H:%M:%S&#8217;</span><span style="color:#007700;">,</span><span style="color:#0000bb;">time</span></font><font face="Courier New"><span style="color:#007700;">());<br />
        </span><span style="color:#0000bb;">$version</span><span style="color:#007700;">=</span><span style="color:#0000bb;">0</span></font><font face="Courier New"><span style="color:#007700;">;<br />
        if (</span><span style="color:#0000bb;">$version </span><span style="color:#007700;">&gt; </span><span style="color:#0000bb;">0</span></font><font face="Courier New"><span style="color:#007700;">) {<br />
          </span><span style="color:#0000bb;">$header </span><span style="color:#007700;">.= </span><span style="color:#dd0000;">&#8220;\\nSchema version $version&#8221;</span></font><font face="Courier New"><span style="color:#007700;">;<br />
        }<br />
        </span><span style="color:#0000bb;">$tableInfos </span></font><font face="Courier New"><span style="color:#007700;">= array();<br />
        foreach(</span><span style="color:#0000bb;">$this</span><span style="color:#007700;">-&gt;</span><span style="color:#0000bb;">getAllTables</span><span style="color:#007700;">() as </span><span style="color:#0000bb;">$table_name</span></font><font face="Courier New"><span style="color:#007700;">) {<br />
            </span><span style="color:#0000bb;">$this</span><span style="color:#007700;">-&gt;</span><span style="color:#0000bb;">out</span><span style="color:#007700;">(</span><span style="color:#dd0000;">&#8220;Looking at table: {$table_name}&#8221;</span></font><font face="Courier New"><span style="color:#007700;">);<br />
            </span><span style="color:#0000bb;">$modelName</span><span style="color:#007700;">=</span><span style="color:#0000bb;">$this</span><span style="color:#007700;">-&gt;</span><span style="color:#0000bb;">_modelName</span><span style="color:#007700;">(</span><span style="color:#0000bb;">$table_name</span></font><font face="Courier New"><span style="color:#007700;">);<br />
            </span><span style="color:#0000bb;">$tableInfos</span><span style="color:#007700;">[</span><span style="color:#0000bb;">$modelName</span><span style="color:#007700;">] = </span><span style="color:#0000bb;">$this</span><span style="color:#007700;">-&gt;</span><span style="color:#0000bb;">getSchemaInfo</span><span style="color:#007700;">(</span><span style="color:#0000bb;">$modelName</span><span style="color:#007700;">,</span><span style="color:#0000bb;">$table_name</span></font><font face="Courier New"><span style="color:#007700;">);<br />
        }</span></font><font face="Courier New"><span style="color:#007700;">        if (!<span style="color:#0000bb;">file_exists</span><span style="color:#007700;">(</span><span style="color:#0000bb;">$this</span><span style="color:#007700;">-&gt;</span><span style="color:#0000bb;">DOC_DIR</span><span style="color:#007700;">) || !</span><span style="color:#0000bb;">is_dir</span><span style="color:#007700;">(</span><span style="color:#0000bb;">$this</span><span style="color:#007700;">-&gt;</span><span style="color:#0000bb;">DOC_DIR</span><font face="Courier New"><span style="color:#007700;">)) {<br />
            </span><span style="color:#0000bb;">$this</span><span style="color:#007700;">-&gt;</span><span style="color:#0000bb;">out</span><span style="color:#007700;">(</span><span style="color:#dd0000;">&#8220;Creating directory \&#8221;{$this-&gt;DOC_DIR}\&#8221;&#8230;&#8221;</span></font><font face="Courier New"><span style="color:#007700;">);<br />
            </span><span style="color:#0000bb;">$folder </span><span style="color:#007700;">= &amp; new </span><span style="color:#0000bb;">Folder</span><span style="color:#007700;">(</span><span style="color:#0000bb;">$this</span><span style="color:#007700;">-&gt;</span><span style="color:#0000bb;">DOC_DIR</span><span style="color:#007700;">, </span><span style="color:#0000bb;">true</span></font><font face="Courier New"><span style="color:#007700;">);<br />
        }<br />
        </span><span style="color:#0000bb;">$this</span><span style="color:#007700;">-&gt;</span><span style="color:#0000bb;">writeDotFile</span><span style="color:#007700;">(</span><span style="color:#0000bb;">$header</span><span style="color:#007700;">, </span><span style="color:#0000bb;">$this</span><span style="color:#007700;">-&gt;</span><span style="color:#0000bb;">DOC_DIR</span><span style="color:#007700;">, </span><span style="color:#0000bb;">$tableInfos</span></font><font face="Courier New"><span style="color:#007700;">);<br />
    }       function </span><span style="color:#0000bb;">getAllTables</span><span style="color:#007700;">(</span><span style="color:#0000bb;">$useDbConfig </span><span style="color:#007700;">= </span><span style="color:#dd0000;">&#8216;default&#8217;</span></font></span></font></span></font><font face="Courier New"><span style="color:#007700;"><font face="Courier New"><span style="color:#007700;">) {<br />
        </span><span style="color:#0000bb;">$db </span><span style="color:#007700;">=&amp; </span><span style="color:#0000bb;">ConnectionManager</span><span style="color:#007700;">::</span><span style="color:#0000bb;">getDataSource</span><span style="color:#007700;">(</span><span style="color:#0000bb;">$useDbConfig</span></font><font face="Courier New"><span style="color:#007700;">);<br />
        </span><span style="color:#0000bb;">$usePrefix </span><span style="color:#007700;">= empty(</span><span style="color:#0000bb;">$db</span><span style="color:#007700;">-&gt;</span><span style="color:#0000bb;">config</span><span style="color:#007700;">[</span><span style="color:#dd0000;">'prefix'</span><span style="color:#007700;">]) ? </span><span style="color:#dd0000;">&#8221; </span><span style="color:#007700;">: </span><span style="color:#0000bb;">$db</span><span style="color:#007700;">-&gt;</span><span style="color:#0000bb;">config</span><span style="color:#007700;">[</span><span style="color:#dd0000;">'prefix'</span></font><font face="Courier New"><span style="color:#007700;">];<br />
        if (</span><span style="color:#0000bb;">$usePrefix</span></font><font face="Courier New"><span style="color:#007700;">) {<br />
            </span><span style="color:#0000bb;">$tables </span></font><font face="Courier New"><span style="color:#007700;">= array();<br />
            foreach (</span><span style="color:#0000bb;">$db</span><span style="color:#007700;">-&gt;</span><span style="color:#0000bb;">listSources</span><span style="color:#007700;">() as </span><span style="color:#0000bb;">$table</span></font><font face="Courier New"><span style="color:#007700;">) {<br />
                if (!</span><span style="color:#0000bb;">strncmp</span><span style="color:#007700;">(</span><span style="color:#0000bb;">$table</span><span style="color:#007700;">, </span><span style="color:#0000bb;">$usePrefix</span><span style="color:#007700;">, </span><span style="color:#0000bb;">strlen</span><span style="color:#007700;">(</span><span style="color:#0000bb;">$usePrefix</span></font><font face="Courier New"><span style="color:#007700;">))) {<br />
                    </span><span style="color:#0000bb;">$tables</span><span style="color:#007700;">[] = </span><span style="color:#0000bb;">substr</span><span style="color:#007700;">(</span><span style="color:#0000bb;">$table</span><span style="color:#007700;">, </span><span style="color:#0000bb;">strlen</span><span style="color:#007700;">(</span><span style="color:#0000bb;">$usePrefix</span></font><font face="Courier New"><span style="color:#007700;">));<br />
                }<br />
            }<br />
        } else {<br />
            </span><span style="color:#0000bb;">$tables </span><span style="color:#007700;">= </span><span style="color:#0000bb;">$db</span><span style="color:#007700;">-&gt;</span><span style="color:#0000bb;">listSources</span></font><font face="Courier New"><span style="color:#007700;">();<br />
        }<br />
        </span><span style="color:#0000bb;">$this</span><span style="color:#007700;">-&gt;</span><span style="color:#0000bb;">__tables </span><span style="color:#007700;">= </span><span style="color:#0000bb;">$tables</span></font><font face="Courier New"><span style="color:#007700;">;<br />
        return </span><span style="color:#0000bb;">$tables</span></font><font face="Courier New"><span style="color:#007700;">;<br />
    }</span></font><font face="Courier New"><span style="color:#007700;">    function <span style="color:#0000bb;">writeDotFile</span><span style="color:#007700;">(</span><span style="color:#0000bb;">$header</span><span style="color:#007700;">, </span><span style="color:#0000bb;">$target_dir</span><span style="color:#007700;">, </span><span style="color:#0000bb;">$tableInfos</span><font face="Courier New"><span style="color:#007700;">) {<br />
        </span><span style="color:#0000bb;">$tmp_dot_file </span><span style="color:#007700;">= </span><span style="color:#0000bb;">$target_dir </span><span style="color:#007700;">.</span><span style="color:#0000bb;">DS</span><span style="color:#007700;">. </span><span style="color:#dd0000;">&#8220;model_information.dot&#8221;</span></font><font face="Courier New"><span style="color:#007700;">;        </span><span style="color:#0000bb;">$f </span><span style="color:#007700;">= &amp; new </span><span style="color:#0000bb;">File</span><span style="color:#007700;">(</span><span style="color:#0000bb;">$tmp_dot_file</span><span style="color:#007700;">, </span><span style="color:#0000bb;">true</span></font></span></font><font face="Courier New"><span style="color:#007700;"> </span></font><span style="color:#007700;"><font face="Courier New">);<br />
        <br />
        </font></span><font face="Courier New"><span style="color:#ff8000;">// Define a graph and some global settings<br />
        </span><span style="color:#0000bb;">$f</span><span style="color:#007700;">-&gt;</span><span style="color:#0000bb;">append</span><span style="color:#007700;">(</span><span style="color:#dd0000;">&#8220;digraph G {\n&#8221;</span></font><font face="Courier New"><span style="color:#007700;">);<br />
        </span><span style="color:#0000bb;">$f</span><span style="color:#007700;">-&gt;</span><span style="color:#0000bb;">append</span><span style="color:#007700;">(</span><span style="color:#dd0000;">&#8220;\toverlap=false;\n&#8221;</span></font><font face="Courier New"><span style="color:#007700;">);<br />
        </span><span style="color:#0000bb;">$f</span><span style="color:#007700;">-&gt;</span><span style="color:#0000bb;">append</span><span style="color:#007700;">(</span><span style="color:#dd0000;">&#8220;\tsplines=true;\n&#8221;</span></font><font face="Courier New"><span style="color:#007700;">);<br />
        </span><span style="color:#0000bb;">$f</span><span style="color:#007700;">-&gt;</span><span style="color:#0000bb;">append</span><span style="color:#007700;">(</span><span style="color:#dd0000;">&#8220;\tnode [fontname=\"Helvetica\",fontsize=9];\n&#8221;</span></font><font face="Courier New"><span style="color:#007700;">);<br />
        </span><span style="color:#0000bb;">$f</span><span style="color:#007700;">-&gt;</span><span style="color:#0000bb;">append</span><span style="color:#007700;">(</span><span style="color:#dd0000;">&#8220;\tedge [fontname=\"Helvetica\",fontsize=8];\n&#8221;</span></font><font face="Courier New"><span style="color:#007700;">);<br />
        </span><span style="color:#0000bb;">$f</span><span style="color:#007700;">-&gt;</span><span style="color:#0000bb;">append</span><span style="color:#007700;">(</span><span style="color:#dd0000;">&#8220;\tranksep=0.1;\n&#8221;</span></font><font face="Courier New"><span style="color:#007700;">);<br />
        </span><span style="color:#0000bb;">$f</span><span style="color:#007700;">-&gt;</span><span style="color:#0000bb;">append</span><span style="color:#007700;">(</span><span style="color:#dd0000;">&#8220;\tnodesep=0.1;\n&#8221;</span></font><span style="color:#007700;"><font face="Courier New">);<br />
</font></span><font face="Courier New"><span style="color:#ff8000;">//    $f-&gt;append(&#8220;\tedge [decorate=\"true\"];\n&#8221;);</span></font><font face="Courier New"><span style="color:#ff8000;">        // Write header info<br />
        <span style="color:#0000bb;">$f</span><span style="color:#007700;">-&gt;</span><span style="color:#0000bb;">append</span><span style="color:#007700;">(</span><span style="color:#dd0000;">&#8220;\t_schema_info [shape=\"plaintext\", label=\"{$header}\", fontname=\"Helvetica\",fontsize=8];\n&#8221;</span><font face="Courier New"><span style="color:#007700;">);<br />
        <br />
        </span><span style="color:#0000bb;">$assocs </span></font><span style="color:#007700;"><font face="Courier New">= array();<br />
        </font></span><font face="Courier New"><span style="color:#ff8000;">// Draw the tables as boxes<br />
        </span><span style="color:#007700;">foreach (</span><span style="color:#0000bb;">$tableInfos </span><span style="color:#007700;">as </span><span style="color:#0000bb;">$table</span><span style="color:#007700;">=&gt;</span><span style="color:#0000bb;">$attributes</span></font><font face="Courier New"><span style="color:#007700;">) {<br />
          </span><span style="color:#0000bb;">$attrs </span><span style="color:#007700;">= </span><span style="color:#dd0000;">&#8220;&#8221;</span></font><font face="Courier New"><span style="color:#007700;">;<br />
          if (</span><span style="color:#0000bb;">is_array</span><span style="color:#007700;">(</span><span style="color:#0000bb;">$attributes</span><span style="color:#007700;">) &amp;&amp; </span><span style="color:#0000bb;">count</span><span style="color:#007700;">(</span><span style="color:#0000bb;">$attributes</span><span style="color:#007700;">)&gt;</span><span style="color:#0000bb;">0</span></font><font face="Courier New"><span style="color:#007700;">) {<br />
              foreach (</span><span style="color:#0000bb;">$attributes </span><span style="color:#007700;">as </span><span style="color:#0000bb;">$attrname</span><span style="color:#007700;">=&gt;</span><span style="color:#0000bb;">$attr</span></font><font face="Courier New"><span style="color:#007700;">) {<br />
                if (</span><span style="color:#0000bb;">substr</span><span style="color:#007700;">(</span><span style="color:#0000bb;">$attrname</span><span style="color:#007700;">, -</span><span style="color:#0000bb;">3</span><span style="color:#007700;">) == </span><span style="color:#dd0000;">&#8216;_id&#8217;</span></font><span style="color:#007700;"><font face="Courier New">) { <br />
                  </font></span><font face="Courier New"><span style="color:#ff8000;"># Create an association to other table<br />
                  </span><span style="color:#0000bb;">$table_name </span><span style="color:#007700;">= </span><span style="color:#0000bb;">Inflector</span><span style="color:#007700;">::</span><span style="color:#0000bb;">camelize</span><span style="color:#007700;">(</span><span style="color:#0000bb;">r</span><span style="color:#007700;">(</span><span style="color:#dd0000;">&#8216;_id&#8217;</span><span style="color:#007700;">,</span><span style="color:#dd0000;">&#8221;</span><span style="color:#007700;">,</span><span style="color:#0000bb;">$attrname</span></font><font face="Courier New"><span style="color:#007700;">));<br />
                  if (!empty(</span><span style="color:#0000bb;">$tableInfos</span><span style="color:#007700;">[</span><span style="color:#0000bb;">$table_name</span></font><font face="Courier New"><span style="color:#007700;">])) {<br />
                    </span><span style="color:#0000bb;">$other_table </span><span style="color:#007700;">= </span><span style="color:#0000bb;">$tableInfos</span><span style="color:#007700;">[</span><span style="color:#0000bb;">$table_name</span></font><font face="Courier New"><span style="color:#007700;">];<br />
                    </span><span style="color:#0000bb;">$assocs</span><span style="color:#007700;">[] = array(</span><span style="color:#dd0000;">&#8216;label&#8217;</span><span style="color:#007700;">=&gt; </span><span style="color:#0000bb;">$attrname</span><span style="color:#007700;">, </span><span style="color:#dd0000;">&#8216;node1&#8242;</span><span style="color:#007700;">=&gt; </span><span style="color:#0000bb;">$table</span><span style="color:#007700;">, </span><span style="color:#dd0000;">&#8216;node2&#8242;</span><span style="color:#007700;">=&gt; </span><span style="color:#0000bb;">$table_name</span></font><font face="Courier New"><span style="color:#007700;">);<br />
                  }<br />
                }<br />
                if (!empty(</span><span style="color:#0000bb;">$attr</span><span style="color:#007700;">[</span><span style="color:#dd0000;">'length'</span><span style="color:#007700;">])) </span><span style="color:#0000bb;">$attr</span><span style="color:#007700;">[</span><span style="color:#dd0000;">'type'</span><span style="color:#007700;">].=</span><span style="color:#dd0000;">&#8220;[{$attr['length']}]&#8221;</span></font><font face="Courier New"><span style="color:#007700;">;<br />
                </span><span style="color:#0000bb;">$attrtype</span><span style="color:#007700;">=</span><span style="color:#0000bb;">$attr</span><span style="color:#007700;">[</span><span style="color:#dd0000;">'type'</span></font><font face="Courier New"><span style="color:#007700;">];<br />
                </span><span style="color:#0000bb;">$attrs </span><span style="color:#007700;">.= </span><span style="color:#dd0000;">&#8220;{$attrname} : {$attrtype}&#8221;</span></font><font face="Courier New"><span style="color:#007700;">;<br />
                if (!empty(</span><span style="color:#0000bb;">$attr</span><span style="color:#007700;">[</span><span style="color:#dd0000;">'default'</span><span style="color:#007700;">])) </span><span style="color:#0000bb;">$attrs </span><span style="color:#007700;">.= </span><span style="color:#dd0000;">&#8220;, default: \\\&#8221;{$attr['default']}\\\&#8221;"</span></font><font face="Courier New"><span style="color:#007700;">;<br />
                </span><span style="color:#0000bb;">$attrs </span><span style="color:#007700;">.= </span><span style="color:#dd0000;">&#8220;\\n&#8221;</span></font><font face="Courier New"><span style="color:#007700;">;<br />
              }<br />
          }<br />
          </span><span style="color:#0000bb;">$f</span><span style="color:#007700;">-&gt;</span><span style="color:#0000bb;">append</span><span style="color:#007700;">(</span><span style="color:#dd0000;">&#8220;\t\&#8221;{$table}\&#8221; [label=\"{{$table}|{$attrs}}\" shape=\"record\"];\n&#8221;</span></font><span style="color:#007700;"><font face="Courier New">);<br />
        }<br />
        </font></span><font face="Courier New"><span style="color:#ff8000;">// Draw the relations<br />
        </span><span style="color:#007700;">foreach (</span><span style="color:#0000bb;">$assocs </span><span style="color:#007700;">as </span><span style="color:#0000bb;">$assoc</span></font><font face="Courier New"><span style="color:#007700;">) {<br />
          </span><span style="color:#0000bb;">$f</span><span style="color:#007700;">-&gt;</span><span style="color:#0000bb;">append</span><span style="color:#007700;">(</span><span style="color:#dd0000;">&#8220;\t\&#8221;{$assoc['node1']}\&#8221; -&gt; \&#8221;{$assoc['node2']}\&#8221; [label=\"{$assoc['label']}\&#8221;]\n&#8221;</span></font><span style="color:#007700;"><font face="Courier New">);<br />
        }<br />
        <br />
        </font></span><font face="Courier New"><span style="color:#ff8000;">// Close the graph<br />
        </span><span style="color:#0000bb;">$f</span><span style="color:#007700;">-&gt;</span><span style="color:#0000bb;">append</span><span style="color:#007700;">(</span><span style="color:#dd0000;">&#8220;}\n&#8221;</span></font><font face="Courier New"><span style="color:#007700;">);<br />
        </span><span style="color:#0000bb;">$f</span><span style="color:#007700;">-&gt;</span><span style="color:#0000bb;">close</span></font><span style="color:#007700;"><font face="Courier New">();        </font></span></span></font><font face="Courier New"><span style="color:#ff8000;"><font face="Courier New"><span style="color:#ff8000;">// Create the images by using dot and neato (grapviz tools)<br />
        // We&#8217;ll create several images with different layout. There is no &#8221;prefect&#8221; layout algorithm that suits all models<br />
        </span><span style="color:#0000bb;">$this</span><span style="color:#007700;">-&gt;</span><span style="color:#0000bb;">createImg</span><span style="color:#007700;">(</span><span style="color:#0000bb;">$this</span><span style="color:#007700;">-&gt;</span><span style="color:#0000bb;">graphToolPath</span><span style="color:#007700;">, </span><span style="color:#dd0000;">&#8220;-Gmode=hier&#8221;</span><span style="color:#007700;">, </span><span style="color:#0000bb;">$tmp_dot_file</span><span style="color:#007700;">, </span><span style="color:#0000bb;">$target_dir </span><span style="color:#007700;">.</span><span style="color:#0000bb;">DS</span><span style="color:#007700;">. </span><span style="color:#dd0000;">&#8220;model_overview_neato_hier&#8221;</span></font><font face="Courier New"><span style="color:#007700;">);<br />
        </span><span style="color:#0000bb;">$this</span><span style="color:#007700;">-&gt;</span><span style="color:#0000bb;">createImg</span><span style="color:#007700;">(</span><span style="color:#0000bb;">$this</span><span style="color:#007700;">-&gt;</span><span style="color:#0000bb;">graphToolPath</span><span style="color:#007700;">, </span><span style="color:#dd0000;">&#8220;&#8221;</span><span style="color:#007700;">, </span><span style="color:#0000bb;">$tmp_dot_file</span><span style="color:#007700;">, </span><span style="color:#0000bb;">$target_dir</span><span style="color:#007700;">. </span><span style="color:#0000bb;">DS</span><span style="color:#007700;">. </span><span style="color:#dd0000;">&#8220;model_overview_neato_plain&#8221;</span></font><span style="color:#007700;"><font face="Courier New">);<br />
        <br />
        </font></span><font face="Courier New"><span style="color:#ff8000;">// Remove the .dot file<br />
        </span><span style="color:#0000bb;">$f</span><span style="color:#007700;">-&gt;</span><span style="color:#0000bb;">delete</span></font><font face="Courier New"><span style="color:#007700;">();<br />
        <br />
    }     <br />
  <br />
    function </span><span style="color:#0000bb;">createImg</span><span style="color:#007700;">(</span><span style="color:#0000bb;">$app</span><span style="color:#007700;">, </span><span style="color:#0000bb;">$args</span><span style="color:#007700;">, </span><span style="color:#0000bb;">$dot_file</span><span style="color:#007700;">, </span><span style="color:#0000bb;">$img_file_base</span></font><font face="Courier New"><span style="color:#007700;">) {        <br />
        </span><span style="color:#0000bb;">$img_file </span><span style="color:#007700;">= </span><span style="color:#dd0000;">&#8220;$img_file_base.png&#8221;</span></font><font face="Courier New"><span style="color:#007700;">;<br />
        </span><span style="color:#0000bb;">$command </span><span style="color:#007700;">= </span><span style="color:#dd0000;">&#8220;{$app} {$args} -Tpng  -o\&#8221;{$img_file}\&#8221; \&#8221;{$dot_file}\&#8221;"</span></font><font face="Courier New"><span style="color:#007700;">;<br />
        </span><span style="color:#0000bb;">system</span><span style="color:#007700;">(</span><span style="color:#0000bb;">$command</span><span style="color:#007700;">,</span><span style="color:#0000bb;">$retval</span></font><font face="Courier New"><span style="color:#007700;">);<br />
        if (!</span><span style="color:#0000bb;">$retval</span></font><font face="Courier New"><span style="color:#007700;">) {<br />
            </span><span style="color:#0000bb;">$this</span><span style="color:#007700;">-&gt;</span><span style="color:#0000bb;">out</span><span style="color:#007700;">(</span><span style="color:#dd0000;">&#8220;Generated {$img_file}\n&#8221;</span></font><font face="Courier New"><span style="color:#007700;">);<br />
        } else {<br />
            </span><span style="color:#0000bb;">$this</span><span style="color:#007700;">-&gt;</span><span style="color:#0000bb;">out</span><span style="color:#007700;">(</span><span style="color:#dd0000;">&#8220;Failed to execute the &#8217;{$app}&#8217; command! Is grapviz (www.graphviz.org) installed?\n&#8221;</span></font><font face="Courier New"><span style="color:#007700;">);          <br />
        }<br />
    }     <br />
    <br />
    <br />
 <br />
    <br />
}</span></font><font face="Courier New"><span style="color:#007700;"><span style="color:#0000bb;">?&gt;</span></span></font></span></font></span></font></p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/cakeexplorer.wordpress.com/18/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/cakeexplorer.wordpress.com/18/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/cakeexplorer.wordpress.com/18/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/cakeexplorer.wordpress.com/18/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/cakeexplorer.wordpress.com/18/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/cakeexplorer.wordpress.com/18/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/cakeexplorer.wordpress.com/18/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/cakeexplorer.wordpress.com/18/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/cakeexplorer.wordpress.com/18/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/cakeexplorer.wordpress.com/18/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/cakeexplorer.wordpress.com/18/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/cakeexplorer.wordpress.com/18/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cakeexplorer.wordpress.com&blog=1571352&post=18&subd=cakeexplorer&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://cakeexplorer.wordpress.com/2007/12/14/build-image-of-current-cake-schema/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/2f11c840ab7eccb6788ab0c4331f5dad?s=96&#38;d=identicon" medium="image">
			<media:title type="html">CakeExplorer</media:title>
		</media:content>
	</item>
		<item>
		<title>renderPartial. Script for baking views.</title>
		<link>http://cakeexplorer.wordpress.com/2007/11/27/renderpartial-script-for-baking-views/</link>
		<comments>http://cakeexplorer.wordpress.com/2007/11/27/renderpartial-script-for-baking-views/#comments</comments>
		<pubDate>Tue, 27 Nov 2007 10:52:42 +0000</pubDate>
		<dc:creator>cakeexplorer</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://cakeexplorer.wordpress.com/2007/11/27/renderpartial-script-for-baking-views/</guid>
		<description><![CDATA[All scripts in this post checked with laast nightly 1.2 build.
In continue of previous post i want to show how to extract similar elements of views to partials on example.
I create several bake scripts that allow to solve this.
After we place files to desired places we can use it with bake script.
So if we have controller Articles we run next [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cakeexplorer.wordpress.com&blog=1571352&post=17&subd=cakeexplorer&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p><font face="Courier New">All scripts in this post checked with laast nightly 1.2 build.</font></p>
<p>In continue of previous post i want to show how to extract similar elements of views to partials on example.</p>
<p>I create several bake scripts that allow to solve this.</p>
<p>After we place files to desired places we can use it with bake script.</p>
<p>So if we have controller Articles we run next commands.</p>
<p><span style="color:#000000;"></span></p>
<p><span style="color:#000000;"><font face="Courier New">cake bake view articles partial _partial </font></span></p>
<p><span style="color:#000000;"><font face="Courier New"><span style="color:#000000;"><font face="Courier New">cake bake view articles add</font></span></font></span></p>
<p><span style="color:#000000;"><font face="Courier New"><span style="color:#000000;"></span>cake bake view articles edit</font></span></p>
<p><span style="color:#000000;"><font face="Courier New">/vendors/shell/templates/views/form.ctp</p>
<p></font></span><span style="color:#000000;"><font face="Courier New"><span style="color:#000000;">&lt;div class=&#8221;<span style="color:#0000bb;">&lt;?php </span><span style="color:#007700;">echo </span><span style="color:#0000bb;">$pluralVar</span><span style="color:#007700;">;</span><span style="color:#0000bb;">?&gt;</span> form&#8221;&gt;<br />
<span style="color:#0000bb;">&lt;?php </span><span style="color:#007700;">echo </span><span style="color:#dd0000;">&#8220;&lt;?php echo \$form-&gt;create(&#8216;{$modelClass}&#8217;);?&gt;\n&#8221;</span><span style="color:#007700;">;</span><span style="color:#0000bb;">?&gt;<br />
</span>    &lt;fieldset&gt;<br />
         &lt;legend&gt;<span style="color:#0000bb;">&lt;?php </span><span style="color:#007700;">echo </span><span style="color:#dd0000;">&#8220;&lt;?php __(&#8216;&#8221;</span><span style="color:#007700;">.</span><span style="color:#0000bb;">Inflector</span><span style="color:#007700;">::</span><span style="color:#0000bb;">humanize</span><span style="color:#007700;">(</span><span style="color:#0000bb;">$action</span><span style="color:#007700;">).</span><span style="color:#dd0000;">&#8220; {$singularHumanName}&#8217;);?&gt;&#8221;</span><span style="color:#007700;">;</span><span style="color:#0000bb;">?&gt;</span>&lt;/legend&gt;<br />
<span style="color:#0000bb;">&lt;?php<br />
        </span><span style="color:#007700;">echo </span><span style="color:#dd0000;">&#8220;\t&lt;?php\n&#8221;</span><span style="color:#007700;">;<br />
        foreach (</span><span style="color:#0000bb;">$fields </span><span style="color:#007700;">as </span><span style="color:#0000bb;">$field</span><span style="color:#007700;">) {<br />
            if (</span><span style="color:#0000bb;">$action </span><span style="color:#007700;">!= </span><span style="color:#dd0000;">&#8216;add&#8217; </span><span style="color:#007700;">&amp;&amp; </span><span style="color:#0000bb;">$field </span><span style="color:#007700;">== </span><span style="color:#0000bb;">$primaryKey</span><span style="color:#007700;">) {<br />
                </span><span style="color:#0000bb;">$humanName</span><span style="color:#007700;">=</span><span style="color:#0000bb;">$field</span><span style="color:#007700;">;<br />
                </span><span style="color:#0000bb;">$humanName</span><span style="color:#007700;">=</span><span style="color:#0000bb;">Inflector</span><span style="color:#007700;">::</span><span style="color:#0000bb;">humanize</span><span style="color:#007700;">(</span><span style="color:#0000bb;">$humanName</span><span style="color:#007700;">);<br />
                echo </span><span style="color:#dd0000;">&#8220;\t\techo \$form-&gt;input(&#8216;{$modelClass}.{$field}&#8217;,array(&#8216;label&#8217;=&gt;__(&#8216;{$humanName}&#8217;,true)));\n&#8221;</span><span style="color:#007700;">;<br />
            }<br />
        }<br />
        echo </span><span style="color:#dd0000;">&#8220;\t\techo \$this-&gt;renderPartial(&#8216;_partial&#8217;);\n&#8221;</span><span style="color:#007700;">;<br />
        echo </span><span style="color:#dd0000;">&#8220;\t?&gt;\n&#8221;</span><span style="color:#007700;">;<br />
</span><span style="color:#0000bb;">?&gt;<br />
</span>    &lt;/fieldset&gt;<br />
<span style="color:#0000bb;">&lt;?php<br />
    </span><span style="color:#007700;">echo </span><span style="color:#dd0000;">&#8220;&lt;?php echo \$form-&gt;end(&#8216;Submit&#8217;);?&gt;\n&#8221;</span><span style="color:#007700;">;<br />
</span><span style="color:#0000bb;">?&gt;<br />
</span>&lt;/div&gt;<br />
&lt;div class=&#8221;actions&#8221;&gt;<br />
    &lt;ul&gt;<br />
<span style="color:#0000bb;">&lt;?php </span><span style="color:#007700;">if (</span><span style="color:#0000bb;">$action </span><span style="color:#007700;">!= </span><span style="color:#dd0000;">&#8216;add&#8217;</span><span style="color:#007700;">):</span><span style="color:#0000bb;">?&gt;<br />
</span>        &lt;li&gt;<span style="color:#0000bb;">&lt;?php </span><span style="color:#007700;">echo </span><span style="color:#dd0000;">&#8220;&lt;?php echo \$html-&gt;link(__(&#8216;Delete&#8217;, true), array(&#8216;action&#8217;=&gt;&#8217;delete&#8217;, \$form-&gt;value(&#8216;{$modelClass}.{$primaryKey}&#8217;)), null, sprintf(__(&#8216;Are you sure you want to delete # %s?&#8217;, true), \$form-&gt;value(&#8216;{$modelClass}.{$primaryKey}&#8217;))); ?&gt;&#8221;</span><span style="color:#007700;">;</span><span style="color:#0000bb;">?&gt;</span>&lt;/li&gt;<br />
<span style="color:#0000bb;">&lt;?php </span><span style="color:#007700;">endif;</span><span style="color:#0000bb;">?&gt;<br />
</span>        &lt;li&gt;<span style="color:#0000bb;">&lt;?php </span><span style="color:#007700;">echo </span><span style="color:#dd0000;">&#8220;&lt;?php echo \$html-&gt;link(__(&#8216;List {$pluralHumanName}&#8217;, true), array(&#8216;action&#8217;=&gt;&#8217;index&#8217;));?&gt;&#8221;</span><span style="color:#007700;">;</span><span style="color:#0000bb;">?&gt;</span>&lt;/li&gt;<br />
<span style="color:#0000bb;">&lt;?php<br />
        $done </span><span style="color:#007700;">= array();<br />
        foreach (</span><span style="color:#0000bb;">$associations </span><span style="color:#007700;">as </span><span style="color:#0000bb;">$type </span><span style="color:#007700;">=&gt; </span><span style="color:#0000bb;">$data</span><span style="color:#007700;">) {<br />
            foreach(</span><span style="color:#0000bb;">$data </span><span style="color:#007700;">as </span><span style="color:#0000bb;">$alias </span><span style="color:#007700;">=&gt; </span><span style="color:#0000bb;">$details</span><span style="color:#007700;">) {<br />
                if (</span><span style="color:#0000bb;">$details</span><span style="color:#007700;">[</span><span style="color:#dd0000;">'controller'</span><span style="color:#007700;">] != </span><span style="color:#0000bb;">$this</span><span style="color:#007700;">-&gt;</span><span style="color:#0000bb;">name </span><span style="color:#007700;">&amp;&amp; !</span><span style="color:#0000bb;">in_array</span><span style="color:#007700;">(</span><span style="color:#0000bb;">$details</span><span style="color:#007700;">[</span><span style="color:#dd0000;">'controller'</span><span style="color:#007700;">], </span><span style="color:#0000bb;">$done</span><span style="color:#007700;">)) {<br />
                    echo </span><span style="color:#dd0000;">&#8220;\t\t&lt;li&gt;&lt;?php echo \$html-&gt;link(__(&#8216;List &#8221;</span><span style="color:#007700;">.</span><span style="color:#0000bb;">Inflector</span><span style="color:#007700;">::</span><span style="color:#0000bb;">humanize</span><span style="color:#007700;">(</span><span style="color:#0000bb;">$details</span><span style="color:#007700;">[</span><span style="color:#dd0000;">'controller'</span><span style="color:#007700;">]).</span><span style="color:#dd0000;">&#8220;&#8216;, true), array(&#8216;controller&#8217;=&gt; &#8217;{$details['controller']}&#8217;, &#8217;action&#8217;=&gt;&#8217;index&#8217;)); ?&gt; &lt;/li&gt;\n&#8221;</span><span style="color:#007700;">;<br />
                    echo </span><span style="color:#dd0000;">&#8220;\t\t&lt;li&gt;&lt;?php echo \$html-&gt;link(__(&#8216;New &#8221;</span><span style="color:#007700;">.</span><span style="color:#0000bb;">Inflector</span><span style="color:#007700;">::</span><span style="color:#0000bb;">humanize</span><span style="color:#007700;">(</span><span style="color:#0000bb;">Inflector</span><span style="color:#007700;">::</span><span style="color:#0000bb;">underscore</span><span style="color:#007700;">(</span><span style="color:#0000bb;">$alias</span><span style="color:#007700;">)).</span><span style="color:#dd0000;">&#8220;&#8216;, true), array(&#8216;controller&#8217;=&gt; &#8217;{$details['controller']}&#8217;, &#8217;action&#8217;=&gt;&#8217;add&#8217;)); ?&gt; &lt;/li&gt;\n&#8221;</span><span style="color:#007700;">;<br />
                    </span><span style="color:#0000bb;">$done</span><span style="color:#007700;">[] = </span><span style="color:#0000bb;">$details</span><span style="color:#007700;">[</span><span style="color:#dd0000;">'controller'</span><span style="color:#007700;">];<br />
                }<br />
            }<br />
        }<br />
</span><span style="color:#0000bb;">?&gt;<br />
</span>    &lt;/ul&gt;<br />
&lt;/div&gt;<br />
</span></font></span></p>
<p>/vendors/shell/templates/views/partial.ctp</p>
<p> <span style="color:#000000;"><font face="Courier New"><span style="color:#0000bb;"><span style="color:#000000;"><span style="color:#0000bb;">&lt;?php<br />
        </span><span style="color:#007700;">echo </span><span style="color:#dd0000;">&#8220;\t&lt;?php\n&#8221;</span><span style="color:#007700;">;<br />
        foreach (</span><span style="color:#0000bb;">$fields </span><span style="color:#007700;">as </span><span style="color:#0000bb;">$field</span><span style="color:#007700;">) {<br />
            if (</span><span style="color:#0000bb;">$field </span><span style="color:#007700;">== </span><span style="color:#0000bb;">$primaryKey</span><span style="color:#007700;">) {<br />
                continue;<br />
            } elseif (!</span><span style="color:#0000bb;">in_array</span><span style="color:#007700;">(</span><span style="color:#0000bb;">$field</span><span style="color:#007700;">, array(</span><span style="color:#dd0000;">&#8216;created&#8217;</span><span style="color:#007700;">, </span><span style="color:#dd0000;">&#8216;modified&#8217;</span><span style="color:#007700;">, </span><span style="color:#dd0000;">&#8216;updated&#8217;</span><span style="color:#007700;">))) {<br />
                </span><span style="color:#0000bb;">$humanName</span><span style="color:#007700;">=</span><span style="color:#0000bb;">$field</span><span style="color:#007700;">;<br />
                if (</span><span style="color:#0000bb;">substr</span><span style="color:#007700;">(</span><span style="color:#0000bb;">$humanName</span><span style="color:#007700;">, -</span><span style="color:#0000bb;">3</span><span style="color:#007700;">) == </span><span style="color:#dd0000;">&#8216;_id&#8217;</span><span style="color:#007700;">) {<br />
                    </span><span style="color:#0000bb;">$humanName </span><span style="color:#007700;">= </span><span style="color:#0000bb;">substr</span><span style="color:#007700;">(</span><span style="color:#0000bb;">$humanName</span><span style="color:#007700;">, </span><span style="color:#0000bb;">0</span><span style="color:#007700;">, </span><span style="color:#0000bb;">strlen</span><span style="color:#007700;">(</span><span style="color:#0000bb;">$humanName</span><span style="color:#007700;">) - </span><span style="color:#0000bb;">3</span><span style="color:#007700;">);<br />
                }                 <br />
                </span><span style="color:#0000bb;">$humanName</span><span style="color:#007700;">=</span><span style="color:#0000bb;">Inflector</span><span style="color:#007700;">::</span><span style="color:#0000bb;">humanize</span><span style="color:#007700;">(</span><span style="color:#0000bb;">$humanName</span><span style="color:#007700;">);<br />
                echo </span><span style="color:#dd0000;">&#8220;\t\techo \$form-&gt;input(&#8216;{$modelClass}.{$field}&#8217;,array(&#8216;label&#8217;=&gt;__(&#8216;{$humanName}&#8217;,true)));\n&#8221;</span><span style="color:#007700;">;<br />
            }<br />
        }<br />
        if(!empty(</span><span style="color:#0000bb;">$associations</span><span style="color:#007700;">[</span><span style="color:#dd0000;">'hasAndBelongsToMany'</span><span style="color:#007700;">])) {<br />
            foreach (</span><span style="color:#0000bb;">$associations</span><span style="color:#007700;">[</span><span style="color:#dd0000;">'hasAndBelongsToMany'</span><span style="color:#007700;">] as </span><span style="color:#0000bb;">$assocName </span><span style="color:#007700;">=&gt; </span><span style="color:#0000bb;">$assocData</span><span style="color:#007700;">) {<br />
                echo </span><span style="color:#dd0000;">&#8220;\t\techo \$form-&gt;input(&#8216;{$assocName}&#8217;);\n&#8221;</span><span style="color:#007700;">;<br />
            }<br />
        }<br />
        echo </span><span style="color:#dd0000;">&#8220;\t?&gt;\n&#8221;</span><span style="color:#007700;">;<br />
</span><span style="color:#0000bb;">?&gt;<br />
</span></span></span></font></span></p>
<p><span style="color:#000000;"><font face="Courier New"><span style="color:#0000bb;"><span style="color:#000000;"><span style="color:#0000bb;"></span></span></span></font></span></p>
<p><span style="color:#000000;"><font face="Courier New"><span style="color:#0000bb;"><span style="color:#000000;"><span style="color:#0000bb;"><span style="color:#000000;"></span></p>
<p></span></span></span></font></span></p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/cakeexplorer.wordpress.com/17/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/cakeexplorer.wordpress.com/17/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/cakeexplorer.wordpress.com/17/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/cakeexplorer.wordpress.com/17/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/cakeexplorer.wordpress.com/17/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/cakeexplorer.wordpress.com/17/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/cakeexplorer.wordpress.com/17/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/cakeexplorer.wordpress.com/17/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/cakeexplorer.wordpress.com/17/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/cakeexplorer.wordpress.com/17/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/cakeexplorer.wordpress.com/17/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/cakeexplorer.wordpress.com/17/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cakeexplorer.wordpress.com&blog=1571352&post=17&subd=cakeexplorer&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://cakeexplorer.wordpress.com/2007/11/27/renderpartial-script-for-baking-views/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/2f11c840ab7eccb6788ab0c4331f5dad?s=96&#38;d=identicon" medium="image">
			<media:title type="html">CakeExplorer</media:title>
		</media:content>
	</item>
		<item>
		<title>Using RoR partial style. renderElement and renderPartial</title>
		<link>http://cakeexplorer.wordpress.com/2007/11/22/using-ror-partial-style-renderelement-and-renderpartial/</link>
		<comments>http://cakeexplorer.wordpress.com/2007/11/22/using-ror-partial-style-renderelement-and-renderpartial/#comments</comments>
		<pubDate>Thu, 22 Nov 2007 13:24:00 +0000</pubDate>
		<dc:creator>cakeexplorer</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://cakeexplorer.wordpress.com/2007/11/22/using-ror-partial-style-renderelement-and-renderpartial/</guid>
		<description><![CDATA[If I have a few views, add.ctp, edit.ctp all using the same code for the form.
I have created another view file called _form.ctp
For displaing same part we call $this-&#62;renderPartial(&#8216;_form&#8217;);
How I implement it?
All we need is overload View class with renderPartial function implementation. The goal of function is call renderElement with correct path to view.
&#60;?php
class ExtView extends View 
{    
    function renderPartial($name, $params = array(), $loadHelpers = false) {
        if ((strpos($name, &#8216;\\&#8217;)===false) &#38;&#38; (strpos($name, &#8216;/&#8217;)===false)) {
            $name = &#8216;..&#8217; . DS . Inflector::underscore($this-&#62;name) . DS . $name;            
        }
        return $this-&#62;renderElement($name, $params, $loadHelpers);
    }
    
}
?&#62; 
Now [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cakeexplorer.wordpress.com&blog=1571352&post=16&subd=cakeexplorer&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>If I have a few views, add.ctp, edit.ctp all using the same code for the form.<br />
I have created another view file called _form.ctp<br />
For displaing same part we call $this-&gt;renderPartial(&#8216;_form&#8217;);</p>
<p>How I implement it?</p>
<p>All we need is overload View class with renderPartial function implementation. The goal of function is call renderElement with correct path to view.</p>
<p><span style="color:#000000;"><font face="Courier New"><span style="color:#0000bb;">&lt;?php<br />
</span><span style="color:#007700;">class </span><span style="color:#0000bb;">ExtView </span><span style="color:#007700;">extends </span></font><span style="color:#0000bb;"><font face="Courier New">View <br />
</font></span><font face="Courier New"><span style="color:#007700;">{    </p>
<p>    function </span><span style="color:#0000bb;">renderPartial</span><span style="color:#007700;">(</span><span style="color:#0000bb;">$name</span><span style="color:#007700;">, </span><span style="color:#0000bb;">$params </span><span style="color:#007700;">= array(), </span><span style="color:#0000bb;">$loadHelpers </span><span style="color:#007700;">= </span><span style="color:#0000bb;">false</span></font><font face="Courier New"><span style="color:#007700;">) {<br />
        if ((</span><span style="color:#0000bb;">strpos</span><span style="color:#007700;">(</span><span style="color:#0000bb;">$name</span><span style="color:#007700;">, </span><span style="color:#dd0000;">&#8216;\\&#8217;</span><span style="color:#007700;">)===</span><span style="color:#0000bb;">false</span><span style="color:#007700;">) &amp;&amp; (</span><span style="color:#0000bb;">strpos</span><span style="color:#007700;">(</span><span style="color:#0000bb;">$name</span><span style="color:#007700;">, </span><span style="color:#dd0000;">&#8216;/&#8217;</span><span style="color:#007700;">)===</span><span style="color:#0000bb;">false</span></font><font face="Courier New"><span style="color:#007700;">)) {<br />
            </span><span style="color:#0000bb;">$name </span><span style="color:#007700;">= </span><span style="color:#dd0000;">&#8216;..&#8217; </span><span style="color:#007700;">. </span><span style="color:#0000bb;">DS </span><span style="color:#007700;">. </span><span style="color:#0000bb;">Inflector</span><span style="color:#007700;">::</span><span style="color:#0000bb;">underscore</span><span style="color:#007700;">(</span><span style="color:#0000bb;">$this</span><span style="color:#007700;">-&gt;</span><span style="color:#0000bb;">name</span><span style="color:#007700;">) . </span><span style="color:#0000bb;">DS </span><span style="color:#007700;">. </span><span style="color:#0000bb;">$name</span></font><font face="Courier New"><span style="color:#007700;">;            <br />
        }<br />
        return </span><span style="color:#0000bb;">$this</span><span style="color:#007700;">-&gt;</span><span style="color:#0000bb;">renderElement</span><span style="color:#007700;">(</span><span style="color:#0000bb;">$name</span><span style="color:#007700;">, </span><span style="color:#0000bb;">$params</span><span style="color:#007700;">, </span><span style="color:#0000bb;">$loadHelpers</span></font><font face="Courier New"><span style="color:#007700;">);<br />
    }</p>
<p>    <br />
}<br />
</span><span style="color:#0000bb;">?&gt;</span> </font></span></p>
<p><span style="color:#000000;">Now in app_controller all I need is set default view class in beforeRender callback:</span></p>
<p><span style="color:#000000;"><span style="color:#000000;"><font face="Courier New"><span style="color:#0000bb;">&lt;?php<br />
</span><span style="color:#007700;">class </span><span style="color:#0000bb;">AppController </span><span style="color:#007700;">extends </span><span style="color:#0000bb;">Controller </span></font><font face="Courier New"><span style="color:#007700;">{<br />
</span></font><font face="Courier New"><span style="color:#007700;">   <br />
    function </span><span style="color:#0000bb;">beforeRender</span></font><font face="Courier New"><span style="color:#007700;">() {<br />
        </span><span style="color:#0000bb;">$this</span><span style="color:#007700;">-&gt;</span><span style="color:#0000bb;">view</span><span style="color:#007700;">=</span><span style="color:#dd0000;">&#8216;Ext&#8217;</span></font><font face="Courier New"><span style="color:#007700;">;<br />
        return </span><span style="color:#0000bb;">true</span></font><font face="Courier New"><span style="color:#007700;">;<br />
    }    <br />
    <br />
}<br />
</span><span style="color:#0000bb;">?&gt;</span> </font></span></span></p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/cakeexplorer.wordpress.com/16/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/cakeexplorer.wordpress.com/16/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/cakeexplorer.wordpress.com/16/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/cakeexplorer.wordpress.com/16/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/cakeexplorer.wordpress.com/16/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/cakeexplorer.wordpress.com/16/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/cakeexplorer.wordpress.com/16/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/cakeexplorer.wordpress.com/16/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/cakeexplorer.wordpress.com/16/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/cakeexplorer.wordpress.com/16/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/cakeexplorer.wordpress.com/16/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/cakeexplorer.wordpress.com/16/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cakeexplorer.wordpress.com&blog=1571352&post=16&subd=cakeexplorer&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://cakeexplorer.wordpress.com/2007/11/22/using-ror-partial-style-renderelement-and-renderpartial/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/2f11c840ab7eccb6788ab0c4331f5dad?s=96&#38;d=identicon" medium="image">
			<media:title type="html">CakeExplorer</media:title>
		</media:content>
	</item>
		<item>
		<title>Clean fast, clean easy&#8230;</title>
		<link>http://cakeexplorer.wordpress.com/2007/11/18/clean-fast-clean-easy/</link>
		<comments>http://cakeexplorer.wordpress.com/2007/11/18/clean-fast-clean-easy/#comments</comments>
		<pubDate>Sun, 18 Nov 2007 16:13:58 +0000</pubDate>
		<dc:creator>cakeexplorer</dc:creator>
				<category><![CDATA[cakephp]]></category>
		<category><![CDATA[shell]]></category>

		<guid isPermaLink="false">http://cakeexplorer.wordpress.com/2007/11/18/clean-fast-clean-easy/</guid>
		<description><![CDATA[This simple shell script allow remove log or tmp files from /tmp folder.



&#60;?php
/**
 * 
 * 
 * PHP versions 4 and 5
 *
 * Copyright (c) Tomenko Yevgeny
 *
 * Licensed under The MIT License
 * Redistributions of files must retain the above copyright notice.
 *
 */
class CleanShell extends Shell {   
    function help() {
        $this-&#62;out(&#8216;CakePHP Clean:&#8217;);
        $this-&#62;out(&#8220;cake clean logs - Clean log files&#8221;);
        $this-&#62;out(&#8220;cake clean cache - Clean models and persistent files&#8221;);
        $this-&#62;hr();
    }
    function initialize() {
        return true;
    }
    function __clean($path) {
        
        $folder=&#38; new Folder($path);
        $tree=$folder-&#62;tree($path, false);
        foreach ($tree as $files) {
            foreach ($files as $file) {
                if (!is_dir($file)) {
                    $file=&#38; new File($file);
                    $file-&#62;delete();
                }
                
            }
        }
        return ;
    }    
    
    function logs() {
        $this-&#62;__clean(TMP . &#8216;logs&#8217;);    
        $this-&#62;out(&#8216;Logs cleaned.&#8217;);
    }    
    function cache() {
        $this-&#62;__clean(TMP . &#8216;cache&#8217; . DS . &#8216;models&#8217;);
        $this-&#62;__clean(TMP . &#8216;cache&#8217; . DS . &#8216;persistent&#8217;);        
        $this-&#62;out(&#8216;Cache cleaned.&#8217;);
    }    
    
    
  /**
     * Handles CLI calls for the deploy task
     *
     * @param array $params
     * @return unknown
     */
    function main() { //$params
        $this-&#62;help();
    }
        
}
?&#62; 



       <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cakeexplorer.wordpress.com&blog=1571352&post=15&subd=cakeexplorer&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p><span style="color:#000000;"><span style="color:#0000bb;"><font face="Courier New"><span style="color:#000000;"><span style="color:#000000;"><span style="color:#0000bb;"><font face="Courier New">This simple shell script allow remove log or tmp files from /tmp folder<strong>.</strong></font></span></span></span></font></span></span><span style="color:#000000;"><span style="color:#0000bb;"><font face="Courier New"><span style="color:#000000;"><span style="color:#000000;"><span style="color:#0000bb;"><strong></strong></span></span></p>
<p><span style="color:#000000;"><span style="color:#0000bb;"><strong></strong></span></span></p>
<p></span></font></span></span><span style="color:#000000;"><span style="color:#0000bb;"></span></span></p>
<p><span style="color:#000000;"><span style="color:#0000bb;"></span></span></p>
<p><span style="color:#000000;"><span style="color:#0000bb;"><font face="Courier New">&lt;?php</p>
<p></font></span><font face="Courier New"><span style="color:#ff8000;">/**<br />
 * <br />
 * <br />
 * PHP versions 4 and 5<br />
 *<br />
 * Copyright (c) Tomenko Yevgeny<br />
 *<br />
 * Licensed under The MIT License<br />
 * Redistributions of files must retain the above copyright notice.<br />
 *<br />
 */</p>
<p></span><span style="color:#007700;">class </span><span style="color:#0000bb;">CleanShell </span><span style="color:#007700;">extends </span><span style="color:#0000bb;">Shell </span></font><font face="Courier New"><span style="color:#007700;">{   </p>
<p>    function </span><span style="color:#0000bb;">help</span></font><font face="Courier New"><span style="color:#007700;">() {<br />
        </span><span style="color:#0000bb;">$this</span><span style="color:#007700;">-&gt;</span><span style="color:#0000bb;">out</span><span style="color:#007700;">(</span><span style="color:#dd0000;">&#8216;CakePHP Clean:&#8217;</span></font><font face="Courier New"><span style="color:#007700;">);<br />
        </span><span style="color:#0000bb;">$this</span><span style="color:#007700;">-&gt;</span><span style="color:#0000bb;">out</span><span style="color:#007700;">(</span><span style="color:#dd0000;">&#8220;cake clean logs - Clean log files&#8221;</span></font><font face="Courier New"><span style="color:#007700;">);<br />
        </span><span style="color:#0000bb;">$this</span><span style="color:#007700;">-&gt;</span><span style="color:#0000bb;">out</span><span style="color:#007700;">(</span><span style="color:#dd0000;">&#8220;cake clean cache - Clean models and persistent files&#8221;</span></font><font face="Courier New"><span style="color:#007700;">);<br />
        </span><span style="color:#0000bb;">$this</span><span style="color:#007700;">-&gt;</span><span style="color:#0000bb;">hr</span></font><font face="Courier New"><span style="color:#007700;">();<br />
    }</p>
<p>    function </span><span style="color:#0000bb;">initialize</span></font><font face="Courier New"><span style="color:#007700;">() {<br />
        return </span><span style="color:#0000bb;">true</span></font><font face="Courier New"><span style="color:#007700;">;<br />
    }</p>
<p>    function </span><span style="color:#0000bb;">__clean</span><span style="color:#007700;">(</span><span style="color:#0000bb;">$path</span></font><font face="Courier New"><span style="color:#007700;">) {<br />
        <br />
        </span><span style="color:#0000bb;">$folder</span><span style="color:#007700;">=&amp; new </span><span style="color:#0000bb;">Folder</span><span style="color:#007700;">(</span><span style="color:#0000bb;">$path</span></font><font face="Courier New"><span style="color:#007700;">);<br />
        </span><span style="color:#0000bb;">$tree</span><span style="color:#007700;">=</span><span style="color:#0000bb;">$folder</span><span style="color:#007700;">-&gt;</span><span style="color:#0000bb;">tree</span><span style="color:#007700;">(</span><span style="color:#0000bb;">$path</span><span style="color:#007700;">, </span><span style="color:#0000bb;">false</span></font><font face="Courier New"><span style="color:#007700;">);<br />
        foreach (</span><span style="color:#0000bb;">$tree </span><span style="color:#007700;">as </span><span style="color:#0000bb;">$files</span></font><font face="Courier New"><span style="color:#007700;">) {<br />
            foreach (</span><span style="color:#0000bb;">$files </span><span style="color:#007700;">as </span><span style="color:#0000bb;">$file</span></font><font face="Courier New"><span style="color:#007700;">) {<br />
                if (!</span><span style="color:#0000bb;">is_dir</span><span style="color:#007700;">(</span><span style="color:#0000bb;">$file</span></font><font face="Courier New"><span style="color:#007700;">)) {<br />
                    </span><span style="color:#0000bb;">$file</span><span style="color:#007700;">=&amp; new </span><span style="color:#0000bb;">File</span><span style="color:#007700;">(</span><span style="color:#0000bb;">$file</span></font><font face="Courier New"><span style="color:#007700;">);<br />
                    </span><span style="color:#0000bb;">$file</span><span style="color:#007700;">-&gt;</span><span style="color:#0000bb;">delete</span></font><font face="Courier New"><span style="color:#007700;">();<br />
                }<br />
                <br />
            }<br />
        }<br />
        return ;<br />
    }    <br />
    <br />
    function </span><span style="color:#0000bb;">logs</span></font><font face="Courier New"><span style="color:#007700;">() {<br />
        </span><span style="color:#0000bb;">$this</span><span style="color:#007700;">-&gt;</span><span style="color:#0000bb;">__clean</span><span style="color:#007700;">(</span><span style="color:#0000bb;">TMP </span><span style="color:#007700;">. </span><span style="color:#dd0000;">&#8216;logs&#8217;</span></font><font face="Courier New"><span style="color:#007700;">);    <br />
        </span><span style="color:#0000bb;">$this</span><span style="color:#007700;">-&gt;</span><span style="color:#0000bb;">out</span><span style="color:#007700;">(</span><span style="color:#dd0000;">&#8216;Logs cleaned.&#8217;</span></font><font face="Courier New"><span style="color:#007700;">);<br />
    }    </p>
<p>    function </span><span style="color:#0000bb;">cache</span></font><font face="Courier New"><span style="color:#007700;">() {<br />
        </span><span style="color:#0000bb;">$this</span><span style="color:#007700;">-&gt;</span><span style="color:#0000bb;">__clean</span><span style="color:#007700;">(</span><span style="color:#0000bb;">TMP </span><span style="color:#007700;">. </span><span style="color:#dd0000;">&#8216;cache&#8217; </span><span style="color:#007700;">. </span><span style="color:#0000bb;">DS </span><span style="color:#007700;">. </span><span style="color:#dd0000;">&#8216;models&#8217;</span></font><font face="Courier New"><span style="color:#007700;">);<br />
        </span><span style="color:#0000bb;">$this</span><span style="color:#007700;">-&gt;</span><span style="color:#0000bb;">__clean</span><span style="color:#007700;">(</span><span style="color:#0000bb;">TMP </span><span style="color:#007700;">. </span><span style="color:#dd0000;">&#8216;cache&#8217; </span><span style="color:#007700;">. </span><span style="color:#0000bb;">DS </span><span style="color:#007700;">. </span><span style="color:#dd0000;">&#8216;persistent&#8217;</span></font><font face="Courier New"><span style="color:#007700;">);        <br />
        </span><span style="color:#0000bb;">$this</span><span style="color:#007700;">-&gt;</span><span style="color:#0000bb;">out</span><span style="color:#007700;">(</span><span style="color:#dd0000;">&#8216;Cache cleaned.&#8217;</span></font><span style="color:#007700;"><font face="Courier New">);<br />
    }    <br />
    <br />
    <br />
  </font></span><font face="Courier New"><span style="color:#ff8000;">/**<br />
     * Handles CLI calls for the deploy task<br />
     *<br />
     * @param array $params<br />
     * @return unknown<br />
     */<br />
    </span><span style="color:#007700;">function </span><span style="color:#0000bb;">main</span><span style="color:#007700;">() { </span></font><font face="Courier New"><span style="color:#ff8000;">//$params<br />
        </span><span style="color:#0000bb;">$this</span><span style="color:#007700;">-&gt;</span><span style="color:#0000bb;">help</span></font><font face="Courier New"><span style="color:#007700;">();<br />
    }<br />
        <br />
}</p>
<p></span><span style="color:#0000bb;">?&gt;</span> </font></span></p>
<p><span style="color:#000000;"></span></p>
<p><span style="color:#000000;"><span style="color:#000000;"><span style="color:#0000bb;"><strong></strong></span></span></p>
<p></span></p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/cakeexplorer.wordpress.com/15/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/cakeexplorer.wordpress.com/15/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/cakeexplorer.wordpress.com/15/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/cakeexplorer.wordpress.com/15/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/cakeexplorer.wordpress.com/15/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/cakeexplorer.wordpress.com/15/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/cakeexplorer.wordpress.com/15/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/cakeexplorer.wordpress.com/15/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/cakeexplorer.wordpress.com/15/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/cakeexplorer.wordpress.com/15/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/cakeexplorer.wordpress.com/15/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/cakeexplorer.wordpress.com/15/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cakeexplorer.wordpress.com&blog=1571352&post=15&subd=cakeexplorer&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://cakeexplorer.wordpress.com/2007/11/18/clean-fast-clean-easy/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/2f11c840ab7eccb6788ab0c4331f5dad?s=96&#38;d=identicon" medium="image">
			<media:title type="html">CakeExplorer</media:title>
		</media:content>
	</item>
		<item>
		<title>Quick baking of project</title>
		<link>http://cakeexplorer.wordpress.com/2007/11/18/quick-baking-of-project/</link>
		<comments>http://cakeexplorer.wordpress.com/2007/11/18/quick-baking-of-project/#comments</comments>
		<pubDate>Sun, 18 Nov 2007 16:05:46 +0000</pubDate>
		<dc:creator>cakeexplorer</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://cakeexplorer.wordpress.com/2007/11/18/quick-baking-of-project/</guid>
		<description><![CDATA[In answer to post at google group i publick this simple shell utility that allow to generate list of &#8220;cake bake &#8230;&#8221; commands based on models in your database.
Usage &#8220;cake tasklist &#62; generated.cmd&#8221;
And after it just edit generated.cmd and run it.
&#60;?php
class TasklistShell extends Shell {
/**
 * Execution method always used for tasks
 *
 * @return void
 */
    function main() {
        $this-&#62;__interactiveAuto();
    }
/**
 * Handles auto baking
 *
 * @access private
 * @return void
 */
    function __interactiveAuto() {
        $this-&#62;out(&#8221;);
        $this-&#62;out(&#8221;);
        $useTable = null;
        $primaryKey = &#8216;id&#8217;;
        $validate = array();
        $associations = array(&#8216;belongsTo&#8217;=&#62; array(), &#8216;hasOne&#8217;=&#62; array(), &#8216;hasMany&#8217;, &#8216;hasAndBelongsToMany&#8217;=&#62; array());
        $useDbConfig = &#8216;default&#8217;;
        $this-&#62;listAll($useDbConfig);
        $db =&#38; ConnectionManager::getDataSource($useDbConfig);
        $this-&#62;out(&#8216;Models list&#8217;);
        $this-&#62;hr();
        foreach ($this-&#62;_modelNames as $model) {
            $this-&#62;out(&#8220;cake bake model $model auto&#8221;);
        }
        $this-&#62;out(&#8221;);
        $this-&#62;out(&#8221;);
        $this-&#62;out(&#8216;Controllers list&#8217;);
        $this-&#62;hr();
        foreach ($this-&#62;_modelNames as $model) {
            $controller=$this-&#62;_controllerName($model);
            $this-&#62;out(&#8220;cake bake controller $controller scaffold&#8221;);
        }
        $this-&#62;out(&#8221;);
        $this-&#62;out(&#8221;);
        $this-&#62;out(&#8216;Views list&#8217;);
        $this-&#62;hr();
        foreach ($this-&#62;_modelNames as $model) {
            $controller=$this-&#62;_controllerName($model);
            $this-&#62;out(&#8220;cake bake view $controller&#8221;);
        }
        $this-&#62;out(&#8221;);
        $this-&#62;out(&#8221;);
    }    
    
    
/**
 * outputs the a list of possible models or controllers from database
 *
 * @param string $useDbConfig
 * @param string $type = Models or Controllers
 * @return output
 */
    function listAll($useDbConfig = &#8216;default&#8217;) {
        $db =&#38; ConnectionManager::getDataSource($useDbConfig);
        $usePrefix = empty($db-&#62;config['prefix']) ? &#8221; : $db-&#62;config['prefix'];
        if ($usePrefix) {
            $tables = array();
            foreach ($db-&#62;listSources() as $table) {
                if (!strncmp($table, $usePrefix, strlen($usePrefix))) {
                    $tables[] = substr($table, strlen($usePrefix));
                }
            }
        } else {
            $tables = $db-&#62;listSources();
        }
        $this-&#62;__tables = $tables;
        //$this-&#62;out(&#8216;Possible Models based on your current database:&#8217;);
        $this-&#62;_modelNames = array();
        $count = count($tables);
        for ($i = 0; $i &#60; $count; $i++) {
            $this-&#62;_modelNames[] = $this-&#62;_modelName($tables[$i]);
            //$this-&#62;out($i + 1 . &#8221;. &#8221; . $this-&#62;_modelNames[$i]);
        }
    }
/**
 * Forces the user to specify the model he wants to bake, and returns the selected model name.
 *
 * @return the model name
 */
    function getName($useDbConfig) {
        $this-&#62;listAll($useDbConfig);
        $enteredModel = &#8221;;
        while ($enteredModel == &#8221;) {
            $enteredModel = $this-&#62;in(&#8216;Enter a number from the list above, or type in the name of another model.&#8217;);
            if ($enteredModel == &#8221; &#124;&#124; intval($enteredModel) &#62; count($this-&#62;_modelNames)) {
                $this-&#62;out(&#8216;Error:&#8217;);
                $this-&#62;out(&#8220;The model name you supplied was empty, or the number \nyou selected was not an option. Please try again.&#8221;);
                $enteredModel = &#8221;;
            }
        }
        if (intval($enteredModel) &#62; 0 &#38;&#38; intval($enteredModel) &#60;= count($this-&#62;_modelNames)) {
            $currentModelName = $this-&#62;_modelNames[intval($enteredModel) - 1];
        } else {
            $currentModelName = $enteredModel;
        }
        return $currentModelName;
    }
/**
 * Displays help contents
 *
 * @return void
 */
    function help() {
        $this-&#62;hr();
        $this-&#62;out(&#8220;Usage: cake tasklist&#8221;);
        $this-&#62;hr();
        $this-&#62;out(&#8220;this shell generate list of bake commands&#8221;);
        $this-&#62;out(&#8220;&#8221;);
        exit();
    }
}
?&#62; 
       <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cakeexplorer.wordpress.com&blog=1571352&post=14&subd=cakeexplorer&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>In answer to post at google group i publick this simple shell utility that allow to generate list of &#8220;cake bake &#8230;&#8221; commands based on models in your database.</p>
<p>Usage &#8220;cake tasklist &gt; generated.cmd&#8221;</p>
<p>And after it just edit generated.cmd and run it.</p>
<p><span style="color:#000000;"><font face="Courier New"><span style="color:#0000bb;">&lt;?php</p>
<p></span><span style="color:#007700;">class </span><span style="color:#0000bb;">TasklistShell </span><span style="color:#007700;">extends </span><span style="color:#0000bb;">Shell </span></font><span style="color:#007700;"><font face="Courier New">{</p>
<p></font></span><font face="Courier New"><span style="color:#ff8000;">/**<br />
 * Execution method always used for tasks<br />
 *<br />
 * @return void<br />
 */<br />
    </span><span style="color:#007700;">function </span><span style="color:#0000bb;">main</span></font><font face="Courier New"><span style="color:#007700;">() {<br />
        </span><span style="color:#0000bb;">$this</span><span style="color:#007700;">-&gt;</span><span style="color:#0000bb;">__interactiveAuto</span></font><span style="color:#007700;"><font face="Courier New">();</p>
<p>    }</p>
<p></font></span><font face="Courier New"><span style="color:#ff8000;">/**<br />
 * Handles auto baking<br />
 *<br />
 * @access private<br />
 * @return void<br />
 */<br />
    </span><span style="color:#007700;">function </span><span style="color:#0000bb;">__interactiveAuto</span></font><font face="Courier New"><span style="color:#007700;">() {<br />
        </span><span style="color:#0000bb;">$this</span><span style="color:#007700;">-&gt;</span><span style="color:#0000bb;">out</span><span style="color:#007700;">(</span><span style="color:#dd0000;">&#8221;</span></font><font face="Courier New"><span style="color:#007700;">);<br />
        </span><span style="color:#0000bb;">$this</span><span style="color:#007700;">-&gt;</span><span style="color:#0000bb;">out</span><span style="color:#007700;">(</span><span style="color:#dd0000;">&#8221;</span></font><font face="Courier New"><span style="color:#007700;">);<br />
        </span><span style="color:#0000bb;">$useTable </span><span style="color:#007700;">= </span><span style="color:#0000bb;">null</span></font><font face="Courier New"><span style="color:#007700;">;<br />
        </span><span style="color:#0000bb;">$primaryKey </span><span style="color:#007700;">= </span><span style="color:#dd0000;">&#8216;id&#8217;</span></font><font face="Courier New"><span style="color:#007700;">;<br />
        </span><span style="color:#0000bb;">$validate </span></font><font face="Courier New"><span style="color:#007700;">= array();<br />
        </span><span style="color:#0000bb;">$associations </span><span style="color:#007700;">= array(</span><span style="color:#dd0000;">&#8216;belongsTo&#8217;</span><span style="color:#007700;">=&gt; array(), </span><span style="color:#dd0000;">&#8216;hasOne&#8217;</span><span style="color:#007700;">=&gt; array(), </span><span style="color:#dd0000;">&#8216;hasMany&#8217;</span><span style="color:#007700;">, </span><span style="color:#dd0000;">&#8216;hasAndBelongsToMany&#8217;</span></font><font face="Courier New"><span style="color:#007700;">=&gt; array());<br />
        </span><span style="color:#0000bb;">$useDbConfig </span><span style="color:#007700;">= </span><span style="color:#dd0000;">&#8216;default&#8217;</span></font><font face="Courier New"><span style="color:#007700;">;<br />
        </span><span style="color:#0000bb;">$this</span><span style="color:#007700;">-&gt;</span><span style="color:#0000bb;">listAll</span><span style="color:#007700;">(</span><span style="color:#0000bb;">$useDbConfig</span></font><font face="Courier New"><span style="color:#007700;">);</p>
<p>        </span><span style="color:#0000bb;">$db </span><span style="color:#007700;">=&amp; </span><span style="color:#0000bb;">ConnectionManager</span><span style="color:#007700;">::</span><span style="color:#0000bb;">getDataSource</span><span style="color:#007700;">(</span><span style="color:#0000bb;">$useDbConfig</span></font><font face="Courier New"><span style="color:#007700;">);</p>
<p>        </span><span style="color:#0000bb;">$this</span><span style="color:#007700;">-&gt;</span><span style="color:#0000bb;">out</span><span style="color:#007700;">(</span><span style="color:#dd0000;">&#8216;Models list&#8217;</span></font><font face="Courier New"><span style="color:#007700;">);<br />
        </span><span style="color:#0000bb;">$this</span><span style="color:#007700;">-&gt;</span><span style="color:#0000bb;">hr</span></font><font face="Courier New"><span style="color:#007700;">();<br />
        foreach (</span><span style="color:#0000bb;">$this</span><span style="color:#007700;">-&gt;</span><span style="color:#0000bb;">_modelNames </span><span style="color:#007700;">as </span><span style="color:#0000bb;">$model</span></font><font face="Courier New"><span style="color:#007700;">) {<br />
            </span><span style="color:#0000bb;">$this</span><span style="color:#007700;">-&gt;</span><span style="color:#0000bb;">out</span><span style="color:#007700;">(</span><span style="color:#dd0000;">&#8220;cake bake model $model auto&#8221;</span></font><font face="Courier New"><span style="color:#007700;">);<br />
        }<br />
        </span><span style="color:#0000bb;">$this</span><span style="color:#007700;">-&gt;</span><span style="color:#0000bb;">out</span><span style="color:#007700;">(</span><span style="color:#dd0000;">&#8221;</span></font><font face="Courier New"><span style="color:#007700;">);<br />
        </span><span style="color:#0000bb;">$this</span><span style="color:#007700;">-&gt;</span><span style="color:#0000bb;">out</span><span style="color:#007700;">(</span><span style="color:#dd0000;">&#8221;</span></font><font face="Courier New"><span style="color:#007700;">);</p>
<p>        </span><span style="color:#0000bb;">$this</span><span style="color:#007700;">-&gt;</span><span style="color:#0000bb;">out</span><span style="color:#007700;">(</span><span style="color:#dd0000;">&#8216;Controllers list&#8217;</span></font><font face="Courier New"><span style="color:#007700;">);<br />
        </span><span style="color:#0000bb;">$this</span><span style="color:#007700;">-&gt;</span><span style="color:#0000bb;">hr</span></font><font face="Courier New"><span style="color:#007700;">();<br />
        foreach (</span><span style="color:#0000bb;">$this</span><span style="color:#007700;">-&gt;</span><span style="color:#0000bb;">_modelNames </span><span style="color:#007700;">as </span><span style="color:#0000bb;">$model</span></font><font face="Courier New"><span style="color:#007700;">) {<br />
            </span><span style="color:#0000bb;">$controller</span><span style="color:#007700;">=</span><span style="color:#0000bb;">$this</span><span style="color:#007700;">-&gt;</span><span style="color:#0000bb;">_controllerName</span><span style="color:#007700;">(</span><span style="color:#0000bb;">$model</span></font><font face="Courier New"><span style="color:#007700;">);<br />
            </span><span style="color:#0000bb;">$this</span><span style="color:#007700;">-&gt;</span><span style="color:#0000bb;">out</span><span style="color:#007700;">(</span><span style="color:#dd0000;">&#8220;cake bake controller $controller scaffold&#8221;</span></font><font face="Courier New"><span style="color:#007700;">);<br />
        }<br />
        </span><span style="color:#0000bb;">$this</span><span style="color:#007700;">-&gt;</span><span style="color:#0000bb;">out</span><span style="color:#007700;">(</span><span style="color:#dd0000;">&#8221;</span></font><font face="Courier New"><span style="color:#007700;">);<br />
        </span><span style="color:#0000bb;">$this</span><span style="color:#007700;">-&gt;</span><span style="color:#0000bb;">out</span><span style="color:#007700;">(</span><span style="color:#dd0000;">&#8221;</span></font><font face="Courier New"><span style="color:#007700;">);</p>
<p>        </span><span style="color:#0000bb;">$this</span><span style="color:#007700;">-&gt;</span><span style="color:#0000bb;">out</span><span style="color:#007700;">(</span><span style="color:#dd0000;">&#8216;Views list&#8217;</span></font><font face="Courier New"><span style="color:#007700;">);<br />
        </span><span style="color:#0000bb;">$this</span><span style="color:#007700;">-&gt;</span><span style="color:#0000bb;">hr</span></font><font face="Courier New"><span style="color:#007700;">();<br />
        foreach (</span><span style="color:#0000bb;">$this</span><span style="color:#007700;">-&gt;</span><span style="color:#0000bb;">_modelNames </span><span style="color:#007700;">as </span><span style="color:#0000bb;">$model</span></font><font face="Courier New"><span style="color:#007700;">) {<br />
            </span><span style="color:#0000bb;">$controller</span><span style="color:#007700;">=</span><span style="color:#0000bb;">$this</span><span style="color:#007700;">-&gt;</span><span style="color:#0000bb;">_controllerName</span><span style="color:#007700;">(</span><span style="color:#0000bb;">$model</span></font><font face="Courier New"><span style="color:#007700;">);<br />
            </span><span style="color:#0000bb;">$this</span><span style="color:#007700;">-&gt;</span><span style="color:#0000bb;">out</span><span style="color:#007700;">(</span><span style="color:#dd0000;">&#8220;cake bake view $controller&#8221;</span></font><font face="Courier New"><span style="color:#007700;">);<br />
        }<br />
        </span><span style="color:#0000bb;">$this</span><span style="color:#007700;">-&gt;</span><span style="color:#0000bb;">out</span><span style="color:#007700;">(</span><span style="color:#dd0000;">&#8221;</span></font><font face="Courier New"><span style="color:#007700;">);<br />
        </span><span style="color:#0000bb;">$this</span><span style="color:#007700;">-&gt;</span><span style="color:#0000bb;">out</span><span style="color:#007700;">(</span><span style="color:#dd0000;">&#8221;</span></font><span style="color:#007700;"><font face="Courier New">);</p>
<p>    }    <br />
    <br />
    </p>
<p></font></span><font face="Courier New"><span style="color:#ff8000;">/**<br />
 * outputs the a list of possible models or controllers from database<br />
 *<br />
 * @param string $useDbConfig<br />
 * @param string $type = Models or Controllers<br />
 * @return output<br />
 */<br />
    </span><span style="color:#007700;">function </span><span style="color:#0000bb;">listAll</span><span style="color:#007700;">(</span><span style="color:#0000bb;">$useDbConfig </span><span style="color:#007700;">= </span><span style="color:#dd0000;">&#8216;default&#8217;</span></font><font face="Courier New"><span style="color:#007700;">) {<br />
        </span><span style="color:#0000bb;">$db </span><span style="color:#007700;">=&amp; </span><span style="color:#0000bb;">ConnectionManager</span><span style="color:#007700;">::</span><span style="color:#0000bb;">getDataSource</span><span style="color:#007700;">(</span><span style="color:#0000bb;">$useDbConfig</span></font><font face="Courier New"><span style="color:#007700;">);<br />
        </span><span style="color:#0000bb;">$usePrefix </span><span style="color:#007700;">= empty(</span><span style="color:#0000bb;">$db</span><span style="color:#007700;">-&gt;</span><span style="color:#0000bb;">config</span><span style="color:#007700;">[</span><span style="color:#dd0000;">'prefix'</span><span style="color:#007700;">]) ? </span><span style="color:#dd0000;">&#8221; </span><span style="color:#007700;">: </span><span style="color:#0000bb;">$db</span><span style="color:#007700;">-&gt;</span><span style="color:#0000bb;">config</span><span style="color:#007700;">[</span><span style="color:#dd0000;">'prefix'</span></font><font face="Courier New"><span style="color:#007700;">];<br />
        if (</span><span style="color:#0000bb;">$usePrefix</span></font><font face="Courier New"><span style="color:#007700;">) {<br />
            </span><span style="color:#0000bb;">$tables </span></font><font face="Courier New"><span style="color:#007700;">= array();<br />
            foreach (</span><span style="color:#0000bb;">$db</span><span style="color:#007700;">-&gt;</span><span style="color:#0000bb;">listSources</span><span style="color:#007700;">() as </span><span style="color:#0000bb;">$table</span></font><font face="Courier New"><span style="color:#007700;">) {<br />
                if (!</span><span style="color:#0000bb;">strncmp</span><span style="color:#007700;">(</span><span style="color:#0000bb;">$table</span><span style="color:#007700;">, </span><span style="color:#0000bb;">$usePrefix</span><span style="color:#007700;">, </span><span style="color:#0000bb;">strlen</span><span style="color:#007700;">(</span><span style="color:#0000bb;">$usePrefix</span></font><font face="Courier New"><span style="color:#007700;">))) {<br />
                    </span><span style="color:#0000bb;">$tables</span><span style="color:#007700;">[] = </span><span style="color:#0000bb;">substr</span><span style="color:#007700;">(</span><span style="color:#0000bb;">$table</span><span style="color:#007700;">, </span><span style="color:#0000bb;">strlen</span><span style="color:#007700;">(</span><span style="color:#0000bb;">$usePrefix</span></font><font face="Courier New"><span style="color:#007700;">));<br />
                }<br />
            }<br />
        } else {<br />
            </span><span style="color:#0000bb;">$tables </span><span style="color:#007700;">= </span><span style="color:#0000bb;">$db</span><span style="color:#007700;">-&gt;</span><span style="color:#0000bb;">listSources</span></font><font face="Courier New"><span style="color:#007700;">();<br />
        }<br />
        </span><span style="color:#0000bb;">$this</span><span style="color:#007700;">-&gt;</span><span style="color:#0000bb;">__tables </span><span style="color:#007700;">= </span><span style="color:#0000bb;">$tables</span></font><span style="color:#007700;"><font face="Courier New">;<br />
        </font></span><font face="Courier New"><span style="color:#ff8000;">//$this-&gt;out(&#8216;Possible Models based on your current database:&#8217;);<br />
        </span><span style="color:#0000bb;">$this</span><span style="color:#007700;">-&gt;</span><span style="color:#0000bb;">_modelNames </span></font><font face="Courier New"><span style="color:#007700;">= array();<br />
        </span><span style="color:#0000bb;">$count </span><span style="color:#007700;">= </span><span style="color:#0000bb;">count</span><span style="color:#007700;">(</span><span style="color:#0000bb;">$tables</span></font><font face="Courier New"><span style="color:#007700;">);<br />
        for (</span><span style="color:#0000bb;">$i </span><span style="color:#007700;">= </span><span style="color:#0000bb;">0</span><span style="color:#007700;">; </span><span style="color:#0000bb;">$i </span><span style="color:#007700;">&lt; </span><span style="color:#0000bb;">$count</span><span style="color:#007700;">; </span><span style="color:#0000bb;">$i</span></font><font face="Courier New"><span style="color:#007700;">++) {<br />
            </span><span style="color:#0000bb;">$this</span><span style="color:#007700;">-&gt;</span><span style="color:#0000bb;">_modelNames</span><span style="color:#007700;">[] = </span><span style="color:#0000bb;">$this</span><span style="color:#007700;">-&gt;</span><span style="color:#0000bb;">_modelName</span><span style="color:#007700;">(</span><span style="color:#0000bb;">$tables</span><span style="color:#007700;">[</span><span style="color:#0000bb;">$i</span></font><span style="color:#007700;"><font face="Courier New">]);<br />
            </font></span><span style="color:#ff8000;"><font face="Courier New">//$this-&gt;out($i + 1 . &#8221;. &#8221; . $this-&gt;_modelNames[$i]);<br />
        </font></span><span style="color:#007700;"><font face="Courier New">}<br />
    }</p>
<p></font></span><font face="Courier New"><span style="color:#ff8000;">/**<br />
 * Forces the user to specify the model he wants to bake, and returns the selected model name.<br />
 *<br />
 * @return the model name<br />
 */<br />
    </span><span style="color:#007700;">function </span><span style="color:#0000bb;">getName</span><span style="color:#007700;">(</span><span style="color:#0000bb;">$useDbConfig</span></font><font face="Courier New"><span style="color:#007700;">) {<br />
        </span><span style="color:#0000bb;">$this</span><span style="color:#007700;">-&gt;</span><span style="color:#0000bb;">listAll</span><span style="color:#007700;">(</span><span style="color:#0000bb;">$useDbConfig</span></font><font face="Courier New"><span style="color:#007700;">);</p>
<p>        </span><span style="color:#0000bb;">$enteredModel </span><span style="color:#007700;">= </span><span style="color:#dd0000;">&#8221;</span></font><font face="Courier New"><span style="color:#007700;">;</p>
<p>        while (</span><span style="color:#0000bb;">$enteredModel </span><span style="color:#007700;">== </span><span style="color:#dd0000;">&#8221;</span></font><font face="Courier New"><span style="color:#007700;">) {<br />
            </span><span style="color:#0000bb;">$enteredModel </span><span style="color:#007700;">= </span><span style="color:#0000bb;">$this</span><span style="color:#007700;">-&gt;</span><span style="color:#0000bb;">in</span><span style="color:#007700;">(</span><span style="color:#dd0000;">&#8216;Enter a number from the list above, or type in the name of another model.&#8217;</span></font><font face="Courier New"><span style="color:#007700;">);</p>
<p>            if (</span><span style="color:#0000bb;">$enteredModel </span><span style="color:#007700;">== </span><span style="color:#dd0000;">&#8221; </span><span style="color:#007700;">|| </span><span style="color:#0000bb;">intval</span><span style="color:#007700;">(</span><span style="color:#0000bb;">$enteredModel</span><span style="color:#007700;">) &gt; </span><span style="color:#0000bb;">count</span><span style="color:#007700;">(</span><span style="color:#0000bb;">$this</span><span style="color:#007700;">-&gt;</span><span style="color:#0000bb;">_modelNames</span></font><font face="Courier New"><span style="color:#007700;">)) {<br />
                </span><span style="color:#0000bb;">$this</span><span style="color:#007700;">-&gt;</span><span style="color:#0000bb;">out</span><span style="color:#007700;">(</span><span style="color:#dd0000;">&#8216;Error:&#8217;</span></font><font face="Courier New"><span style="color:#007700;">);<br />
                </span><span style="color:#0000bb;">$this</span><span style="color:#007700;">-&gt;</span><span style="color:#0000bb;">out</span><span style="color:#007700;">(</span><span style="color:#dd0000;">&#8220;The model name you supplied was empty, or the number \nyou selected was not an option. Please try again.&#8221;</span></font><font face="Courier New"><span style="color:#007700;">);<br />
                </span><span style="color:#0000bb;">$enteredModel </span><span style="color:#007700;">= </span><span style="color:#dd0000;">&#8221;</span></font><font face="Courier New"><span style="color:#007700;">;<br />
            }<br />
        }</p>
<p>        if (</span><span style="color:#0000bb;">intval</span><span style="color:#007700;">(</span><span style="color:#0000bb;">$enteredModel</span><span style="color:#007700;">) &gt; </span><span style="color:#0000bb;">0 </span><span style="color:#007700;">&amp;&amp; </span><span style="color:#0000bb;">intval</span><span style="color:#007700;">(</span><span style="color:#0000bb;">$enteredModel</span><span style="color:#007700;">) &lt;= </span><span style="color:#0000bb;">count</span><span style="color:#007700;">(</span><span style="color:#0000bb;">$this</span><span style="color:#007700;">-&gt;</span><span style="color:#0000bb;">_modelNames</span></font><font face="Courier New"><span style="color:#007700;">)) {<br />
            </span><span style="color:#0000bb;">$currentModelName </span><span style="color:#007700;">= </span><span style="color:#0000bb;">$this</span><span style="color:#007700;">-&gt;</span><span style="color:#0000bb;">_modelNames</span><span style="color:#007700;">[</span><span style="color:#0000bb;">intval</span><span style="color:#007700;">(</span><span style="color:#0000bb;">$enteredModel</span><span style="color:#007700;">) - </span><span style="color:#0000bb;">1</span></font><font face="Courier New"><span style="color:#007700;">];<br />
        } else {<br />
            </span><span style="color:#0000bb;">$currentModelName </span><span style="color:#007700;">= </span><span style="color:#0000bb;">$enteredModel</span></font><font face="Courier New"><span style="color:#007700;">;<br />
        }</p>
<p>        return </span><span style="color:#0000bb;">$currentModelName</span></font><span style="color:#007700;"><font face="Courier New">;<br />
    }<br />
</font></span><font face="Courier New"><span style="color:#ff8000;">/**<br />
 * Displays help contents<br />
 *<br />
 * @return void<br />
 */<br />
    </span><span style="color:#007700;">function </span><span style="color:#0000bb;">help</span></font><font face="Courier New"><span style="color:#007700;">() {<br />
        </span><span style="color:#0000bb;">$this</span><span style="color:#007700;">-&gt;</span><span style="color:#0000bb;">hr</span></font><font face="Courier New"><span style="color:#007700;">();<br />
        </span><span style="color:#0000bb;">$this</span><span style="color:#007700;">-&gt;</span><span style="color:#0000bb;">out</span><span style="color:#007700;">(</span><span style="color:#dd0000;">&#8220;Usage: cake tasklist&#8221;</span></font><font face="Courier New"><span style="color:#007700;">);<br />
        </span><span style="color:#0000bb;">$this</span><span style="color:#007700;">-&gt;</span><span style="color:#0000bb;">hr</span></font><font face="Courier New"><span style="color:#007700;">();<br />
        </span><span style="color:#0000bb;">$this</span><span style="color:#007700;">-&gt;</span><span style="color:#0000bb;">out</span><span style="color:#007700;">(</span><span style="color:#dd0000;">&#8220;this shell generate list of bake commands&#8221;</span></font><font face="Courier New"><span style="color:#007700;">);<br />
        </span><span style="color:#0000bb;">$this</span><span style="color:#007700;">-&gt;</span><span style="color:#0000bb;">out</span><span style="color:#007700;">(</span><span style="color:#dd0000;">&#8220;&#8221;</span></font><font face="Courier New"><span style="color:#007700;">);<br />
        exit();<br />
    }<br />
}<br />
</span><span style="color:#0000bb;">?&gt;</span> </font></span></p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/cakeexplorer.wordpress.com/14/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/cakeexplorer.wordpress.com/14/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/cakeexplorer.wordpress.com/14/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/cakeexplorer.wordpress.com/14/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/cakeexplorer.wordpress.com/14/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/cakeexplorer.wordpress.com/14/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/cakeexplorer.wordpress.com/14/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/cakeexplorer.wordpress.com/14/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/cakeexplorer.wordpress.com/14/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/cakeexplorer.wordpress.com/14/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/cakeexplorer.wordpress.com/14/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/cakeexplorer.wordpress.com/14/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cakeexplorer.wordpress.com&blog=1571352&post=14&subd=cakeexplorer&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://cakeexplorer.wordpress.com/2007/11/18/quick-baking-of-project/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/2f11c840ab7eccb6788ab0c4331f5dad?s=96&#38;d=identicon" medium="image">
			<media:title type="html">CakeExplorer</media:title>
		</media:content>
	</item>
		<item>
		<title>Benchmark for HTBTM queries</title>
		<link>http://cakeexplorer.wordpress.com/2007/11/13/benchmark-for-htbtm-queries/</link>
		<comments>http://cakeexplorer.wordpress.com/2007/11/13/benchmark-for-htbtm-queries/#comments</comments>
		<pubDate>Tue, 13 Nov 2007 10:13:56 +0000</pubDate>
		<dc:creator>cakeexplorer</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://cakeexplorer.wordpress.com/2007/11/13/benchmark-for-htbtm-queries/</guid>
		<description><![CDATA[Goal: 
The goal of test is retrieve all articles tagged by one or several tags. So we doesn’t need the list of tags for each articles, but we need the conditions on the HABTM Tag model. We want to see articles list paginated with 30-50 records on each page. There is two possibility for searching articles my specific [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cakeexplorer.wordpress.com&blog=1571352&post=13&subd=cakeexplorer&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p><strong><span><font face="Times New Roman">Goal:</font></span></strong><span><font face="Times New Roman"> </font></span></p>
<p><span></span><span><font face="Times New Roman">The goal of test is retrieve all articles tagged by one or several tags. <strong>So we doesn’t need the list of tags for each articles</strong>, but we need the conditions on the HABTM Tag model.</font></span><span><font face="Times New Roman"><span> </span>We want to see articles list paginated with 30-50 records on each page.</font></span><span><font face="Times New Roman"> </font></span><span><font face="Times New Roman">There is two possibility for searching articles my specific tags.</font></span><span><font face="Times New Roman"> </font></span><span><font face="Times New Roman">1) Use internal cakePHP search with condition to hasbtm model:</font></span><span><font face="Times New Roman"> </font></span><code><span style="font-size:10pt;color:#007700;">        </span></code></p>
<p><code><span style="font-size:10pt;color:#007700;"></span></code><code><span style="font-size:10pt;color:#0000bb;">$this</span></code><code><span style="font-size:10pt;color:#007700;">-&gt;</span></code><code><span style="font-size:10pt;color:#0000bb;">unbindAll</span></code><code><span style="font-size:10pt;color:#007700;">(array(</span></code><code><span style="font-size:10pt;color:#dd0000;">'hasAndBelongsToMany' </span></code><code><span style="font-size:10pt;color:#007700;">=&gt; array(</span></code><code><span style="font-size:10pt;color:#dd0000;">'Tag'</span></code><code><span style="font-size:10pt;color:#007700;">))); </span></code><span style="font-size:10pt;color:#007700;font-family:'Courier New';"><br />
</span><code><span style="font-size:10pt;color:#0000bb;">$this</span></code><code><span style="font-size:10pt;color:#007700;">-&gt;</span></code><code><span style="font-size:10pt;color:#0000bb;">hasAndBelongsToMany</span></code><code><span style="font-size:10pt;color:#007700;">[</span></code><code><span style="font-size:10pt;color:#dd0000;">'Tag'</span></code><code><span style="font-size:10pt;color:#007700;">][</span></code><code><span style="font-size:10pt;color:#dd0000;">'conditions'</span></code><code><span style="font-size:10pt;color:#007700;">] = </span></code><code><span style="font-size:10pt;color:#0000bb;">$this</span></code><code><span style="font-size:10pt;color:#007700;">-&gt;</span></code><code><span style="font-size:10pt;color:#0000bb;">cond </span></code><code><span style="font-size:10pt;color:#007700;">; </span></code><span style="font-size:10pt;color:#007700;font-family:'Courier New';"><br />
</span><code><span style="font-size:10pt;color:#0000bb;">$result</span></code><code><span style="font-size:10pt;color:#007700;">=</span></code><code><span style="font-size:10pt;color:#0000bb;">$this</span></code><code><span style="font-size:10pt;color:#007700;">-&gt;</span></code><code><span style="font-size:10pt;color:#0000bb;">findAll</span></code><code><span style="font-size:10pt;color:#007700;">( array(</span></code><code><span style="font-size:10pt;color:#dd0000;">'Article.id' </span></code><code><span style="font-size:10pt;color:#007700;">=&gt; </span></code><code><span style="font-size:10pt;color:#0000bb;">range</span></code><code><span style="font-size:10pt;color:#007700;">(</span></code><code><span style="font-size:10pt;color:#0000bb;">200</span></code><code><span style="font-size:10pt;color:#007700;">,</span></code><code><span style="font-size:10pt;color:#0000bb;">250</span></code><code><span style="font-size:10pt;color:#007700;">)));</span></code><code><span style="font-size:10pt;color:#007700;"> </span></code></p>
<p><code><span style="font-size:10pt;color:#007700;"></span></code><span><font face="Times New Roman">In this case executed two query ([2], [3]). First used for conditions on Article model, and based on it cake build second query [3] condition. </font></span><span><font face="Times New Roman">2) Use my extension of dbo_mysql driver that posted at bakery: </font><a href="http://bakery.cakephp.org/articles/view/extending-of-dbosource-and-model-with-sql-generator-function"><font face="Times New Roman">http://bakery.cakephp.org/articles/view/extending-of-dbosource-and-model-with-sql-generator-function</font></a></span><span><font face="Times New Roman"> </font></span><code><span style="font-size:10pt;color:#007700;">        </span></code></p>
<p><code><span style="font-size:10pt;color:#007700;"></span></code><code><span style="font-size:10pt;color:#0000bb;">$this</span></code><code><span style="font-size:10pt;color:#007700;">-&gt;</span></code><code><span style="font-size:10pt;color:#0000bb;">unbindAll</span></code><code><span style="font-size:10pt;color:#007700;">();</span></code><code><span style="font-size:10pt;color:#007700;">        </span></code></p>
<p><code><span style="font-size:10pt;color:#007700;"></span></code><code><span style="font-size:10pt;color:#0000bb;">$this</span></code><code><span style="font-size:10pt;color:#007700;">-&gt;</span></code><code><span style="font-size:10pt;color:#0000bb;">ArticlesTag</span></code><code><span style="font-size:10pt;color:#007700;">-&gt;</span></code><code><span style="font-size:10pt;color:#0000bb;">unbindAll</span></code><code><span style="font-size:10pt;color:#007700;">(array(</span></code><code><span style="font-size:10pt;color:#dd0000;">'belongsTo' </span></code><code><span style="font-size:10pt;color:#007700;">=&gt; array(</span></code><code><span style="font-size:10pt;color:#dd0000;">'Tag'</span></code><code><span style="font-size:10pt;color:#007700;">))); </span></code><span style="font-size:10pt;color:#007700;font-family:'Courier New';"><br />
</span><code><span style="font-size:10pt;color:#0000bb;">$q</span></code><code><span style="font-size:10pt;color:#007700;">=</span></code><code><span style="font-size:10pt;color:#0000bb;">$this</span></code><code><span style="font-size:10pt;color:#007700;">-&gt;</span></code><code><span style="font-size:10pt;color:#0000bb;">ArticlesTag</span></code><code><span style="font-size:10pt;color:#007700;">-&gt;</span></code><code><span style="font-size:10pt;color:#0000bb;">getQuery</span></code><code><span style="font-size:10pt;color:#007700;">(</span></code><code><span style="font-size:10pt;color:#0000bb;">$this</span></code><code><span style="font-size:10pt;color:#007700;">-&gt;</span></code><code><span style="font-size:10pt;color:#0000bb;">cond</span></code><code><span style="font-size:10pt;color:#007700;">,</span></code><code><span style="font-size:10pt;color:#dd0000;">'article_id'</span></code><code><span style="font-size:10pt;color:#007700;">);  </span></code><span style="font-size:10pt;color:#007700;font-family:'Courier New';"><br />
</span><code><span style="font-size:10pt;color:#0000bb;">$result</span></code><code><span style="font-size:10pt;color:#007700;">=</span></code><code><span style="font-size:10pt;color:#0000bb;">$this</span></code><code><span style="font-size:10pt;color:#007700;">-&gt;</span></code><code><span style="font-size:10pt;color:#0000bb;">findAll</span></code><code><span style="font-size:10pt;color:#007700;">(array(  array( </span></code><code><span style="font-size:10pt;color:#dd0000;">'Article.id' </span></code><code><span style="font-size:10pt;color:#007700;">=&gt; </span></code><code><span style="font-size:10pt;color:#0000bb;">range</span></code><code><span style="font-size:10pt;color:#007700;">(</span></code><code><span style="font-size:10pt;color:#0000bb;">200</span></code><code><span style="font-size:10pt;color:#007700;">,</span></code><code><span style="font-size:10pt;color:#0000bb;">250</span></code><code><span style="font-size:10pt;color:#007700;">),</span></code><code><span style="font-size:10pt;color:#007700;">  </span></code><code><span style="font-size:10pt;color:#dd0000;">'id' </span></code><code><span style="font-size:10pt;color:#007700;">=&gt; </span></code><code><span style="font-size:10pt;color:#dd0000;">"IN -!("</span></code><code><span style="font-size:10pt;color:#007700;">. </span></code><code><span style="font-size:10pt;color:#0000bb;">$q </span></code><code><span style="font-size:10pt;color:#007700;">.</span></code><code><span style="font-size:10pt;color:#dd0000;">")"</span></code><code><span style="font-size:10pt;color:#007700;">),));</span></code><span></span><span><font face="Times New Roman"> </font></span><span><font face="Times New Roman"> </font></span></p>
<p><span></span><span><font face="Times New Roman">In this case buld only one query to DB [1]. This query is combination of [2] and [3].</font></span><span><font face="Times New Roman"> </font></span></p>
<table border="0" cellPadding="0" cellSpacing="0" class="MsoNormalTable">
<thead>
<td style="background-color:transparent;border:#d4d0c8;padding:0.75pt;"><strong><span style="font-size:8pt;"><font face="Times New Roman">Nr</font></span></strong></td>
<td style="background-color:transparent;border:#d4d0c8;padding:0.75pt;"><strong><span style="font-size:6pt;"><font face="Times New Roman">Query</font></span></strong></td>
<td style="background-color:transparent;border:#d4d0c8;padding:0.75pt;"><strong><span style="font-size:8pt;"><font face="Times New Roman">Affected</font></span></strong></td>
<td style="background-color:transparent;border:#d4d0c8;padding:0.75pt;"><strong><span style="font-size:8pt;"><font face="Times New Roman">Num. rows</font></span></strong></td>
<td style="background-color:transparent;border:#d4d0c8;padding:0.75pt;"><strong><span style="font-size:8pt;"><font face="Times New Roman">Took (ms)</font></span></strong></td>
</tr>
<tr>
<td style="background-color:transparent;border:#d4d0c8;padding:0.75pt;"><span style="font-size:8pt;"><font face="Times New Roman">1</font></span></td>
<td style="background-color:transparent;border:#d4d0c8;padding:0.75pt;"><span style="font-size:6pt;"><font face="Times New Roman">SELECT `Article`.`id`, `Article`.`num`, `Article`.`subject`, `Article`.`body` FROM `articles` AS `Article` WHERE (`Article`.`id` IN (200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250) ) AND (`id` IN (SELECT `ArticlesTag`.`article_id` FROM `articles_tags` AS `ArticlesTag` LEFT JOIN `tags` AS `Tag` ON (`ArticlesTag`.`tag_id` = `Tag`.`id`) WHERE ((`Tag`.`tag` like &#8216;text%&#8217;) OR (`tag` like &#8216;%msg%&#8217;)) )) </font></span><span style="font-size:6pt;"><font face="Times New Roman"> </font></span></td>
<td style="background-color:transparent;border:#d4d0c8;padding:0.75pt;"><span style="font-size:8pt;"><font face="Times New Roman">51</font></span></td>
<td style="background-color:transparent;border:#d4d0c8;padding:0.75pt;"><span style="font-size:8pt;"><font face="Times New Roman">51</font></span></td>
<td style="background-color:transparent;border:#d4d0c8;padding:0.75pt;"><span style="font-size:8pt;"><font face="Times New Roman">2</font></span></td>
</tr>
<tr>
<td style="background-color:transparent;border:#d4d0c8;padding:0.75pt;"><span style="font-size:8pt;"><font face="Times New Roman">2</font></span></td>
<td style="background-color:transparent;border:#d4d0c8;padding:0.75pt;"><span style="font-size:6pt;"><font face="Times New Roman">SELECT `Article`.`id`, `Article`.`num`, `Article`.`subject`, `Article`.`body` FROM `articles` AS `Article` WHERE `Article`.`id` IN (200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250) </font></span></td>
<td style="background-color:transparent;border:#d4d0c8;padding:0.75pt;"><span style="font-size:8pt;"><font face="Times New Roman">51</font></span></td>
<td style="background-color:transparent;border:#d4d0c8;padding:0.75pt;"><span style="font-size:8pt;"><font face="Times New Roman">51</font></span></td>
<td style="background-color:transparent;border:#d4d0c8;padding:0.75pt;"><span style="font-size:8pt;"><font face="Times New Roman">1</font></span></td>
</tr>
<tr>
<td style="background-color:transparent;border:#d4d0c8;padding:0.75pt;"><span style="font-size:8pt;"><font face="Times New Roman">3</font></span></td>
<td style="background-color:transparent;border:#d4d0c8;padding:0.75pt;"><span style="font-size:6pt;"><font face="Times New Roman">SELECT `Tag`.`id`, `Tag`.`num`, `Tag`.`tag`, `ArticlesTag`.`tag_id`, `ArticlesTag`.`article_id` FROM `tags` AS `Tag` JOIN `articles_tags` AS `ArticlesTag` ON (`ArticlesTag`.`article_id` IN (200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250) AND `ArticlesTag`.`tag_id` = `Tag`.`id`) WHERE ((`Tag`.`tag` like &#8216;text%&#8217;) OR (`tag` like &#8216;%msg%&#8217;)) </font></span></td>
<td style="background-color:transparent;border:#d4d0c8;padding:0.75pt;"><span style="font-size:8pt;"><font face="Times New Roman">290</font></span></td>
<td style="background-color:transparent;border:#d4d0c8;padding:0.75pt;"><span style="font-size:8pt;"><font face="Times New Roman">290</font></span></td>
<td style="background-color:transparent;border:#d4d0c8;padding:0.75pt;"><span style="font-size:8pt;"><font face="Times New Roman">5</font></span></td>
</tr>
</table>
<p><span><font face="Times New Roman"> </font></span><span><font face="Times New Roman"> </font></span><span><font face="Times New Roman"> </font></span></p>
<p><span></span><span><font face="Times New Roman">Time for both query is comparable (6 ms for first test, and 2ms for second).</font></span><span><font face="Times New Roman"> </font></span><span><font face="Times New Roman">Average 10 test runs show next results</font></span><span><font face="Times New Roman">native method: 0.2427011013031</font></span><span><font face="Times New Roman">dbo_mysql_ext method: 0.026184034347534</font></span><span><font face="Times New Roman"> </font></span><span><font face="Times New Roman"><span><font face="Times New Roman">As we analyze before mysql does not take many time so most time lost in data analyzation in case of cake core method. In first variant cake spend time for placing hasbtm records to parents. As I mention before we doesn’t need the list of tags for each articles.</font></span><span><font face="Times New Roman"> </font></span></p>
<p></font></span><span></span></p>
<p><span></span><strong><span><font face="Times New Roman">Conclussion:</font></span></strong><span><font face="Times New Roman"> </font></span></p>
<p><span></span><span><font face="Times New Roman">So we see that the extension of dbo driver give good perfomance (about ten times) in comparisson cake core method.</font></span><span><font face="Times New Roman"> </font></span></p>
<p><span></span></p>
<p><span></span><strong><span><font face="Times New Roman">Run benchmark:</font></span></strong><span><font face="Times New Roman"><span> </span></font></span></p>
<p><span><font face="Times New Roman"><span> </span>1. Download file <a href="http://cakeexplorersamples.googlecode.com/files/bench.zip">http://cakeexplorersamples.googlecode.com/files/bench.zip</a></font></span><span><font face="Times New Roman"><span>  </span></font></span></p>
<p><span><font face="Times New Roman"><span></span>2. Start ‘cake schema create’</font></span><span><font face="Times New Roman"><span>  </span></font></span></p>
<p><span><font face="Times New Roman"><span></span>3. Populate test data by calling /articles/generate</font></span><span><font face="Times New Roman"><span>  </span></font></span></p>
<p><span><font face="Times New Roman"><span></span>4. Run test by calling /articles/bench</font></span><span><font face="Times New Roman"> </font></span><span><font face="Times New Roman"> </font></span></p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/cakeexplorer.wordpress.com/13/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/cakeexplorer.wordpress.com/13/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/cakeexplorer.wordpress.com/13/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/cakeexplorer.wordpress.com/13/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/cakeexplorer.wordpress.com/13/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/cakeexplorer.wordpress.com/13/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/cakeexplorer.wordpress.com/13/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/cakeexplorer.wordpress.com/13/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/cakeexplorer.wordpress.com/13/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/cakeexplorer.wordpress.com/13/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/cakeexplorer.wordpress.com/13/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/cakeexplorer.wordpress.com/13/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cakeexplorer.wordpress.com&blog=1571352&post=13&subd=cakeexplorer&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://cakeexplorer.wordpress.com/2007/11/13/benchmark-for-htbtm-queries/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/2f11c840ab7eccb6788ab0c4331f5dad?s=96&#38;d=identicon" medium="image">
			<media:title type="html">CakeExplorer</media:title>
		</media:content>
	</item>
		<item>
		<title>Nearer and nearer to RoR.</title>
		<link>http://cakeexplorer.wordpress.com/2007/10/22/nearer-and-nearer-to-ror/</link>
		<comments>http://cakeexplorer.wordpress.com/2007/10/22/nearer-and-nearer-to-ror/#comments</comments>
		<pubDate>Mon, 22 Oct 2007 12:32:21 +0000</pubDate>
		<dc:creator>cakeexplorer</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[cakephp model find]]></category>

		<guid isPermaLink="false">http://cakeexplorer.wordpress.com/2007/10/22/nearer-and-nearer-to-ror/</guid>
		<description><![CDATA[As all know on cakephp.org annonced pre beta build of 1.2 branch.
I want to write about last changes in Model::find method.
Now possible to call it even instead of findAll and findCount methods with next syntaxes
 findAll($conditions, $fields, $order, $limit, $page, $recursive) is the same as
find(&#8216;all&#8217;, array(&#8216;conditions&#8217; =&#62; $conditions, &#8216;fields&#8217; =&#62; $fields, &#8216;order&#8217;=&#62; $order, &#8216;limit&#8217;=&#62; $limit, &#8216;page&#8217;=&#62; $page, &#8216;recursive&#8217;=&#62; $recursive));
 find($conditions, [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cakeexplorer.wordpress.com&blog=1571352&post=12&subd=cakeexplorer&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>As all know on cakephp.org annonced pre beta build of 1.2 branch.</p>
<p>I want to write about last changes in Model::find method.</p>
<p>Now possible to call it even instead of findAll and findCount methods with next syntaxes</p>
<p> findAll($conditions, $fields, $order, $limit, $page, $recursive) is the same as<br />
find(&#8216;all&#8217;, array(&#8216;conditions&#8217; =&gt; $conditions, &#8216;fields&#8217; =&gt; $fields, &#8216;order&#8217;=&gt; $order, &#8216;limit&#8217;=&gt; $limit, &#8216;page&#8217;=&gt; $page, &#8216;recursive&#8217;=&gt; $recursive));</p>
<p> find($conditions, $fields, $order, $limit, $page, $recursive) is the same as<br />
find(&#8216;first&#8217;, array(&#8216;conditions&#8217; =&gt; $conditions, &#8216;fields&#8217; =&gt; $fields, &#8216;order&#8217;=&gt; $order, &#8216;limit&#8217;=&gt; $limit, &#8216;page&#8217;=&gt; $page, &#8216;recursive&#8217;=&gt; $recursive));</p>
<p> function findCount($conditions, $recursive) is the same as<br />
find(&#8216;count&#8217;, array(&#8216;conditions&#8217; =&gt; $conditions, &#8216;recursive&#8217;=&gt; $recursive));</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/cakeexplorer.wordpress.com/12/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/cakeexplorer.wordpress.com/12/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/cakeexplorer.wordpress.com/12/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/cakeexplorer.wordpress.com/12/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/cakeexplorer.wordpress.com/12/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/cakeexplorer.wordpress.com/12/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/cakeexplorer.wordpress.com/12/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/cakeexplorer.wordpress.com/12/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/cakeexplorer.wordpress.com/12/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/cakeexplorer.wordpress.com/12/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/cakeexplorer.wordpress.com/12/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/cakeexplorer.wordpress.com/12/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cakeexplorer.wordpress.com&blog=1571352&post=12&subd=cakeexplorer&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://cakeexplorer.wordpress.com/2007/10/22/nearer-and-nearer-to-ror/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/2f11c840ab7eccb6788ab0c4331f5dad?s=96&#38;d=identicon" medium="image">
			<media:title type="html">CakeExplorer</media:title>
		</media:content>
	</item>
		<item>
		<title>Extending of DboSource and Model with sql generator function.</title>
		<link>http://cakeexplorer.wordpress.com/2007/10/08/extending-of-dbosource-and-model-with-sql-generator-function/</link>
		<comments>http://cakeexplorer.wordpress.com/2007/10/08/extending-of-dbosource-and-model-with-sql-generator-function/#comments</comments>
		<pubDate>Mon, 08 Oct 2007 14:37:44 +0000</pubDate>
		<dc:creator>cakeexplorer</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://cakeexplorer.wordpress.com/2007/10/08/extending-of-dbosource-and-model-with-sql-generator-function/</guid>
		<description><![CDATA[Some times in SQL is very usefull and efficiency to use query from query using IN function. Some project require it. But Cakephp does not generate such queries and we need to create such requests to DB by hand.
Look at example. We have users in groups. So we want choose a users has same groups [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cakeexplorer.wordpress.com&blog=1571352&post=11&subd=cakeexplorer&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Some times in SQL is very usefull and efficiency to use query from query using IN function. Some project require it. But Cakephp does not generate such queries and we need to create such requests to DB by hand.</p>
<p>Look at example. We have users in groups. So we want choose a users has same groups with specific user $u1.</p>
<p><code><span style="color:#000000;">select * from users<br />
where group_id in (select group_id from users where id=$u1).<br />
</span></code></p>
<p>How to make such query in CakePHP.</p>
<p>It is possible to make it only in most handly way.<br />
<code><span style="color:#000000;">$this-&gt;User-&gt;findAll(array('group_id' =&gt; "in (select group_id from users where id=$u1)"));<br />
</span></code></p>
<p>But when we work with Cake much more pretty to make all queries in similar sintax sugar type.</p>
<p>What about to rewrite previours example in next way:</p>
<p><code><span style="color:#000000;">$this-&gt;User-&gt;findAll(array('group_id' =&gt; "in -!(". $this-&gt;User-&gt;getQuery(array('id'=&gt; $u1) . ')', 'group_id')));<br />
</span></code></p>
<p>Function Model::getQuery shuld take similar parameter as Model::findAll method and return SQL query to DB.</p>
<p>Is this possible to create such function without changing CORE files?<br />
My answer is YES!!!<br />
Really all what we need is extending of Model and DboMysql classes.<br />
We need to add two methods &#8211; both are based on cake core libraries (Model::findAll and DboSource::read).</p>
<p>For Model class all pretty simple. We just place our new function to AppModel or to some behavior.<br />
But what about extending DboMysql driver class? Is this possible. Really cakephp 1.2 support such feature.<br />
We need to create class extension in folder app/model/datasource/dbo<br />
I name it DboMysqlEx – file is dbo_mysql_ex.php.</p>
<h3>Configuration:</h3>
<p>We need to use other db connection for model User all for all model where we need new feature.</p>
<p>In app/config/database.php we need to use new driver: &#8216;driver&#8217; =&gt; &#8216;mysql_ex&#8217;,</p>
<h4>DATABASE_CONFIG</h4>
<p><code><span style="color:#000000;"><br />
class DATABASE_CONFIG { </span></code><code><span style="color:#000000;">    var $default = array(<br />
        'driver' =&gt; 'mysql_ex',<br />
        'persistent' =&gt; false,<br />
        'host' =&gt; 'localhost',<br />
        'login' =&gt; 'root',<br />
        'password' =&gt; '',<br />
        'database' =&gt; 'testing',<br />
        'prefix' =&gt; ''<br />
    );<br />
}</p>
<p></span></code></p>
<h4>  </h4>
<h4>
<h4>APP_MODEL:</h4>
<h4><strong>Model Class:</strong></h4>
<p><code><span style="color:#000000;"><span style="color:#0000bb;">&lt;?php  <br /></span><span style="color:#007700;">class </span><span style="color:#0000bb;">AppModel </span><span style="color:#007700;">extends </span><span style="color:#0000bb;">Model</span><span style="color:#007700;">{ <br />    function </span><span style="color:#0000bb;">getQuery</span><span style="color:#007700;">(</span><span style="color:#0000bb;">$conditions </span><span style="color:#007700;">= </span><span style="color:#0000bb;">null</span><span style="color:#007700;">, </span><span style="color:#0000bb;">$fields </span><span style="color:#007700;">= </span><span style="color:#0000bb;">null</span><span style="color:#007700;">, </span><span style="color:#0000bb;">$order </span><span style="color:#007700;">= </span><span style="color:#0000bb;">null</span><span style="color:#007700;">, </span><span style="color:#0000bb;">$limit </span><span style="color:#007700;">= </span><span style="color:#0000bb;">null</span><span style="color:#007700;">, </span><span style="color:#0000bb;">$page </span><span style="color:#007700;">= </span><span style="color:#0000bb;">1</span><span style="color:#007700;">, </span><span style="color:#0000bb;">$recursive </span><span style="color:#007700;">= </span><span style="color:#0000bb;">null</span><span style="color:#007700;">) { <br />        </span><span style="color:#0000bb;">$db </span><span style="color:#007700;">=&amp; </span><span style="color:#0000bb;">ConnectionManager</span><span style="color:#007700;">::</span><span style="color:#0000bb;">getDataSource</span><span style="color:#007700;">(</span><span style="color:#0000bb;">$this</span><span style="color:#007700;">-&gt;</span><span style="color:#0000bb;">useDbConfig</span><span style="color:#007700;">); <br />        </span><span style="color:#0000bb;">$this</span><span style="color:#007700;">-&gt;</span><span style="color:#0000bb;">id </span><span style="color:#007700;">= </span><span style="color:#0000bb;">$this</span><span style="color:#007700;">-&gt;</span><span style="color:#0000bb;">getID</span><span style="color:#007700;">(); <br />        </span><span style="color:#0000bb;">$offset </span><span style="color:#007700;">= </span><span style="color:#0000bb;">null</span><span style="color:#007700;">; </p>
<p>        if (empty(</span><span style="color:#0000bb;">$page</span><span style="color:#007700;">) || !</span><span style="color:#0000bb;">is_numeric</span><span style="color:#007700;">(</span><span style="color:#0000bb;">$page</span><span style="color:#007700;">) || </span><span style="color:#0000bb;">intval</span><span style="color:#007700;">(</span><span style="color:#0000bb;">$page</span><span style="color:#007700;">) &lt; </span><span style="color:#0000bb;">1</span><span style="color:#007700;">) { <br />            </span><span style="color:#0000bb;">$page </span><span style="color:#007700;">= </span><span style="color:#0000bb;">1</span><span style="color:#007700;">; <br />        } </p>
<p>        if (</span><span style="color:#0000bb;">$page </span><span style="color:#007700;">&gt; </span><span style="color:#0000bb;">1 </span><span style="color:#007700;">&amp;&amp; </span><span style="color:#0000bb;">$limit </span><span style="color:#007700;">!= </span><span style="color:#0000bb;">null</span><span style="color:#007700;">) { <br />            </span><span style="color:#0000bb;">$offset </span><span style="color:#007700;">= (</span><span style="color:#0000bb;">$page </span><span style="color:#007700;">- </span><span style="color:#0000bb;">1</span><span style="color:#007700;">) * </span><span style="color:#0000bb;">$limit</span><span style="color:#007700;">; <br />        } </p>
<p>        if (</span><span style="color:#0000bb;">$order </span><span style="color:#007700;">== </span><span style="color:#0000bb;">null </span><span style="color:#007700;">&amp;&amp; </span><span style="color:#0000bb;">$order </span><span style="color:#007700;">!== </span><span style="color:#0000bb;">false</span><span style="color:#007700;">) { <br />            if (</span><span style="color:#0000bb;">$this</span><span style="color:#007700;">-&gt;</span><span style="color:#0000bb;">order </span><span style="color:#007700;">== </span><span style="color:#0000bb;">null</span><span style="color:#007700;">) { <br />                </span><span style="color:#0000bb;">$order </span><span style="color:#007700;">= array(); <br />            } else { <br />                </span><span style="color:#0000bb;">$order </span><span style="color:#007700;">= array(</span><span style="color:#0000bb;">$this</span><span style="color:#007700;">-&gt;</span><span style="color:#0000bb;">order</span><span style="color:#007700;">); <br />            } <br />        } else { <br />            </span><span style="color:#0000bb;">$order </span><span style="color:#007700;">= array(</span><span style="color:#0000bb;">$order</span><span style="color:#007700;">); <br />        } </p>
<p>        </span><span style="color:#0000bb;">$queryData </span><span style="color:#007700;">= array( <br />            </span><span style="color:#dd0000;">'conditions' </span><span style="color:#007700;">=&gt; </span><span style="color:#0000bb;">$conditions</span><span style="color:#007700;">, <br />            </span><span style="color:#dd0000;">'fields'    </span><span style="color:#007700;">=&gt; </span><span style="color:#0000bb;">$fields</span><span style="color:#007700;">, <br />            </span><span style="color:#dd0000;">'joins'     </span><span style="color:#007700;">=&gt; array(), <br />            </span><span style="color:#dd0000;">'limit'     </span><span style="color:#007700;">=&gt; </span><span style="color:#0000bb;">$limit</span><span style="color:#007700;">, <br />            </span><span style="color:#dd0000;">'offset'    </span><span style="color:#007700;">=&gt; </span><span style="color:#0000bb;">$offset</span><span style="color:#007700;">, <br />            </span><span style="color:#dd0000;">'order'     </span><span style="color:#007700;">=&gt; </span><span style="color:#0000bb;">$order <br />        </span><span style="color:#007700;">); </p>
<p>        if (!empty(</span><span style="color:#0000bb;">$this</span><span style="color:#007700;">-&gt;</span><span style="color:#0000bb;">behaviors</span><span style="color:#007700;">)) { <br />            </span><span style="color:#0000bb;">$behaviors </span><span style="color:#007700;">= </span><span style="color:#0000bb;">array_keys</span><span style="color:#007700;">(</span><span style="color:#0000bb;">$this</span><span style="color:#007700;">-&gt;</span><span style="color:#0000bb;">behaviors</span><span style="color:#007700;">); <br />            </span><span style="color:#0000bb;">$ct </span><span style="color:#007700;">= </span><span style="color:#0000bb;">count</span><span style="color:#007700;">(</span><span style="color:#0000bb;">$behaviors</span><span style="color:#007700;">); <br />            for (</span><span style="color:#0000bb;">$i </span><span style="color:#007700;">= </span><span style="color:#0000bb;">0</span><span style="color:#007700;">; </span><span style="color:#0000bb;">$i </span><span style="color:#007700;">&lt; </span><span style="color:#0000bb;">$ct</span><span style="color:#007700;">; </span><span style="color:#0000bb;">$i</span><span style="color:#007700;">++) { <br />                </span><span style="color:#0000bb;">$ret </span><span style="color:#007700;">= </span><span style="color:#0000bb;">$this</span><span style="color:#007700;">-&gt;</span><span style="color:#0000bb;">behaviors</span><span style="color:#007700;">[</span><span style="color:#0000bb;">$behaviors</span><span style="color:#007700;">[</span><span style="color:#0000bb;">$i</span><span style="color:#007700;">]]-&gt;</span><span style="color:#0000bb;">beforeFind</span><span style="color:#007700;">(</span><span style="color:#0000bb;">$this</span><span style="color:#007700;">, </span><span style="color:#0000bb;">$queryData</span><span style="color:#007700;">); <br />                if (</span><span style="color:#0000bb;">is_array</span><span style="color:#007700;">(</span><span style="color:#0000bb;">$ret</span><span style="color:#007700;">)) { <br />                    </span><span style="color:#0000bb;">$queryData </span><span style="color:#007700;">= </span><span style="color:#0000bb;">$ret</span><span style="color:#007700;">; <br />                } elseif (</span><span style="color:#0000bb;">$ret </span><span style="color:#007700;">=== </span><span style="color:#0000bb;">false</span><span style="color:#007700;">) { <br />                    return </span><span style="color:#0000bb;">null</span><span style="color:#007700;">; <br />                } <br />            } <br />        } </p>
<p>        </span><span style="color:#0000bb;">$ret </span><span style="color:#007700;">= </span><span style="color:#0000bb;">$this</span><span style="color:#007700;">-&gt;</span><span style="color:#0000bb;">beforeFind</span><span style="color:#007700;">(</span><span style="color:#0000bb;">$queryData</span><span style="color:#007700;">); <br />        if (</span><span style="color:#0000bb;">is_array</span><span style="color:#007700;">(</span><span style="color:#0000bb;">$ret</span><span style="color:#007700;">)) { <br />            </span><span style="color:#0000bb;">$queryData </span><span style="color:#007700;">= </span><span style="color:#0000bb;">$ret</span><span style="color:#007700;">; <br />        } elseif (</span><span style="color:#0000bb;">$ret </span><span style="color:#007700;">=== </span><span style="color:#0000bb;">false</span><span style="color:#007700;">) { <br />            return </span><span style="color:#0000bb;">null</span><span style="color:#007700;">; <br />        } </p>
<p>        return </span><span style="color:#0000bb;">$db</span><span style="color:#007700;">-&gt;</span><span style="color:#0000bb;">queryGet</span><span style="color:#007700;">(</span><span style="color:#0000bb;">$this</span><span style="color:#007700;">, </span><span style="color:#0000bb;">$queryData</span><span style="color:#007700;">, </span><span style="color:#0000bb;">$recursive</span><span style="color:#007700;">); <br />    } <br />} <br /></span><span style="color:#0000bb;">?&gt;</span> </span></code></p>
<p></p>
<h4>app/model/datasource/dbo/dbo_mysql_ex.php</h4>
<p></p>
<h4><strong>Model Class:</strong></h4>
<p><code><span style="color:#000000;"><span style="color:#0000bb;">&lt;?php  <br />  <br /></span><span style="color:#007700;">require (</span><span style="color:#0000bb;">LIBS </span><span style="color:#007700;">. </span><span style="color:#dd0000;">'model' </span><span style="color:#007700;">. </span><span style="color:#0000bb;">DS </span><span style="color:#007700;">. </span><span style="color:#dd0000;">'datasources' </span><span style="color:#007700;">. </span><span style="color:#0000bb;">DS </span><span style="color:#007700;">. </span><span style="color:#dd0000;">'dbo' </span><span style="color:#007700;">. </span><span style="color:#0000bb;">DS </span><span style="color:#007700;">. </span><span style="color:#dd0000;">'dbo_mysql.php'</span><span style="color:#007700;">); <br />  <br />class </span><span style="color:#0000bb;">DboMysqlEx </span><span style="color:#007700;">extends </span><span style="color:#0000bb;">DboMysql </span><span style="color:#007700;">{ <br /></span><span style="color:#ff8000;">/** <br /> * Enter description here... <br /> * <br /> * @var unknown_type <br /> */ <br />    </span><span style="color:#007700;">var </span><span style="color:#0000bb;">$description </span><span style="color:#007700;">= </span><span style="color:#dd0000;">"MySQL DBO Extension Driver"</span><span style="color:#007700;">; <br />     <br />    function </span><span style="color:#0000bb;">queryGet</span><span style="color:#007700;">(&amp;</span><span style="color:#0000bb;">$model</span><span style="color:#007700;">, </span><span style="color:#0000bb;">$queryData </span><span style="color:#007700;">= array(), </span><span style="color:#0000bb;">$recursive </span><span style="color:#007700;">= </span><span style="color:#0000bb;">null</span><span style="color:#007700;">) { <br />        </span><span style="color:#0000bb;">$this</span><span style="color:#007700;">-&gt;</span><span style="color:#0000bb;">__scrubQueryData</span><span style="color:#007700;">(</span><span style="color:#0000bb;">$queryData</span><span style="color:#007700;">); <br />        </span><span style="color:#0000bb;">$null </span><span style="color:#007700;">= </span><span style="color:#0000bb;">null</span><span style="color:#007700;">; <br />        </span><span style="color:#0000bb;">$array </span><span style="color:#007700;">= array(); <br />        </span><span style="color:#0000bb;">$linkedModels </span><span style="color:#007700;">= array(); <br />        </span><span style="color:#0000bb;">$this</span><span style="color:#007700;">-&gt;</span><span style="color:#0000bb;">__bypass </span><span style="color:#007700;">= </span><span style="color:#0000bb;">false</span><span style="color:#007700;">; </p>
<p>        if (!</span><span style="color:#0000bb;">is_null</span><span style="color:#007700;">(</span><span style="color:#0000bb;">$recursive</span><span style="color:#007700;">)) { <br />            </span><span style="color:#0000bb;">$_recursive </span><span style="color:#007700;">= </span><span style="color:#0000bb;">$model</span><span style="color:#007700;">-&gt;</span><span style="color:#0000bb;">recursive</span><span style="color:#007700;">; <br />            </span><span style="color:#0000bb;">$model</span><span style="color:#007700;">-&gt;</span><span style="color:#0000bb;">recursive </span><span style="color:#007700;">= </span><span style="color:#0000bb;">$recursive</span><span style="color:#007700;">; <br />        } </p>
<p>        if (!empty(</span><span style="color:#0000bb;">$queryData</span><span style="color:#007700;">[</span><span style="color:#dd0000;">'fields'</span><span style="color:#007700;">])) { <br />            </span><span style="color:#0000bb;">$this</span><span style="color:#007700;">-&gt;</span><span style="color:#0000bb;">__bypass </span><span style="color:#007700;">= </span><span style="color:#0000bb;">true</span><span style="color:#007700;">; <br />            </span><span style="color:#0000bb;">$queryData</span><span style="color:#007700;">[</span><span style="color:#dd0000;">'fields'</span><span style="color:#007700;">] = </span><span style="color:#0000bb;">$this</span><span style="color:#007700;">-&gt;</span><span style="color:#0000bb;">fields</span><span style="color:#007700;">(</span><span style="color:#0000bb;">$model</span><span style="color:#007700;">, </span><span style="color:#0000bb;">null</span><span style="color:#007700;">, </span><span style="color:#0000bb;">$queryData</span><span style="color:#007700;">[</span><span style="color:#dd0000;">'fields'</span><span style="color:#007700;">]); <br />        } else { <br />            </span><span style="color:#0000bb;">$queryData</span><span style="color:#007700;">[</span><span style="color:#dd0000;">'fields'</span><span style="color:#007700;">] = </span><span style="color:#0000bb;">$this</span><span style="color:#007700;">-&gt;</span><span style="color:#0000bb;">fields</span><span style="color:#007700;">(</span><span style="color:#0000bb;">$model</span><span style="color:#007700;">); <br />        } </p>
<p>        foreach (</span><span style="color:#0000bb;">$model</span><span style="color:#007700;">-&gt;</span><span style="color:#0000bb;">__associations </span><span style="color:#007700;">as </span><span style="color:#0000bb;">$type</span><span style="color:#007700;">) { <br />            foreach (</span><span style="color:#0000bb;">$model</span><span style="color:#007700;">-&gt;{</span><span style="color:#0000bb;">$type</span><span style="color:#007700;">} as </span><span style="color:#0000bb;">$assoc </span><span style="color:#007700;">=&gt; </span><span style="color:#0000bb;">$assocData</span><span style="color:#007700;">) { <br />                if (</span><span style="color:#0000bb;">$model</span><span style="color:#007700;">-&gt;</span><span style="color:#0000bb;">recursive </span><span style="color:#007700;">&gt; -</span><span style="color:#0000bb;">1</span><span style="color:#007700;">) { <br />                    </span><span style="color:#0000bb;">$linkModel </span><span style="color:#007700;">=&amp; </span><span style="color:#0000bb;">$model</span><span style="color:#007700;">-&gt;{</span><span style="color:#0000bb;">$assoc</span><span style="color:#007700;">}; </p>
<p>                    </span><span style="color:#0000bb;">$external </span><span style="color:#007700;">= isset(</span><span style="color:#0000bb;">$assocData</span><span style="color:#007700;">[</span><span style="color:#dd0000;">'external'</span><span style="color:#007700;">]); <br />                    if (</span><span style="color:#0000bb;">$model</span><span style="color:#007700;">-&gt;</span><span style="color:#0000bb;">name </span><span style="color:#007700;">== </span><span style="color:#0000bb;">$linkModel</span><span style="color:#007700;">-&gt;</span><span style="color:#0000bb;">name </span><span style="color:#007700;">&amp;&amp; </span><span style="color:#0000bb;">$type </span><span style="color:#007700;">!= </span><span style="color:#dd0000;">'hasAndBelongsToMany' </span><span style="color:#007700;">&amp;&amp; </span><span style="color:#0000bb;">$type </span><span style="color:#007700;">!= </span><span style="color:#dd0000;">'hasMany'</span><span style="color:#007700;">) { <br />                        if (</span><span style="color:#0000bb;">true </span><span style="color:#007700;">=== </span><span style="color:#0000bb;">$this</span><span style="color:#007700;">-&gt;</span><span style="color:#0000bb;">generateSelfAssociationQuery</span><span style="color:#007700;">(</span><span style="color:#0000bb;">$model</span><span style="color:#007700;">, </span><span style="color:#0000bb;">$linkModel</span><span style="color:#007700;">, </span><span style="color:#0000bb;">$type</span><span style="color:#007700;">, </span><span style="color:#0000bb;">$assoc</span><span style="color:#007700;">, </span><span style="color:#0000bb;">$assocData</span><span style="color:#007700;">, </span><span style="color:#0000bb;">$queryData</span><span style="color:#007700;">, </span><span style="color:#0000bb;">$external</span><span style="color:#007700;">, </span><span style="color:#0000bb;">$null</span><span style="color:#007700;">)) { <br />                            </span><span style="color:#0000bb;">$linkedModels</span><span style="color:#007700;">[] = </span><span style="color:#0000bb;">$type </span><span style="color:#007700;">. </span><span style="color:#dd0000;">'/' </span><span style="color:#007700;">. </span><span style="color:#0000bb;">$assoc</span><span style="color:#007700;">; <br />                        } <br />                    } else { <br />                        if (</span><span style="color:#0000bb;">$model</span><span style="color:#007700;">-&gt;</span><span style="color:#0000bb;">useDbConfig </span><span style="color:#007700;">== </span><span style="color:#0000bb;">$linkModel</span><span style="color:#007700;">-&gt;</span><span style="color:#0000bb;">useDbConfig</span><span style="color:#007700;">) { <br />                            if (</span><span style="color:#0000bb;">true </span><span style="color:#007700;">=== </span><span style="color:#0000bb;">$this</span><span style="color:#007700;">-&gt;</span><span style="color:#0000bb;">generateAssociationQuery</span><span style="color:#007700;">(</span><span style="color:#0000bb;">$model</span><span style="color:#007700;">, </span><span style="color:#0000bb;">$linkModel</span><span style="color:#007700;">, </span><span style="color:#0000bb;">$type</span><span style="color:#007700;">, </span><span style="color:#0000bb;">$assoc</span><span style="color:#007700;">, </span><span style="color:#0000bb;">$assocData</span><span style="color:#007700;">, </span><span style="color:#0000bb;">$queryData</span><span style="color:#007700;">, </span><span style="color:#0000bb;">$external</span><span style="color:#007700;">, </span><span style="color:#0000bb;">$null</span><span style="color:#007700;">)) { <br />                                </span><span style="color:#0000bb;">$linkedModels</span><span style="color:#007700;">[] = </span><span style="color:#0000bb;">$type </span><span style="color:#007700;">. </span><span style="color:#dd0000;">'/' </span><span style="color:#007700;">. </span><span style="color:#0000bb;">$assoc</span><span style="color:#007700;">; <br />                            } <br />                        } <br />                    } <br />                } <br />            } <br />        } <br />        </span><span style="color:#ff8000;">// Build final query SQL <br />        </span><span style="color:#007700;">return </span><span style="color:#0000bb;">$this</span><span style="color:#007700;">-&gt;</span><span style="color:#0000bb;">generateAssociationQuery</span><span style="color:#007700;">(</span><span style="color:#0000bb;">$model</span><span style="color:#007700;">, </span><span style="color:#0000bb;">$null</span><span style="color:#007700;">, </span><span style="color:#0000bb;">null</span><span style="color:#007700;">, </span><span style="color:#0000bb;">null</span><span style="color:#007700;">, </span><span style="color:#0000bb;">null</span><span style="color:#007700;">, </span><span style="color:#0000bb;">$queryData</span><span style="color:#007700;">, </span><span style="color:#0000bb;">false</span><span style="color:#007700;">, </span><span style="color:#0000bb;">$null</span><span style="color:#007700;">); <br />    } <br />     <br />     <br />} <br /></span><span style="color:#0000bb;">?&gt;</span> </span></code></p>
<p>  </h4>
<h4><code><span style="color:#000000;"></span></code></h4>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/cakeexplorer.wordpress.com/11/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/cakeexplorer.wordpress.com/11/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/cakeexplorer.wordpress.com/11/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/cakeexplorer.wordpress.com/11/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/cakeexplorer.wordpress.com/11/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/cakeexplorer.wordpress.com/11/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/cakeexplorer.wordpress.com/11/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/cakeexplorer.wordpress.com/11/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/cakeexplorer.wordpress.com/11/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/cakeexplorer.wordpress.com/11/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/cakeexplorer.wordpress.com/11/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/cakeexplorer.wordpress.com/11/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cakeexplorer.wordpress.com&blog=1571352&post=11&subd=cakeexplorer&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://cakeexplorer.wordpress.com/2007/10/08/extending-of-dbosource-and-model-with-sql-generator-function/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/2f11c840ab7eccb6788ab0c4331f5dad?s=96&#38;d=identicon" medium="image">
			<media:title type="html">CakeExplorer</media:title>
		</media:content>
	</item>
		<item>
		<title>Improve your routes or add most common case to end of route table</title>
		<link>http://cakeexplorer.wordpress.com/2007/09/11/improve-your-routes-or-add-most-common-case-to-end-of-route-table/</link>
		<comments>http://cakeexplorer.wordpress.com/2007/09/11/improve-your-routes-or-add-most-common-case-to-end-of-route-table/#comments</comments>
		<pubDate>Tue, 11 Sep 2007 19:31:17 +0000</pubDate>
		<dc:creator>cakeexplorer</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://cakeexplorer.wordpress.com/2007/09/11/improve-your-routes-or-add-most-common-case-to-end-of-route-table/</guid>
		<description><![CDATA[Regular task is keep all routes to controller action is normall way, and all other links used as a link by name of user profile for example.
 So /controller1/action1 should redirect to action1 of controller1, and /username1 or /username2 should open profiles of users. 

First of all i create component with function that return list of all controllers. [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cakeexplorer.wordpress.com&blog=1571352&post=10&subd=cakeexplorer&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p><span style="color:#007700;"><font color="#000000"><span style="color:#000000;"><font face="Courier New"><span style="color:#007700;"><font color="#000000">Regular task is keep all routes to controller action is normall way, and all other links used as a link by name of user profile for example.</font></span></font></span></font></span></p>
<p><span style="color:#007700;"><font color="#000000"><span style="color:#000000;"><font face="Courier New"><span style="color:#007700;"><font color="#000000"> So /controller1/action1 should redirect to action1 of controller1, and /username1 or /username2 should open profiles of users. </font></span></font></span></font></span></p>
<p><span style="color:#007700;"><font color="#000000"><span style="color:#000000;"><font face="Courier New"><span style="color:#007700;"></span></font></span></font></span></p>
<p><span style="color:#007700;"><font color="#000000"><span style="color:#000000;"><font face="Courier New"><span style="color:#007700;"><font color="#000000">First of all i create component with function that return list of all controllers. Code is based on Felix blog post (thinkingphp.org)</font></span></font></span></font><span style="color:#007700;"></span></span></p>
<p><span style="color:#000000;"><font face="Courier New"><span style="color:#0000bb;">&lt;?php<br />
</span><span style="color:#007700;">class </span><span style="color:#0000bb;">UtilsComponent </span><span style="color:#007700;">extends </span></font><span style="color:#0000bb;"><font face="Courier New">Object<br />
</font></span><font face="Courier New"><span style="color:#007700;">{</p>
<p>    var </span><span style="color:#0000bb;">$controller</span></font><font face="Courier New"><span style="color:#007700;">; </p>
<p>    function </span><span style="color:#0000bb;">startup</span><span style="color:#007700;">(&amp;</span><span style="color:#0000bb;">$controller</span></font><font face="Courier New"><span style="color:#007700;">) {<br />
        </span><span style="color:#0000bb;">$this</span><span style="color:#007700;">-&gt;</span><span style="color:#0000bb;">controller </span><span style="color:#007700;">= &amp;</span><span style="color:#0000bb;">$controller</span></font><font face="Courier New"><span style="color:#007700;">;<br />
    } </p>
<p>    function </span><span style="color:#0000bb;">listControllers</span></font><font face="Courier New"><span style="color:#007700;">() {<br />
        </span><span style="color:#0000bb;">$Configure </span><span style="color:#007700;">=&amp; </span><span style="color:#0000bb;">Configure</span><span style="color:#007700;">::</span><span style="color:#0000bb;">getInstance</span></font><font face="Courier New"><span style="color:#007700;">();<br />
        </span><span style="color:#0000bb;">$controllers </span></font><font face="Courier New"><span style="color:#007700;">= array();<br />
        foreach(</span><span style="color:#0000bb;">$Configure</span><span style="color:#007700;">-&gt;</span><span style="color:#0000bb;">controllerPaths </span><span style="color:#007700;">as </span><span style="color:#0000bb;">$path</span></font><font face="Courier New"><span style="color:#007700;">) {<br />
            </span><span style="color:#0000bb;">$controllers </span><span style="color:#007700;">= </span><span style="color:#0000bb;">am</span><span style="color:#007700;">(</span><span style="color:#0000bb;">$controllers</span><span style="color:#007700;">, </span><span style="color:#0000bb;">array_map</span><span style="color:#007700;">(array(&amp;</span><span style="color:#0000bb;">$this</span><span style="color:#007700;">, </span><span style="color:#dd0000;">&#8216;__controllerize&#8217;</span><span style="color:#007700;">), </span><span style="color:#0000bb;">listClasses</span><span style="color:#007700;">(</span><span style="color:#0000bb;">$path</span></font><font face="Courier New"><span style="color:#007700;">)));<br />
        }<br />
        <br />
        return </span><span style="color:#0000bb;">array_unique</span><span style="color:#007700;">(</span><span style="color:#0000bb;">$controllers</span></font><font face="Courier New"><span style="color:#007700;">);<br />
    }<br />
     <br />
    function </span><span style="color:#0000bb;">__controllerize</span><span style="color:#007700;">(</span><span style="color:#0000bb;">$file</span></font><font face="Courier New"><span style="color:#007700;">) {<br />
        return </span><span style="color:#0000bb;">Inflector</span><span style="color:#007700;">::</span><span style="color:#0000bb;">camelize</span><span style="color:#007700;">(</span><span style="color:#0000bb;">r</span><span style="color:#007700;">(</span><span style="color:#dd0000;">&#8216;_controller.php&#8217;</span><span style="color:#007700;">, </span><span style="color:#dd0000;">&#8221;</span><span style="color:#007700;">, </span><span style="color:#0000bb;">$file</span></font><font face="Courier New"><span style="color:#007700;">));<br />
    }     <br />
     <br />
    </span></font><font face="Courier New"><span style="color:#007700;">     <br />
    <br />
}<br />
</span><span style="color:#0000bb;">?&gt;</span> </font></span></p>
<p><span style="color:#000000;"></span></p>
<p><span style="color:#000000;"><font face="Courier New"><span style="color:#007700;"><font color="#000000">Next step is add list of default routes in /config/routes.php file before most common action. In router class /bare and /ajax routes marked as obsolete but i decide to keep it. This routes create by the router class but when we  create most common route it does not work.</font></span></font></span></p>
<p><span style="color:#000000;"><font face="Courier New"> <font face="Courier New"><font color="#0000bb">   loadComponent</font><span style="color:#007700;">(</span><span style="color:#dd0000;">&#8216;Utils&#8217;</span></font><font face="Courier New"><span style="color:#007700;">);<br />
    </span><span style="color:#0000bb;">$utils</span><span style="color:#007700;">=&amp; new </span><span style="color:#0000bb;">UtilsComponent</span></font><font face="Courier New"><span style="color:#007700;">;<br />
    foreach (</span><span style="color:#0000bb;">$utils</span><span style="color:#007700;">-&gt;</span><span style="color:#0000bb;">listControllers</span><span style="color:#007700;">() as </span><span style="color:#0000bb;">$controllerName</span></font><font face="Courier New"><span style="color:#007700;">) {<br />
        </span><span style="color:#0000bb;">$controller</span><span style="color:#007700;">=</span><span style="color:#0000bb;">Inflector</span><span style="color:#007700;">::</span><span style="color:#0000bb;">underscore</span><span style="color:#007700;">(</span><span style="color:#0000bb;">$controllerName</span></font><font face="Courier New"><span style="color:#007700;">);<br />
        </span><span style="color:#0000bb;">Router</span><span style="color:#007700;">::</span><span style="color:#0000bb;">connect</span><span style="color:#007700;">(</span><span style="color:#dd0000;">&#8220;/$controller&#8221;</span><span style="color:#007700;">, array(</span><span style="color:#dd0000;">&#8216;controller&#8217; </span><span style="color:#007700;">=&gt; </span><span style="color:#0000bb;">$controller</span><span style="color:#007700;">,</span><span style="color:#dd0000;">&#8216;action&#8217; </span><span style="color:#007700;">=&gt; </span><span style="color:#dd0000;">&#8216;index&#8217;</span></font><font face="Courier New"><span style="color:#007700;">));<br />
        </span><span style="color:#0000bb;">Router</span><span style="color:#007700;">::</span><span style="color:#0000bb;">connect</span><span style="color:#007700;">(</span><span style="color:#dd0000;">&#8220;/bare/$controller/:action/*&#8221;</span><span style="color:#007700;">, array(</span><span style="color:#dd0000;">&#8216;controller&#8217; </span><span style="color:#007700;">=&gt; </span><span style="color:#0000bb;">$controller</span><span style="color:#007700;">,</span><span style="color:#dd0000;">&#8216;bare&#8217; </span><span style="color:#007700;">=&gt; </span><span style="color:#dd0000;">&#8216;1&#8242;</span></font><font face="Courier New"><span style="color:#007700;">));<br />
        </span><span style="color:#0000bb;">Router</span><span style="color:#007700;">::</span><span style="color:#0000bb;">connect</span><span style="color:#007700;">(</span><span style="color:#dd0000;">&#8220;/ajax/$controller/:action/*&#8221;</span><span style="color:#007700;">, array(</span><span style="color:#dd0000;">&#8216;controller&#8217; </span><span style="color:#007700;">=&gt; </span><span style="color:#0000bb;">$controller</span><span style="color:#007700;">,</span><span style="color:#dd0000;">&#8216;bare&#8217; </span><span style="color:#007700;">=&gt; </span><span style="color:#dd0000;">&#8216;1&#8242;</span></font><font face="Courier New"><span style="color:#007700;">));<br />
        </span><span style="color:#0000bb;">Router</span><span style="color:#007700;">::</span><span style="color:#0000bb;">connect</span><span style="color:#007700;">(</span><span style="color:#dd0000;">&#8220;/$controller/:action/*&#8221;</span><span style="color:#007700;">,array(</span><span style="color:#dd0000;">&#8216;controller&#8217; </span><span style="color:#007700;">=&gt; </span><span style="color:#0000bb;">$controller</span></font><font face="Courier New"><span style="color:#007700;">));<br />
    } <br />
</span></font></p>
<p><font face="Courier New"><span style="color:#007700;">     <br />
<span style="color:#000000;"><font face="Courier New"><span style="color:#007700;"><font color="#000000">And last step is declare common  route in  /config/routes.php file.</font></span></font></span></span></font></p>
<p><font face="Courier New"><span style="color:#007700;"><span style="color:#000000;"><font color="#000000" face="Courier New"><span style="color:#007700;"></span></font></span><br />
    </span><span style="color:#0000bb;">Router</span><span style="color:#007700;">::</span><span style="color:#0000bb;">connect</span><span style="color:#007700;">(</span><span style="color:#dd0000;">&#8220;*&#8221;</span><span style="color:#007700;">, array(</span><span style="color:#dd0000;">&#8216;controller&#8217; </span><span style="color:#007700;">=&gt; </span><span style="color:#dd0000;">&#8216;users&#8217;</span><span style="color:#007700;">, </span><span style="color:#dd0000;">&#8216;action&#8217; </span><span style="color:#007700;">=&gt; </span><span style="color:#dd0000;">&#8216;profile&#8217;</span></font><span style="color:#007700;"><font face="Courier New">));  </font><br />
</span></p>
<p><span style="color:#007700;"></span></p>
<p><span style="color:#007700;"></span></p>
<p></font></span></p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/cakeexplorer.wordpress.com/10/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/cakeexplorer.wordpress.com/10/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/cakeexplorer.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/cakeexplorer.wordpress.com/10/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/cakeexplorer.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/cakeexplorer.wordpress.com/10/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/cakeexplorer.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/cakeexplorer.wordpress.com/10/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/cakeexplorer.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/cakeexplorer.wordpress.com/10/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/cakeexplorer.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/cakeexplorer.wordpress.com/10/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cakeexplorer.wordpress.com&blog=1571352&post=10&subd=cakeexplorer&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://cakeexplorer.wordpress.com/2007/09/11/improve-your-routes-or-add-most-common-case-to-end-of-route-table/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/2f11c840ab7eccb6788ab0c4331f5dad?s=96&#38;d=identicon" medium="image">
			<media:title type="html">CakeExplorer</media:title>
		</media:content>
	</item>
	</channel>
</rss>