From 2448ecc3f790a60ef78ef928f23e67635a5f24b0 Mon Sep 17 00:00:00 2001 From: Davnit Date: Sat, 20 Oct 2018 06:12:33 -0400 Subject: [PATCH 1/3] Actually return null on missing users Several objects with getUser() functions (document, packet, etc) were expecting a null user if the ID wasn't found, but a UserNotFoundException was being thrown instead which prevented some index pages from being displayed. Adds User::findUserById($id) function to libraries\User. Returns the user object or null. Updates some objects to use this. --- src/libraries/Document.php | 3 +-- src/libraries/NewsPost.php | 3 +-- src/libraries/Packet.php | 6 +----- src/libraries/Server.php | 3 +-- src/libraries/User.php | 10 ++++++++++ 5 files changed, 14 insertions(+), 11 deletions(-) diff --git a/src/libraries/Document.php b/src/libraries/Document.php index 42eda47e..3d122634 100644 --- a/src/libraries/Document.php +++ b/src/libraries/Document.php @@ -265,8 +265,7 @@ public function getURI() { } public function getUser() { - if (is_null($this->user_id)) return null; - return new User($this->user_id); + return User::findUserById($this->user_id); } public function getUserId() { diff --git a/src/libraries/NewsPost.php b/src/libraries/NewsPost.php index c6ddc8fb..a72dd7d5 100644 --- a/src/libraries/NewsPost.php +++ b/src/libraries/NewsPost.php @@ -302,8 +302,7 @@ public function getURI() { } public function getUser() { - if (is_null($this->user_id)) return null; - return new User($this->user_id); + return User::findUserById($this->user_id); } public function getUserId() { diff --git a/src/libraries/Packet.php b/src/libraries/Packet.php index 034a37ab..81facebd 100644 --- a/src/libraries/Packet.php +++ b/src/libraries/Packet.php @@ -523,11 +523,7 @@ public function getUsedBy() { } public function getUser() { - if ( is_null( $this->user_id )) { - return null; - } - - return new User( $this->user_id ); + return User::findUserById($this->user_id); } public function getUserId() { diff --git a/src/libraries/Server.php b/src/libraries/Server.php index 787517a8..131f5cf6 100644 --- a/src/libraries/Server.php +++ b/src/libraries/Server.php @@ -177,8 +177,7 @@ public function getUpdatedDateTime() { } public function getUser() { - if (is_null($this->user_id)) return null; - return new User($this->user_id); + return User::findUserById($this->user_id); } public function getUserId() { diff --git a/src/libraries/User.php b/src/libraries/User.php index 9249f48d..e7060ad8 100644 --- a/src/libraries/User.php +++ b/src/libraries/User.php @@ -341,6 +341,16 @@ public function getAcl($acl) { return ($this->options_bitmask & $acl); } + public static function findUserById($user_id) { + if (is_null($user_id)) return null; + + try { + return new User($user_id); + } catch (UserNotFoundException $e) { + return null; + } + } + public static function &getAllUsers( $order = null, $limit = null, $index = null ) { From 67de1b255403416ad8ba13a8243dcb452b339ca5 Mon Sep 17 00:00:00 2001 From: Davnit Date: Sat, 20 Oct 2018 06:48:00 -0400 Subject: [PATCH 2/3] Check for null users on document view --- src/libraries/Comment.php | 3 +-- src/templates/Document/View.phtml | 14 ++++---------- 2 files changed, 5 insertions(+), 12 deletions(-) diff --git a/src/libraries/Comment.php b/src/libraries/Comment.php index 229d0bbb..7f4e8a94 100644 --- a/src/libraries/Comment.php +++ b/src/libraries/Comment.php @@ -219,8 +219,7 @@ public function getParentType() { } public function getUser() { - if (is_null($this->user_id)) return null; - return new User($this->user_id); + return User::findUserById($this->user_id); } public function getUserId() { diff --git a/src/templates/Document/View.phtml b/src/templates/Document/View.phtml index 14f06517..149dcd5c 100644 --- a/src/templates/Document/View.phtml +++ b/src/templates/Document/View.phtml @@ -32,10 +32,7 @@ if ($object) { $object->getContent(true), FILTER_SANITIZE_STRING )), "\n", 300); - $user_name = $object->getUser()->getName(); - $user_id = $object->getUserId(); - $user_url = $object->getUser()->getURI(); - $user_avatar = $object->getUser()->getAvatarURI(22); + $user = $object->getUser(); } @@ -73,8 +70,8 @@ require("./header.inc.phtml"); - - + + getName(), FILTER_SANITIZE_STRING); ?> @@ -91,15 +88,12 @@ $c_delete_visible_master = ($logged_in && ($logged_in->getOptionsBitmask() & Use getId(); $c_user = $c->getUser(); - $c_user_name = $c_user->getName(); $c_user_id = $c->getUserId(); - $c_user_url = $c_user->getURI(); - $c_user_avatar = $c_user->getAvatarURI(22); $c_edit_visible = ($c_user_id == $logged_in_id || $c_edit_visible_master); $c_delete_visible = ($c_user_id == $logged_in_id || $c_delete_visible_master); ?> -
DeleteEditgetContent(true); ?> + getName(), FILTER_SANITIZE_STRING); ?>Anonymous
DeleteEditgetContent(true); ?> From aac4649749cad107a90ba2367a1aa819b4925aea Mon Sep 17 00:00:00 2001 From: Davnit Date: Sat, 20 Oct 2018 07:45:54 -0400 Subject: [PATCH 3/3] Unify comment section display Instead of having code to show the same comment section in multiple files, centralize it and have the other files include the central file. The file is located in templates\Comment\Section.inc.phtml, which seemed to fit the general pattern. Before including you should have $comments, $logged_in, $object_id, and $comment_parent_type defined. $comment_parent_type is the constant value from libraries\Comment "Comment::PARENT_TYPE_DOCUMENT" etc. The new comment section display also handles missing users. --- src/templates/Comment/Section.inc.phtml | 45 +++++++++++++++++++++++++ src/templates/Document/View.phtml | 44 +++++------------------- src/templates/News/View.phtml | 44 ++++-------------------- src/templates/Packet/View.phtml | 44 ++++-------------------- 4 files changed, 65 insertions(+), 112 deletions(-) create mode 100644 src/templates/Comment/Section.inc.phtml diff --git a/src/templates/Comment/Section.inc.phtml b/src/templates/Comment/Section.inc.phtml new file mode 100644 index 00000000..8bc8d236 --- /dev/null +++ b/src/templates/Comment/Section.inc.phtml @@ -0,0 +1,45 @@ + +
Comments
+
+ +

