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

<channel>
	<title>MiST blogt &#187; Projecten</title>
	<atom:link href="http://www.michielstaessen.be/blog/category/projecten/feed" rel="self" type="application/rss+xml" />
	<link>http://www.michielstaessen.be/blog</link>
	<description>Over de zin en onzin in mijn leven...</description>
	<lastBuildDate>Wed, 05 May 2010 14:56:10 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Module Specific Plugins with Zend Framework</title>
		<link>http://www.michielstaessen.be/blog/module-specific-plugins-with-zend-framework.html</link>
		<comments>http://www.michielstaessen.be/blog/module-specific-plugins-with-zend-framework.html#comments</comments>
		<pubDate>Wed, 05 May 2010 14:44:27 +0000</pubDate>
		<dc:creator>MiST</dc:creator>
				<category><![CDATA[Gedeelde Kennis]]></category>
		<category><![CDATA[Projecten]]></category>
		<category><![CDATA[modules]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Zend Framework]]></category>
		<category><![CDATA[Zend_Application]]></category>

		<guid isPermaLink="false">http://www.michielstaessen.be/blog/?p=521</guid>
		<description><![CDATA[I have been looking over Zend Framework modules for some time now. Although I have some experience with the Zend Framework, my experience with modules is quite limited. Setting up modules is not that difficult. Tutorials like the one of Jeroen will guide you flawlessly through this process. Jeroen uses another approach to layout switching [...]]]></description>
			<content:encoded><![CDATA[<p>I have been looking over Zend Framework modules for some time now. Although I have some experience with the Zend Framework, my experience with modules is quite limited.</p>
<p>Setting up modules is not that difficult. Tutorials like the one of <a href="http://www.amazium.com/blog/create-modular-application-with-zend" target="_blank">Jeroen</a> will guide you flawlessly through this process. Jeroen uses another approach to layout switching though. I prefer to put all layouts in the layout folder and give them the same name as their module. Like this, switching can be easily done with the following plugin.</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">class</span> Mist_Controller_Plugin_ModularLayout <span style="color: #000000; font-weight: bold;">extends</span> Zend_Controller_Plugin_Abstract
<span style="color: #009900;">&#123;</span>
	<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> preDispatch<span style="color: #009900;">&#40;</span>Zend_Controller_Request_Abstract <span style="color: #000088;">$request</span><span style="color: #009900;">&#41;</span>
	<span style="color: #009900;">&#123;</span>
		<span style="color: #000088;">$layout</span> <span style="color: #339933;">=</span> Zend_Layout<span style="color: #339933;">::</span><span style="color: #004000;">getMvcInstance</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #000088;">$layout</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">setLayout</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$request</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">getModuleName</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>Now, let&#8217;s get back to the problem.</p>
<h3>The big misconception</h3>
<p>The big problem with Zend_Application, for me, was that it did not do what I supposed it would do.</p>
<p>In a non-modular application I would use the Bootstrap to set up the View and other things (like illustrated in the <a href="http://akrabat.com/zend-framework-tutorial/" target="_blank">tutorial</a> of Rob Allen).</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;">protected <span style="color: #000000; font-weight: bold;">function</span> _initView<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
    <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">bootstrap</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'layout'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #000088;">$layout</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">getResource</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'layout'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #000088;">$view</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$layout</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">getView</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #000088;">$view</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">doctype</span><span style="color: #009900;">&#40;</span>Zend_View_Helper_Doctype<span style="color: #339933;">::</span><span style="color: #004000;">XHTML1_STRICT</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #000088;">$view</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">headTitle</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'Some Application'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #000088;">$view</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">headTitle</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">setSeparator</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">' - '</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>Ome might think you could extend this behaviour to modules (by adding Zend_Application_Module_Bootstrap classes) and set up a different title for each module. Think again! Zend_Application bootstraps the entire application. So, if you were to make separate Bootstrap classes with _initView() methods, you would end up with a title &#8216;Trunk &#8211; *title set in Module1_Bootstrap*- *title set in Module2_Bootstrap* &#8211; &#8230;&#8217; on each page.</p>
<p>The <a href="http://framework.zend.com/issues/browse/ZF-8376" target="_blank">answer</a> to this behaviour is simple, but it is hard to find (I did not fins it in the manual). There are three basic steps from request to response when working with Zend Framework.</p>
<ol>
<li>Bootstrapping</li>
<li>Routing</li>
<li>Dispatching</li>
</ol>
<p>Zend_Application only takes care of the bootstrapping. So, at that point, it is not aware of the routing. That is why your application get fully bootstrapped first. As this happens for each request, it is a good practise to make bootstrapping as light as possible.</p>
<p>How does this resolve my problem? It does not. All module specific loading should happen using Plugins or Helpers. But how do you implement module specific Plugins? Adding the following line to my application.ini file did <strong>not </strong>do the trick.</p>

<div class="wp_syntax"><div class="code"><pre class="ini" style="font-family:monospace;">admin.resources.frontController.plugins.view <span style="color: #000066; font-weight:bold;">=</span><span style="color: #660066;"> Admin_Plugin_View</span></pre></div></div>

<p>The plugin was used in every module. That is not what I wanted.</p>
<h3>The solution</h3>
<p>Because Zend_Application registered my plugins with all modules, I decided to register only one plugin (and my layout switcher) to manage the plugins. And here it is!</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">class</span> Mist_Controller_Plugin_ModuleSpecificPluginLoader <span style="color: #000000; font-weight: bold;">extends</span> Zend_Controller_Plugin_Abstract
<span style="color: #009900;">&#123;</span>
	<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> preDispatch<span style="color: #009900;">&#40;</span>Zend_Controller_Request_Abstract <span style="color: #000088;">$request</span><span style="color: #009900;">&#41;</span>
	<span style="color: #009900;">&#123;</span>
		<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$request</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">getModuleName</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">!=</span> <span style="color: #0000ff;">'default'</span><span style="color: #009900;">&#41;</span>
		<span style="color: #009900;">&#123;</span>
			<span style="color: #000088;">$plugins</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span>_getModuleSpecificPlugins<span style="color: #009900;">&#40;</span><span style="color: #000088;">$request</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">getModuleName</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
			<span style="color: #b1b100;">foreach</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$plugins</span> <span style="color: #b1b100;">as</span> <span style="color: #000088;">$plugin</span><span style="color: #009900;">&#41;</span>
			<span style="color: #009900;">&#123;</span>
				<span style="color: #000088;">$instance</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #000088;">$plugin</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
				<span style="color: #000088;">$instance</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">preDispatch</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$request</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			<span style="color: #009900;">&#125;</span>
		<span style="color: #009900;">&#125;</span>
	<span style="color: #009900;">&#125;</span>
&nbsp;
	<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> routeShutdown<span style="color: #009900;">&#40;</span>Zend_Controller_Request_Abstract <span style="color: #000088;">$request</span><span style="color: #009900;">&#41;</span>
	<span style="color: #009900;">&#123;</span>
		<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$request</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">getModuleName</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">!=</span> <span style="color: #0000ff;">'default'</span><span style="color: #009900;">&#41;</span>
		<span style="color: #009900;">&#123;</span>
			<span style="color: #000088;">$plugins</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span>_getModuleSpecificPlugins<span style="color: #009900;">&#40;</span><span style="color: #000088;">$request</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">getModuleName</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
			<span style="color: #b1b100;">foreach</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$plugins</span> <span style="color: #b1b100;">as</span> <span style="color: #000088;">$plugin</span><span style="color: #009900;">&#41;</span>
			<span style="color: #009900;">&#123;</span>
				<span style="color: #000088;">$instance</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #000088;">$plugin</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
				<span style="color: #000088;">$instance</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">routeShutdown</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$request</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			<span style="color: #009900;">&#125;</span>
		<span style="color: #009900;">&#125;</span>
	<span style="color: #009900;">&#125;</span>
&nbsp;
	protected <span style="color: #000000; font-weight: bold;">function</span> _getModuleSpecificPlugins<span style="color: #009900;">&#40;</span><span style="color: #000088;">$module</span><span style="color: #009900;">&#41;</span>
	<span style="color: #009900;">&#123;</span>
		<span style="color: #000088;">$result</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #000088;">$fc</span> <span style="color: #339933;">=</span> Zend_Controller_Front<span style="color: #339933;">::</span><span style="color: #004000;">getInstance</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #000088;">$pluginsPath</span> <span style="color: #339933;">=</span> <span style="color: #990000;">realpath</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$fc</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">getModuleDirectory</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">&quot;/plugins&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #000088;">$files</span> <span style="color: #339933;">=</span> <span style="color: #990000;">scandir</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$pluginsPath</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #b1b100;">foreach</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$files</span> <span style="color: #b1b100;">as</span> <span style="color: #000088;">$file</span><span style="color: #009900;">&#41;</span>
		<span style="color: #009900;">&#123;</span>
			<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$file</span> <span style="color: #339933;">!=</span> <span style="color: #0000ff;">'.'</span> <span style="color: #339933;">&amp;</span>amp<span style="color: #339933;">;&amp;</span>amp<span style="color: #339933;">;</span> <span style="color: #000088;">$file</span> <span style="color: #339933;">!=</span> <span style="color: #0000ff;">'..'</span><span style="color: #009900;">&#41;</span>
			<span style="color: #009900;">&#123;</span>
				<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span><span style="color: #990000;">in_array</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">realpath</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$pluginsPath</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">'/'</span> <span style="color: #339933;">.</span> <span style="color: #000088;">$file</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span> <span style="color: #990000;">get_included_files</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span>
				<span style="color: #009900;">&#123;</span>
					<span style="color: #b1b100;">require</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$pluginsPath</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">'/'</span> <span style="color: #339933;">.</span> <span style="color: #000088;">$file</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
				<span style="color: #009900;">&#125;</span>
&nbsp;
				<span style="color: #000088;">$reflectionFile</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> Zend_Reflection_File<span style="color: #009900;">&#40;</span><span style="color: #000088;">$pluginsPath</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">'/'</span> <span style="color: #339933;">.</span> <span style="color: #000088;">$file</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
				<span style="color: #000088;">$classes</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$reflectionFile</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">getClasses</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
				<span style="color: #b1b100;">foreach</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$classes</span> <span style="color: #b1b100;">as</span> <span style="color: #000088;">$class</span><span style="color: #009900;">&#41;</span>
				<span style="color: #009900;">&#123;</span>
					<span style="color: #666666; font-style: italic;">/* @var $class Zend_Reflection_Class */</span>
					<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$class</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">isSubclassOf</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'Zend_Controller_Plugin_Abstract'</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span>
					<span style="color: #009900;">&#123;</span>
						<span style="color: #000088;">$result</span><span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$class</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">getName</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
					<span style="color: #009900;">&#125;</span>
				<span style="color: #009900;">&#125;</span>
			<span style="color: #009900;">&#125;</span>
		<span style="color: #009900;">&#125;</span>
		<span style="color: #b1b100;">return</span> <span style="color: #000088;">$result</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>It just looks for classes in the module plugin directory, checks whether they are plugins, and uses them if they are called for.</p>
<h3>In closing</h3>
<p>As you might have thought, this is not a very elegant approach to fix the module-specific-plugins problem, but it&#8217;s a quick one, and that&#8217;s all that mattered for me for now. Modules are &#8211; as Matthew <a href="http://weierophinney.net/matthew/archives/234-Module-Bootstraps-in-Zend-Framework-Dos-and-Donts.html" target="_blank">said</a> &#8211; second class citizens in ZF v1. I really hope for improvement in ZF2.0.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.michielstaessen.be/blog/module-specific-plugins-with-zend-framework.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Schaamrood</title>
		<link>http://www.michielstaessen.be/blog/schaamrood.html</link>
		<comments>http://www.michielstaessen.be/blog/schaamrood.html#comments</comments>
		<pubDate>Thu, 11 Feb 2010 19:36:51 +0000</pubDate>
		<dc:creator>MiST</dc:creator>
				<category><![CDATA[Projecten]]></category>

		<guid isPermaLink="false">http://www.michielstaessen.be/blog/?p=505</guid>
		<description><![CDATA[Vandaag iets meegemaakt dat ik liever nooit meer meemaak. Al langer was er het vermoeden dat er iets mis was met de gangbeheer software, en pijnlijker nog, in de backbone voor de gangkas. Het komt hier op neer. De gangkas wordt gemodelleerd als een virtuele rekening, gedefinieerd als de som van de samenstellende rekeningen. Wanneer [...]]]></description>
			<content:encoded><![CDATA[<p>Vandaag iets meegemaakt dat ik liever nooit meer meemaak.</p>
<p>Al langer was er het vermoeden dat er iets mis was met de gangbeheer software, en pijnlijker nog, in de backbone voor de gangkas. Het komt hier op neer.</p>
<p>De gangkas wordt gemodelleerd als een virtuele rekening, gedefinieerd als de som van de samenstellende rekeningen. Wanneer er bier aangekocht wordt, schiet de gangkas dit voor. Hiervoor wordt bij iedereen een gelijk aandeel in het totaalbedrag afgetrokken van zijn rekening. Zolang er pintjes in de bak zijn, worden de gedronken pintjes geturfd bij de juiste persoon op een blad. Later, betalen deze personen hun pintjes dan terug aan de gangkas.</p>
<p>Wat gaat er nu fout? Bij het terugbetalen worden jouw pintjes dus bijgeteld op je eigen account. Hoe meer je drinkt, hoe rijker je dus wordt. Een GIGANTISCHE denkfout.</p>
<p>Ik vond het al eerder vreemd dat niet iedereen een gelijk aandeel meer had in de gangkas, maar het totaal klopte, en ik zag niet waar het mis ging&#8230; Nu, na uitgebreide studie van het systeem, moet ik deze fout met het schaamrood op de wangen toegeven. Pijnlijk&#8230;</p>
<p>Nu ik weet waar de fout zit, kan ik wel aan de oplossing werken maar toch. Zo&#8217;n fout heb je liever niet in je programma&#8217;s zitten.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.michielstaessen.be/blog/schaamrood.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Dynamische ACL&#8217;s met Zend_Acl</title>
		<link>http://www.michielstaessen.be/blog/dynamische-acls-met-zend_acl.html</link>
		<comments>http://www.michielstaessen.be/blog/dynamische-acls-met-zend_acl.html#comments</comments>
		<pubDate>Mon, 04 Jan 2010 20:16:50 +0000</pubDate>
		<dc:creator>MiST</dc:creator>
				<category><![CDATA[Gedeelde Kennis]]></category>
		<category><![CDATA[Projecten]]></category>
		<category><![CDATA[Zend Framework]]></category>
		<category><![CDATA[Zend_Acl]]></category>

		<guid isPermaLink="false">http://www.michielstaessen.be/blog/?p=476</guid>
		<description><![CDATA[Het is me eindelijk gelukt! Na een ingeving en wat gepruts werd het me duidelijk. Nu kan ik eindelijk een solide UserSysteem maken met access control. Momenteel zijn er nog enkele dingen op te lossen, maar de controles kloppen al. En ze werken! Nu ga ik eerst mijn usersysteem vervolledigen. Daarna volgt wellicht een uitgebreide [...]]]></description>
			<content:encoded><![CDATA[<p>Het is me eindelijk gelukt! Na een ingeving en wat gepruts werd het me duidelijk. Nu kan ik eindelijk een solide UserSysteem maken met access control.</p>
<p>Momenteel zijn er nog enkele dingen op te lossen, maar de controles kloppen al. En ze werken!</p>
<p>Nu ga ik eerst mijn usersysteem vervolledigen. Daarna volgt wellicht een uitgebreide tutorial post omdat ik toch wel enkele leuke dingen heb gedaan. <img src='http://www.michielstaessen.be/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Hier hoor je nog van.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.michielstaessen.be/blog/dynamische-acls-met-zend_acl.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Cadeau ketting generator</title>
		<link>http://www.michielstaessen.be/blog/cadeau-ketting-generator.html</link>
		<comments>http://www.michielstaessen.be/blog/cadeau-ketting-generator.html#comments</comments>
		<pubDate>Mon, 23 Nov 2009 21:11:41 +0000</pubDate>
		<dc:creator>MiST</dc:creator>
				<category><![CDATA[Projecten]]></category>
		<category><![CDATA[cadeaus]]></category>
		<category><![CDATA[geschenken]]></category>
		<category><![CDATA[kerstmis]]></category>
		<category><![CDATA[ketting]]></category>
		<category><![CDATA[nieuwjaar]]></category>

		<guid isPermaLink="false">http://www.michielstaessen.be/blog/?p=466</guid>
		<description><![CDATA[Het is weer een hele tijd geleden. Wat heb ik ondertussen zoal gedaan? Gewerkt, &#8230; en daar stopt het lijstje ook weer. Het is verschrikkelijk druk en het ziet er niet naar uit dat het gaat minderen naar Kerstmis toe. Maar deze post gaat helemaal niet over waar ik allemaal geen tijd voor heb. Daar [...]]]></description>
			<content:encoded><![CDATA[<p>Het is weer een hele tijd geleden. Wat heb ik ondertussen zoal gedaan? Gewerkt, &#8230; en daar stopt het lijstje ook weer. Het is verschrikkelijk druk en het ziet er niet naar uit dat het gaat minderen naar Kerstmis toe.</p>
<p>Maar deze post gaat helemaal niet over waar ik allemaal geen tijd voor heb. Daar ga ik jullie niet mee vervelen. Ik wil iets mededelen dat het leven van enkelen onder jullie misschien makkelijker kan maken.</p>
<p>Kerstmis nadert, dat zei ik al. Bij Kerstmis hoort een kerstfeest. Bij een kerstfeest horen cadeaus.</p>
<p>In onze familie gaat dat al een tijdje gepaard met heuse cadeauketting. Persoon geeft aan persoon B, persoon B geeft aan persoon C, enzovoort, tot persoon Z weer aan persoon A geeft.</p>
<p>Elk jaar opnieuw wordt er &#8211; naar mijn mening &#8211; veel te veel besproken wat de cadeaus betreft. Iedereen weet wie van wie krijgt en vaak weet iedereen ook wie wat krijgt.</p>
<p>Dit is helemaal niet meer wat het concept &#8220;cadeau&#8221; voor mij betekent. Een cadeau is voor mij nog steeds een soort verrassing. Je weet niet wat je gaat krijgen (en bij uitbreiding ook niet van wie).</p>
<p>Om voor eens en altijd komaf te maken met al dat ge-overleg, ben ik aan het denken geslagen. Ik moest ervoor zorgen dat er een ketting gemaakt kon worden, niemand de volledige volgorde weet, en niemand weet wat hij/zij gaat krijgen.</p>
<p>De oplossing: e-mail en automatisering. Maak een evenement, voeg personen toe, gooi de lijst door elkaar, en mail iedereen met voor wie hij/zij moet kopen.</p>
<p>Het resultaat van een namiddagje programmeren is dit: <a title="Cadeauketting" href="http://cadeauketting.appspot.com">http://cadeauketting.appspot.com</a></p>
<p>Geef je evenement een titel, zet een datum vast, voeg namen en e-mailadressen toe. Zo simpel is het. Klik op de knop, en iedereen krijgt mail!</p>
<p>Geniet ervan! Bij mijn weten bestaat de tool nog nergens anders (al heb ik niet echt gecontroleerd).</p>
]]></content:encoded>
			<wfw:commentRss>http://www.michielstaessen.be/blog/cadeau-ketting-generator.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Beginnen met Zend</title>
		<link>http://www.michielstaessen.be/blog/beginnen-met-zend.html</link>
		<comments>http://www.michielstaessen.be/blog/beginnen-met-zend.html#comments</comments>
		<pubDate>Fri, 22 Aug 2008 22:04:13 +0000</pubDate>
		<dc:creator>MiST</dc:creator>
				<category><![CDATA[Projecten]]></category>
		<category><![CDATA[Framework]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Zend]]></category>

		<guid isPermaLink="false">http://blog.michielstaessen.be/?p=25</guid>
		<description><![CDATA[Zonet mijn eerste stappen gezet in de richting van programmeren met Zend als tussendoortje voor afmattende examens&#8230; Ondertussen de officiële QuickStart aan het doornemen en er eveneens een Nederlandse tutorial bijgehaald (om onduidelijkheden, vakspecifieke terminologie die essentieel is voor het begrijpen te verhelderen). Ik had al eens eerder deze maand een kijkje geworpen op Zend, [...]]]></description>
			<content:encoded><![CDATA[<p>Zonet mijn eerste stappen gezet in de richting van programmeren met Zend als tussendoortje voor afmattende examens&#8230; Ondertussen de officiële QuickStart aan het doornemen en er eveneens een Nederlandse tutorial bijgehaald (om onduidelijkheden, vakspecifieke terminologie die essentieel is voor het begrijpen te verhelderen).</p>
<p>Ik had al eens eerder deze maand een kijkje geworpen op Zend, en nu staan er twee dingen vast:</p>
<ol>
<li>Op het eerste zicht lijkt Zend Framework een hoop Chinees (mensen die PHP al chinees vinden, beware! :p) Het is echter een schitterende manier van programmeren. Natuurlijk heeft schoonheid zijn prijs en dat is nummer 2.</li>
<li>Als je geen tijd hebt om je eerste stappen rustig te zetten, zet ze dan ook niet. Als je niet lijn per lijn gaat beredeneren wat er gebeurt, ga je er niet veel van snappen. Dit was toch mijn ervaring.</li>
</ol>
<p>Anyway, ik ga er zeker mee doorzetten en er zullen ooit Zend-kindjes volgen&#8230; <img src='http://www.michielstaessen.be/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.michielstaessen.be/blog/beginnen-met-zend.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

<!-- Dynamic Page Served (once) in 1.386 seconds -->
