76 lines
2.0 KiB
PHP
76 lines
2.0 KiB
PHP
<?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 {
|
|
/**
|
|
* 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::instance()->redirect('welcome/index');
|
|
|
|
Breadcrumb::name($this->request->uri(),$cat->name);
|
|
|
|
Block::add(array(
|
|
'title'=>sprintf('%s: %s',_('Category'),$cat->name),
|
|
'body'=>View::factory('product/category/view')
|
|
->set('results',$this->_get_category($cat->id))
|
|
->set('cat',$cat->id),
|
|
));
|
|
|
|
$this->template->content = Block::factory();
|
|
}
|
|
|
|
/**
|
|
* Obtain a list of pages in a category
|
|
*/
|
|
private function _get_category($id) {
|
|
return ORM::factory('product')->category($id);
|
|
}
|
|
|
|
/**
|
|
* Show a product
|
|
*/
|
|
public function action_view($id) {
|
|
$po = ORM::factory('product',$id);
|
|
|
|
if (! $po->loaded())
|
|
Request::instance()->redirect('product_category/index');
|
|
|
|
Breadcrumb::name($this->request->uri(),$po->product_translate->find()->name);
|
|
|
|
// 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_id)))
|
|
Request::instance()->redirect('product_category/index');
|
|
|
|
Breadcrumb::name('product/view',$co->name);
|
|
}
|
|
|
|
Block::add(array(
|
|
'title'=>$po->product_translate->find()->description_short,
|
|
'body'=>View::factory('product/view')
|
|
->set('record',$po),
|
|
));
|
|
|
|
$this->template->content = Block::factory();
|
|
}
|
|
}
|
|
?>
|