Move mod/notice to src/Module/Notice

This commit is contained in:
Philipp Holzer 2019-05-18 20:02:21 +02:00
parent 33ec3d8051
commit 9092cb1beb
No known key found for this signature in database
GPG key ID: D8365C3D36B77D90
4 changed files with 71 additions and 23 deletions

View file

@ -1,23 +0,0 @@
<?php
/**
* @file mod/notice.php
* GNU Social -> friendica items permanent-url compatibility
*/
use Friendica\App;
use Friendica\Core\L10n;
use Friendica\Database\DBA;
function notice_init(App $a)
{
$id = $a->argv[1];
$r = q("SELECT `user`.`nickname` FROM `user` LEFT JOIN `item` ON `item`.`uid` = `user`.`uid` WHERE `item`.`id` = %d", intval($id));
if (DBA::isResult($r)) {
$nick = $r[0]['nickname'];
$a->internalRedirect('display/' . $nick . '/' . $id);
} else {
throw new \Friendica\Network\HTTPException\NotFoundException(L10n::t('Item not found.'));
}
return;
}

View file

@ -169,6 +169,7 @@ class Router
$collector->addRoute(['GET'], '/view/{id:\d+}', Module\Notifications\Notify::class); $collector->addRoute(['GET'], '/view/{id:\d+}', Module\Notifications\Notify::class);
$collector->addRoute(['GET'], '/mark/all', Module\Notifications\Notify::class); $collector->addRoute(['GET'], '/mark/all', Module\Notifications\Notify::class);
}); });
$this->routeCollector->addRoute(['GET'], '/notice/{id:\d+}', Module\GnuSocial\Notice::class);
$this->routeCollector->addRoute(['GET'], '/objects/{guid}', Module\Objects::class); $this->routeCollector->addRoute(['GET'], '/objects/{guid}', Module\Objects::class);
$this->routeCollector->addGroup('/oembed', function (RouteCollector $collector) { $this->routeCollector->addGroup('/oembed', function (RouteCollector $collector) {
$collector->addRoute(['GET'], '/b2h', Module\Oembed::class); $collector->addRoute(['GET'], '/b2h', Module\Oembed::class);

36
src/Model/ItemUser.php Normal file
View file

@ -0,0 +1,36 @@
<?php
namespace Friendica\Model;
use Exception;
use Friendica\Database\DBA;
/**
* Model for user specific operations of items
*/
class ItemUser
{
/**
* Returns fields of the user for an item
*
* @param int $id The item id
* @param array $fields The fields, which should get returned
*
* @return array|bool
* @throws Exception In case of a DB-failure
*/
public static function getUserForItemId($id, array $fields = [])
{
$item = DBA::selectFirst('item', ['uid'], ['id' => $id]);
if (empty($item)) {
return false;
}
$user = DBA::selectFirst('user', $fields, ['uid' => $item['uid']]);
if (!empty($user)) {
return $user;
} else {
return false;
}
}
}

View file

@ -0,0 +1,34 @@
<?php
namespace Friendica\Module\GnuSocial;
use Friendica\BaseModule;
use Friendica\Core\L10n;
use Friendica\Model\ItemUser;
use Friendica\Network\HTTPException;
/**
* GNU Social -> friendica items permanent-url compatibility
*/
class Notice extends BaseModule
{
public static function rawContent()
{
$a = self::getApp();
// @TODO: Replace with parameter from router
$id = ($a->argc > 1) ? $a->argv[1] : 0;
if (empty($id)) {
throw new HTTPException\NotFoundException(L10n::t('Item not found.'));
}
$user = ItemUser::getUserForItemId($id, ['nickname']);
if (empty($user)) {
throw new HTTPException\NotFoundException(L10n::t('Item not found.'));
} else {
$a->internalRedirect('display/' . $user['nickname'] . '/' . $id);
}
}
}