]> git.mxchange.org Git - quix0rs-gnu-social.git/commitdiff
Notice->getParent code reuse
authorMikael Nordfeldth <mmn@hethane.se>
Tue, 2 Jun 2015 11:45:49 +0000 (13:45 +0200)
committerMikael Nordfeldth <mmn@hethane.se>
Tue, 2 Jun 2015 11:46:23 +0000 (13:46 +0200)
...not entirely sure whether to allow getParent calls on Notice
objects which have not been created, but we'll leave that in for now...

classes/Notice.php
lib/noparentnoticeexception.php [new file with mode: 0644]

index ed2686a3836afb5e25c44c39008ff51cf1d27398..4d57c5a8db4952c2cb9cadadde2ececa8cb4038a 100644 (file)
@@ -2762,13 +2762,10 @@ class Notice extends Managed_DataObject
 
     public function getParent()
     {
-        $parent = Notice::getKV('id', $this->reply_to);
-
-        if (!$parent instanceof Notice) {
-            throw new ServerException('Notice has no parent');
+        if (empty($this->reply_to)) {
+            throw new NoParentNoticeException($this);
         }
-
-        return $parent;
+        return self::getById($this->reply_to);
     }
 
     /**
diff --git a/lib/noparentnoticeexception.php b/lib/noparentnoticeexception.php
new file mode 100644 (file)
index 0000000..fea179c
--- /dev/null
@@ -0,0 +1,41 @@
+<?php
+/**
+ * StatusNet, the distributed open-source microblogging tool
+ *
+ * Class for an exception when a database lookup returns no results
+ *
+ * PHP version 5
+ *
+ * LICENCE: This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * @category  Exception
+ * @package   GNUsocial
+ * @author    Mikael Nordfeldth <mmn@hethane.se>
+ * @copyright 2013 Free Software Foundation, Inc.
+ * @license   http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPLv3
+ * @link      http://www.gnu.org/software/social/
+ */
+
+if (!defined('GNUSOCIAL')) { exit(1); }
+
+class NoParentNoticeException extends ServerException
+{
+    public $notice;    // The notice which has no parent
+
+    public function __construct(Notice $notice)
+    {
+        $this->notice = $notice;
+        parent::__construct(sprintf(_('No parent for notice with ID "%s".'), $this->notice->id));
+    }
+}