diff options
Diffstat (limited to 'core/functions.php')
-rw-r--r-- | core/functions.php | 86 |
1 files changed, 35 insertions, 51 deletions
diff --git a/core/functions.php b/core/functions.php index ffc1e1c..96e702c 100644 --- a/core/functions.php +++ b/core/functions.php @@ -29,66 +29,50 @@ function createPaginationTemplate($current, $last, string $location): Template { return $Pagination; } -#=============================================================================== -# Helper function to reduce duplicate code -#=============================================================================== -function generateCategoryItemTemplate(Category $Category, bool $is_root = false): Template { - $CategoryRepository = Application::getRepository('Category'); +function createEntityItemTemplate(EntityInterface $Entity, array $params = []): Template { + $entity_ns = explode('\\', get_class($Entity)); + $entity_ns = end($entity_ns); + $entity_str = strtolower($entity_ns); - foreach($CategoryRepository->findWithParents($Category->getID()) as $Category) { - $category_data = generateItemTemplateData($Category); - $category_list[] = $category_data; - } + $Template = TemplateFactory::build(sprintf('%s/item', $entity_str)); - $Template = TemplateFactory::build('category/item'); - $Template->set('IS_ROOT', $is_root); - $Template->set('CATEGORY', $category_data ?? []); - $Template->set('CATEGORIES', $category_list ?? []); - $Template->set('COUNT', [ - 'POST' => $CategoryRepository->getNumberOfPosts($Category), - 'CHILDREN' => $CategoryRepository->getNumberOfChildren($Category) - ]); - - return $Template; -} + if(in_array($entity_ns, ['Category', 'Post'])) { + $CategoryRepository = Application::getRepository('Category'); + } -#=============================================================================== -# Helper function to reduce duplicate code -#=============================================================================== -function generatePageItemTemplate(Page $Page, User $User): Template { - $Template = TemplateFactory::build('page/item'); - $Template->set('PAGE', generateItemTemplateData($Page)); - $Template->set('USER', generateItemTemplateData($User)); + if($entity_ns === 'Category') { + foreach($CategoryRepository->findWithParents($Entity->getID()) as $Category) { + $category_data = generateItemTemplateData($Category); + $category_list[] = $category_data; + } - return $Template; -} + $Template->set('IS_ROOT', $params['is_root'] ?? false); + $Template->set('CATEGORY', $category_data ?? []); + $Template->set('CATEGORIES', $categories ?? []); + $Template->set('COUNT', [ + 'POST' => $CategoryRepository->getNumberOfPosts($Entity), + 'CHILDREN' => $CategoryRepository->getNumberOfChildren($Entity) + ]); + } -#=============================================================================== -# Helper function to reduce duplicate code -#=============================================================================== -function generatePostItemTemplate(Post $Post, User $User): Template { - $CategoryRepository = Application::getRepository('Category'); + else if($entity_ns === 'Post') { + foreach($CategoryRepository->findWithParents($Entity->get('category')) as $Category) { + $category_data = generateItemTemplateData($Category); + $categories[] = $category_data; + } - foreach($CategoryRepository->findWithParents($Post->get('category')) as $Category) { - $category_data = generateItemTemplateData($Category); - $categories[] = $category_data; + $Template->set('CATEGORY', $category_data ?? []); + $Template->set('CATEGORIES', $categories ?? []); } - $Template = TemplateFactory::build('post/item'); - $Template->set('POST', generateItemTemplateData($Post)); - $Template->set('USER', generateItemTemplateData($User)); - $Template->set('CATEGORY', $category_data ?? []); - $Template->set('CATEGORIES', $categories ?? []); - - return $Template; -} + // For pages and posts we have a user relation + if(in_array($entity_ns, ['Page', 'Post'])) { + $UserRepository = Application::getRepository('User'); + $User = $UserRepository->find($Entity->get('user')); + $Template->set('USER', generateItemTemplateData($User)); + } -#=============================================================================== -# Helper function to reduce duplicate code -#=============================================================================== -function generateUserItemTemplate(User $User): Template { - $Template = TemplateFactory::build('user/item'); - $Template->set('USER', generateItemTemplateData($User)); + $Template->set(strtoupper($entity_ns), generateItemTemplateData($Entity)); return $Template; } |