<?php defined('SYSPATH') or die('No direct access allowed.'); /** * This class provides product categories * * @package OSB * @subpackage Page * @category Controllers * @author Deon George * @copyright (c) 2010 Deon George * @license http://dev.leenooks.net/license.html */ class Controller_Product extends Controller_TemplateDefault { public function action_categorys() { $output = '<div id="category">'; $output .= '<ul>'; foreach (ORM::factory('product_category')->list_active() as $pco) { $a = '<h3>'.$pco->display('name').'</h3>'; $a .= '<p>'.$pco->description().'</p>'; $output .= '<li>'; $output .= HTML::anchor('product/category/'.$pco->id,$a); $output .= '</li>'; } $output .= '</ul>'; $output .= '</div>'; $this->template->content = $output; } /** * Show the available topics in a category * @todo Only show categories according to their validity dates * @todo Obey sort order */ public function action_category($id) { $cat = ORM::factory('product_category',$id); if (! $cat->loaded()) Request::current()->redirect('welcome/index'); Breadcrumb::name($this->request->uri(),$cat->name); Breadcrumb::url('product','product/categorys'); Breadcrumb::url('product/category','product/categorys'); Block::add(array( 'title'=>sprintf('%s: %s',_('Category'),$cat->name), 'body'=>View::factory($this->viewpath().'/view') ->set('results',$this->_get_category($cat->id)) ->set('cat',$cat->id), )); } /** * Obtain a list of pages in a category */ private function _get_category($id) { return ORM::factory('product')->list_category($id); } /** * Show a product */ public function action_view($id) { $po = ORM::factory('product',$id); if (! $po->loaded()) Request::current()->redirect('product_category/index'); Breadcrumb::name($this->request->uri(),$po->product_translate->find()->name); Breadcrumb::url('product','product/categorys'); // Work out our category id for the control line if (! empty($_GET['cid'])) { $co = ORM::factory('product_category',$_GET['cid']); // If the product category doesnt exist, or doesnt match the product if (! $co->loaded() OR ! in_array($co->id,unserialize($po->avail_category))) Request::current()->redirect('product_category/index'); Breadcrumb::name('product/view',$co->name); Breadcrumb::url('product/view','product/category/'.$co->id); } Block::add(array( 'title'=>$po->product_translate->find()->description_short, 'body'=>View::factory($this->viewpath()) ->set('record',$po), )); } } ?>