summaryrefslogtreecommitdiffstats
path: root/core/include/user
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/user
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/user')
-rw-r--r--core/include/user/list.php61
-rw-r--r--core/include/user/main.php98
2 files changed, 159 insertions, 0 deletions
diff --git a/core/include/user/list.php b/core/include/user/list.php
new file mode 100644
index 0000000..692bba6
--- /dev/null
+++ b/core/include/user/list.php
@@ -0,0 +1,61 @@
+<?php
+#===============================================================================
+# Get instances
+#===============================================================================
+$Database = Application::getDatabase();
+$Language = Application::getLanguage();
+
+$site_size = Application::get('USER.LIST_SIZE');
+$site_sort = Application::get('USER.LIST_SORT');
+
+$lastSite = ceil($Database->query(sprintf('SELECT COUNT(id) FROM %s', User\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}";
+ $userIDs = $Database->query(sprintf($execSQL, User\Attribute::TABLE))->fetchAll($Database::FETCH_COLUMN);
+
+ foreach($userIDs as $userID) {
+ try {
+ $User = User\Factory::build($userID);
+ $ItemTemplate = generateUserItemTemplate($User);
+
+ $users[] = $ItemTemplate;
+ } catch(User\Exception $Exception){}
+ }
+
+ $ListTemplate = Template\Factory::build('user/list');
+ $ListTemplate->set('PAGINATION', [
+ 'THIS' => $currentSite,
+ 'LAST' => $lastSite,
+ 'HTML' => generateUserNaviTemplate($currentSite)
+ ]);
+ $ListTemplate->set('LIST', [
+ 'USERS' => $users ?? []
+ ]);
+
+ $MainTemplate = Template\Factory::build('main');
+ $MainTemplate->set('HTML', $ListTemplate);
+ $MainTemplate->set('HEAD', [
+ 'NAME' => $Language->text('title_user_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/user/main.php b/core/include/user/main.php
new file mode 100644
index 0000000..7944f1f
--- /dev/null
+++ b/core/include/user/main.php
@@ -0,0 +1,98 @@
+<?php
+#===============================================================================
+# Get instances
+#===============================================================================
+$Database = Application::getDatabase();
+$Language = Application::getLanguage();
+
+#===============================================================================
+# TRY: User\Exception
+#===============================================================================
+try {
+ if(Application::get('USER.SLUG_URLS')) {
+ $User = User\Factory::buildBySlug($param);
+ }
+
+ else {
+ $User = User\Factory::build($param);
+ }
+
+ $user_data = generateUserItemData($User);
+
+ #===============================================================================
+ # Add user data for previous and next user
+ #===============================================================================
+ try {
+ $PrevUser = User\Factory::build($User->getPrevID());
+ $user_data['PREV'] = generateUserItemData($PrevUser);
+ } catch(User\Exception $Exception){}
+
+ try {
+ $NextUser = User\Factory::build($User->getNextID());
+ $user_data['NEXT'] = generateUserItemData($NextUser);
+ } catch(User\Exception $Exception){}
+
+ #===============================================================================
+ # TRY: Template\Exception
+ #===============================================================================
+ try {
+ #===============================================================================
+ # TRY: PDOException
+ #===============================================================================
+ try {
+ $PostCountStatement = $Database->query(sprintf('SELECT COUNT(*) FROM %s WHERE user = %d', Post\Attribute::TABLE, $User->getID()));
+ $PageCountStatement = $Database->query(sprintf('SELECT COUNT(*) FROM %s WHERE user = %d', Page\Attribute::TABLE, $User->getID()));
+ }
+
+ #===============================================================================
+ # CATCH: PDOException
+ #===============================================================================
+ catch(PDOException $Exception) {
+ exit($Exception->getMessage());
+ }
+
+ $UserTemplate = Template\Factory::build('user/main');
+ $UserTemplate->set('USER', $user_data);
+ $UserTemplate->set('COUNT', [
+ 'POST' => $PostCountStatement->fetchColumn(),
+ 'PAGE' => $PageCountStatement->fetchColumn()
+ ]);
+
+ $MainTemplate = Template\Factory::build('main');
+ $MainTemplate->set('HTML', $UserTemplate);
+ $MainTemplate->set('HEAD', [
+ 'NAME' => $user_data['ATTR']['FULLNAME'],
+ 'DESC' => cut(removeLineBreaksAndTabs(removeHTML($user_data['BODY']['HTML']), ' '), Application::get('USER.DESCRIPTION_SIZE')),
+ 'PERM' => $User->getURL(),
+ 'OG_IMAGES' => $User->getFiles()
+ ]);
+
+ echo $MainTemplate;
+ }
+
+ #===============================================================================
+ # CATCH: Template\Exception
+ #===============================================================================
+ catch(Template\Exception $Exception) {
+ Application::exit($Exception->getMessage());
+ }
+}
+
+#===============================================================================
+# CATCH: User\Exception
+#===============================================================================
+catch(User\Exception $Exception) {
+ try {
+ if(Application::get('USER.SLUG_URLS') === FALSE) {
+ $User = User\Factory::buildBySlug($param);
+ } else {
+ $User = User\Factory::build($param);
+ }
+
+ HTTP::redirect($User->getURL());
+ }
+
+ catch(User\Exception $Exception) {
+ Application::error404();
+ }
+} \ No newline at end of file