Notice->getParent code reuse

...not entirely sure whether to allow getParent calls on Notice
objects which have not been created, but we'll leave that in for now...
This commit is contained in:
Mikael Nordfeldth 2015-06-02 13:45:49 +02:00
parent 6b9a8b7b19
commit c84b21008e
2 changed files with 44 additions and 6 deletions

View 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);
}
/**

View File

@ -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));
}
}