aboutsummaryrefslogtreecommitdiffstats
path: root/core/include/post
diff options
context:
space:
mode:
authorThomas Lange <code@nerdmind.de>2017-04-11 07:13:13 +0200
committerThomas Lange <code@nerdmind.de>2017-04-11 07:13:13 +0200
commit85e48b669f65933d5376f9214219c7e5eb10a9e7 (patch)
tree5a08463dc9d770d98442e1c9f8d65044cdd9f1ff /core/include/post
parentdd0433cf81fe5329b694a148191f09e427d4a56c (diff)
downloadblog-85e48b669f65933d5376f9214219c7e5eb10a9e7.tar.gz
blog-85e48b669f65933d5376f9214219c7e5eb10a9e7.tar.xz
blog-85e48b669f65933d5376f9214219c7e5eb10a9e7.zip
The system directory has been moved to a non-public directory. After the commit e33c245d910e55b8cab407a03e669470509a705d, it is no longer necessary that the directory is publicly accessible via HTTP because all requests are running through the router.v1.2
Diffstat (limited to 'core/include/post')
-rw-r--r--core/include/post/list.php65
-rw-r--r--core/include/post/main.php90
2 files changed, 155 insertions, 0 deletions
diff --git a/core/include/post/list.php b/core/include/post/list.php
new file mode 100644
index 0000000..f2edd0b
--- /dev/null
+++ b/core/include/post/list.php
@@ -0,0 +1,65 @@
+<?php
+#===============================================================================
+# Get instances
+#===============================================================================
+$Database = Application::getDatabase();
+$Language = Application::getLanguage();
+
+$site_size = Application::get('POST.LIST_SIZE');
+$site_sort = Application::get('POST.LIST_SORT');
+
+$lastSite = ceil($Database->query(sprintf('SELECT COUNT(id) FROM %s', Post\Attribute::TABLE))->fetchColumn() / $site_size);
+
+$currentSite = HTTP::GET('site') ?? 1;
+$currentSite = abs(intval($currentSite));
+
+if($currentSite < 1 OR ($currentSite > $lastSite AND $lastSite > 0)) {
+ Application::error404();
+}
+
+#===============================================================================
+# TRY: Template\Exception
+#===============================================================================
+try {
+ $execSQL = "SELECT id FROM %s ORDER BY {$site_sort} LIMIT ".(($currentSite-1) * $site_size).", {$site_size}";
+ $postIDs = $Database->query(sprintf($execSQL, Post\Attribute::TABLE))->fetchAll($Database::FETCH_COLUMN);
+
+ foreach($postIDs as $postID) {
+ try {
+ $Post = Post\Factory::build($postID);
+ $User = User\Factory::build($Post->attr('user'));
+
+ $ItemTemplate = generatePostItemTemplate($Post, $User);
+
+ $posts[] = $ItemTemplate;
+ }
+ catch(Post\Exception $Exception){}
+ catch(User\Exception $Exception){}
+ }
+
+ $ListTemplate = Template\Factory::build('post/list');
+ $ListTemplate->set('PAGINATION', [
+ 'THIS' => $currentSite,
+ 'LAST' => $lastSite,
+ 'HTML' => generatePostNaviTemplate($currentSite)
+ ]);
+ $ListTemplate->set('LIST', [
+ 'POSTS' => $posts ?? []
+ ]);
+
+ $MainTemplate = Template\Factory::build('main');
+ $MainTemplate->set('HTML', $ListTemplate);
+ $MainTemplate->set('HEAD', [
+ 'NAME' => $Language->text('title_post_overview', $currentSite)
+ ]);
+
+ echo $MainTemplate;
+}
+
+#===============================================================================
+# CATCH: Template\Exception
+#===============================================================================
+catch(Template\Exception $Exception) {
+ Application::exit($Exception->getMessage());
+}
+?> \ No newline at end of file
diff --git a/core/include/post/main.php b/core/include/post/main.php
new file mode 100644
index 0000000..46937f3
--- /dev/null
+++ b/core/include/post/main.php
@@ -0,0 +1,90 @@
+<?php
+#===============================================================================
+# Get instances
+#===============================================================================
+$Database = Application::getDatabase();
+$Language = Application::getLanguage();
+
+#===============================================================================
+# TRY: Post\Exception, User\Exception
+#===============================================================================
+try {
+ if(Application::get('POST.SLUG_URLS')) {
+ $Post = Post\Factory::buildBySlug($param);
+ }
+
+ else {
+ $Post = Post\Factory::build($param);
+ }
+
+ $User = User\Factory::build($Post->attr('user'));
+
+ $post_data = generatePostItemData($Post);
+ $user_data = generateUserItemData($User);
+
+ #===============================================================================
+ # Add post data for previous and next post
+ #===============================================================================
+ try {
+ $PrevPost = Post\Factory::build($Post->getPrevID());
+ $post_data['PREV'] = generatePostItemData($PrevPost);
+ } catch(Post\Exception $Exception){}
+
+ try {
+ $NextPost = Post\Factory::build($Post->getNextID());
+ $post_data['NEXT'] = generatePostItemData($NextPost);
+ } catch(Post\Exception $Exception){}
+
+ #===============================================================================
+ # TRY: Template\Exception
+ #===============================================================================
+ try {
+ $PostTemplate = Template\Factory::build('post/main');
+ $PostTemplate->set('POST', $post_data);
+ $PostTemplate->set('USER', $user_data);
+
+ $MainTemplate = Template\Factory::build('main');
+ $MainTemplate->set('HTML', $PostTemplate);
+ $MainTemplate->set('HEAD', [
+ 'NAME' => $post_data['ATTR']['NAME'],
+ 'DESC' => cut(removeLineBreaksAndTabs(removeHTML($post_data['BODY']['HTML']), ' '), Application::get('POST.DESCRIPTION_SIZE')),
+ 'PERM' => $post_data['URL'],
+ 'OG_IMAGES' => $post_data['FILE']['LIST']
+ ]);
+
+ echo $MainTemplate;
+ }
+
+ #===============================================================================
+ # CATCH: Template\Exception
+ #===============================================================================
+ catch(Template\Exception $Exception) {
+ Application::exit($Exception->getMessage());
+ }
+}
+
+#===============================================================================
+# CATCH: Post\Exception
+#===============================================================================
+catch(Post\Exception $Exception) {
+ try {
+ if(Application::get('POST.SLUG_URLS') === FALSE) {
+ $Post = Post\Factory::buildBySlug($param);
+ } else {
+ $Post = Post\Factory::build($param);
+ }
+
+ HTTP::redirect($Post->getURL());
+ }
+
+ catch(Post\Exception $Exception) {
+ Application::error404();
+ }
+}
+
+#===============================================================================
+# CATCH: User\Exception
+#===============================================================================
+catch(User\Exception $Exception) {
+ Application::exit($Exception->getMessage());
+} \ No newline at end of file