/** * Init category nav and categories * * @param AbstractController $controller * @param Application $application * @return void */ public static function init(AbstractController $controller, Application $application) { if (!$_POST && $controller->hasView()) { $category = new Model\Category(); $category->show_total = $application->module('phire-categories')['show_total']; $category->filters = $application->module('phire-categories')['filters']; $category->datetime_formats = $application->module('phire-categories')['datetime_formats']; $controller->view()->category_nav = $category->getNav($application->module('phire-categories')['nav_config']); if ($application->isRegistered('phire-templates') && $controller->view()->isStream() && (strpos($controller->view()->getTemplate()->getTemplate(), '[{category_') !== false || strpos($controller->view()->getTemplate()->getTemplate(), '[{categories_') !== false)) { $catIds = self::parseCategoryIds($controller->view()->getTemplate()->getTemplate()); $catParentIds = self::parseParentCategoryIds($controller->view()->getTemplate()->getTemplate()); if (count($catIds) > 0) { foreach ($catIds as $key => $value) { $category->getById($value['id']); $categoryName = 'category_' . $value['id']; if (isset($value['limit']) && $value['limit'] > 0 && $category->hasPages($value['limit'])) { $limit = $value['limit']; $categoryName .= '_' . $limit; $pages = null; } else { if ($category->pagination > 0 && $category->hasPages($category->pagination)) { $limit = $category->pagination; $pages = new \Pop\Paginator\Paginator($category->getCount(), $limit); $pages->useInput(true); } else { $limit = null; $pages = null; } } if (null !== $pages) { $controller->view()->pages = $pages; } $controller->view()->{$categoryName} = $category->getItems($limit, $controller->request()->getQuery('page')); } } if (count($catParentIds) > 0) { foreach ($catParentIds as $key => $value) { if (isset($value['limit']) && $value['limit'] > 0) { $limit = $value['limit']; $categoryName = 'categories_' . $value['id'] . '_' . $limit; } else { $limit = null; $categoryName = 'categories_' . $value['id']; } $controller->view()->{$categoryName} = $category->getCategoryChildren($value['id'], $limit); } } } else { if (($controller instanceof \Phire\Content\Controller\IndexController || $controller instanceof \Phire\Categories\Controller\IndexController) && $controller->view()->isFile()) { $controller->view()->phire->category = $category; } } if (($controller instanceof \Phire\Content\Controller\ContentController || $controller instanceof \Phire\Media\Controller\IndexController) && $application->router()->getRouteMatch()->getAction()) { $categories = []; $cats = Table\Categories::findAll(); foreach ($cats->rows() as $cat) { $categories[$cat->id] = $cat->title; } $controller->view()->categories = $categories; } } }