[eluser]Monotoba[/eluser]
Hi Toppy,
Templates: First, the template issue. Most of my projects contain templates as I do no real layout or design. My graphics guy does all that. Our projects tend to be high-end and require someone with special design skills. Since he is a great designer but can't do much more than echo a value in php, a template system eases development. The other reason for a template system is that most of our projects get some type of layout change almost monthly and a few change weekly. Using a template system makes these changes much easier.
With that said, I don't think that forcing a template system on everyone is good. I myself fore-go the template system for minor projects. However, the system should make it easy to add a template system if one is needed. This can be easily achieved by placing all view code in a class that wraps the rest of the system. The slight overhead incurred out weights the bennifits in my oppion...
My own template system (which allows for embedded views) is simply a wrapper class around what ever code I'm using. The class extends the Controller class and instead of calling $this->load->view('name',$data, true), I call $this->regView('template_tag', 'name', $data), for all subviews and then $this->showView() to display everything.
As for security, I would do something similar and would try not to force anyone to use any specific auth class. However, I would include an auth system that worked out of the box and could be easily replaced if needed. Again, if this maps view calls to the view system, then templates can be easily implemented.
Db/Views: Most of my projects currently require me to handwrite many of the db queries as they tend not to map to a single table and have complex structures with dependent or conditional sub-queries. As I looked at your code, it seems that your presentation depends on the data going into, and coming from a single table. I solved this by overloading your base methods. However, it would be nice to have the system support inserts into multiple tables.