aboutsummaryrefslogtreecommitdiffstats
path: root/core/functions.php
diff options
context:
space:
mode:
Diffstat (limited to 'core/functions.php')
-rw-r--r--core/functions.php86
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;
}