no one has commented yet.

+getOptionsBitmask() & User::OPTION_ACL_COMMENT_MODIFY)); +$c_delete_visible_master = ($logged_in && ($logged_in->getOptionsBitmask() & User::OPTION_ACL_COMMENT_DELETE)); +?> + +getId(); + $c_user = $c->getUser(); + $c_user_id = $c->getUserId(); + + $c_edit_visible = ($c_user_id == $logged_in_id || $c_edit_visible_master); + $c_delete_visible = ($c_user_id == $logged_in_id || $c_delete_visible_master); +?> + + +
getName(), FILTER_SANITIZE_STRING); ?>Anonymous
DeleteEdit
getContent(true); ?>
+ +
+ +
+
+
"> + + +

+

+

+
+
+ diff --git a/src/templates/Document/View.phtml b/src/templates/Document/View.phtml index 149dcd5c..149ca3c0 100644 --- a/src/templates/Document/View.phtml +++ b/src/templates/Document/View.phtml @@ -76,43 +76,15 @@ require("./header.inc.phtml");
-
Comments
-
- -

no one has commented yet.

-getOptionsBitmask() & User::OPTION_ACL_COMMENT_MODIFY)); -$c_delete_visible_master = ($logged_in && ($logged_in->getOptionsBitmask() & User::OPTION_ACL_COMMENT_DELETE)); -?> - -getId(); - $c_user = $c->getUser(); - $c_user_id = $c->getUserId(); - - $c_edit_visible = ($c_user_id == $logged_in_id || $c_edit_visible_master); - $c_delete_visible = ($c_user_id == $logged_in_id || $c_delete_visible_master); -?> - - -
getName(), FILTER_SANITIZE_STRING); ?>Anonymous
DeleteEdit
getContent(true); ?>
- -
- -
-
-
"> - - -

-

-

-
-
- - +
- + +require("./footer.inc.phtml"); ?> diff --git a/src/templates/News/View.phtml b/src/templates/News/View.phtml index 1f35c149..ed86f81b 100644 --- a/src/templates/News/View.phtml +++ b/src/templates/News/View.phtml @@ -86,44 +86,12 @@ require("./header.inc.phtml");
-
Comments
-
- -

no one has commented yet.

-getOptionsBitmask() & User::OPTION_ACL_COMMENT_MODIFY)); -$c_delete_visible_master = ($logged_in && ($logged_in->getOptionsBitmask() & User::OPTION_ACL_COMMENT_DELETE)); -?> - -getId(); - $c_user = $c->getUser(); - $c_user_name = $c_user->getName(); - $c_user_id = $c->getUserId(); - $c_user_url = $c_user->getURI(); - $c_user_avatar = $c_user->getAvatarURI(22); - - $c_edit_visible = ($c_user_id == $logged_in_id || $c_edit_visible_master); - $c_delete_visible = ($c_user_id == $logged_in_id || $c_delete_visible_master); -?> - - -

DeleteEdit
getContent(true); ?>
- -
- -
-
-
"> - - -

-

-

-
-
- - +
diff --git a/src/templates/Packet/View.phtml b/src/templates/Packet/View.phtml index 2d9f2e6c..a47a80a9 100644 --- a/src/templates/Packet/View.phtml +++ b/src/templates/Packet/View.phtml @@ -120,44 +120,12 @@ require("./header.inc.phtml");
-
Comments
-
- -

no one has commented yet.

-getOptionsBitmask() & User::OPTION_ACL_COMMENT_MODIFY)); -$c_delete_visible_master = ($logged_in && ($logged_in->getOptionsBitmask() & User::OPTION_ACL_COMMENT_DELETE)); -?> - -getId(); - $c_user = $c->getUser(); - $c_user_name = $c_user->getName(); - $c_user_id = $c->getUserId(); - $c_user_url = $c_user->getURI(); - $c_user_avatar = $c_user->getAvatarURI(22); - - $c_edit_visible = ($c_user_id == $logged_in_id || $c_edit_visible_master); - $c_delete_visible = ($c_user_id == $logged_in_id || $c_delete_visible_master); -?> - - -

DeleteEdit
getContent(true); ?>
- -
- -
-
-
"> - - -

-

-

-
-
- - +