mirror of
https://github.com/friendica/friendica
synced 2024-11-14 16:22:53 +00:00
Moved acitivites
This commit is contained in:
parent
a3aab4a75a
commit
57cf384fae
4 changed files with 28 additions and 84 deletions
|
@ -49,7 +49,6 @@ use Friendica\Network\HTTPException\NotFoundException;
|
||||||
use Friendica\Network\HTTPException\TooManyRequestsException;
|
use Friendica\Network\HTTPException\TooManyRequestsException;
|
||||||
use Friendica\Network\HTTPException\UnauthorizedException;
|
use Friendica\Network\HTTPException\UnauthorizedException;
|
||||||
use Friendica\Object\Image;
|
use Friendica\Object\Image;
|
||||||
use Friendica\Protocol\Activity;
|
|
||||||
use Friendica\Security\BasicAuth;
|
use Friendica\Security\BasicAuth;
|
||||||
use Friendica\Util\DateTimeFormat;
|
use Friendica\Util\DateTimeFormat;
|
||||||
use Friendica\Util\Images;
|
use Friendica\Util\Images;
|
||||||
|
@ -245,83 +244,6 @@ function api_format_messages($item, $recipient, $sender)
|
||||||
return $ret;
|
return $ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* return likes, dislikes and attend status for item
|
|
||||||
*
|
|
||||||
* @param array $item array
|
|
||||||
* @param string $type Return type (atom, rss, xml, json)
|
|
||||||
*
|
|
||||||
* @return array
|
|
||||||
* likes => int count,
|
|
||||||
* dislikes => int count
|
|
||||||
* @throws BadRequestException
|
|
||||||
* @throws ImagickException
|
|
||||||
* @throws InternalServerErrorException
|
|
||||||
* @throws UnauthorizedException
|
|
||||||
*/
|
|
||||||
function api_format_items_activities($item, $type = "json")
|
|
||||||
{
|
|
||||||
$activities = [
|
|
||||||
'like' => [],
|
|
||||||
'dislike' => [],
|
|
||||||
'attendyes' => [],
|
|
||||||
'attendno' => [],
|
|
||||||
'attendmaybe' => [],
|
|
||||||
'announce' => [],
|
|
||||||
];
|
|
||||||
|
|
||||||
$condition = ['uid' => $item['uid'], 'thr-parent' => $item['uri'], 'gravity' => GRAVITY_ACTIVITY];
|
|
||||||
$ret = Post::selectForUser($item['uid'], ['author-id', 'verb'], $condition);
|
|
||||||
|
|
||||||
while ($parent_item = Post::fetch($ret)) {
|
|
||||||
// not used as result should be structured like other user data
|
|
||||||
//builtin_activity_puller($i, $activities);
|
|
||||||
|
|
||||||
// get user data and add it to the array of the activity
|
|
||||||
$user = DI::twitterUser()->createFromContactId($parent_item['author-id'], $item['uid'])->toArray();
|
|
||||||
switch ($parent_item['verb']) {
|
|
||||||
case Activity::LIKE:
|
|
||||||
$activities['like'][] = $user;
|
|
||||||
break;
|
|
||||||
case Activity::DISLIKE:
|
|
||||||
$activities['dislike'][] = $user;
|
|
||||||
break;
|
|
||||||
case Activity::ATTEND:
|
|
||||||
$activities['attendyes'][] = $user;
|
|
||||||
break;
|
|
||||||
case Activity::ATTENDNO:
|
|
||||||
$activities['attendno'][] = $user;
|
|
||||||
break;
|
|
||||||
case Activity::ATTENDMAYBE:
|
|
||||||
$activities['attendmaybe'][] = $user;
|
|
||||||
break;
|
|
||||||
case Activity::ANNOUNCE:
|
|
||||||
$activities['announce'][] = $user;
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
DBA::close($ret);
|
|
||||||
|
|
||||||
if ($type == "xml") {
|
|
||||||
$xml_activities = [];
|
|
||||||
foreach ($activities as $k => $v) {
|
|
||||||
// change xml element from "like" to "friendica:like"
|
|
||||||
$xml_activities["friendica:".$k] = $v;
|
|
||||||
// add user data into xml output
|
|
||||||
$k_user = 0;
|
|
||||||
foreach ($v as $user) {
|
|
||||||
$xml_activities["friendica:".$k][$k_user++.":user"] = $user;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
$activities = $xml_activities;
|
|
||||||
}
|
|
||||||
|
|
||||||
return $activities;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @param string $acl_string
|
* @param string $acl_string
|
||||||
|
@ -643,7 +565,7 @@ function prepare_photo_data($type, $scale, $photo_id, $uid)
|
||||||
throw new NotFoundException('Photo-related item not found.');
|
throw new NotFoundException('Photo-related item not found.');
|
||||||
}
|
}
|
||||||
|
|
||||||
$data['photo']['friendica_activities'] = api_format_items_activities($item, $type);
|
$data['photo']['friendica_activities'] = DI::friendicaActivities()->createFromUriId($item['uri-id'], $item['uid'], $type);
|
||||||
|
|
||||||
// retrieve comments on photo
|
// retrieve comments on photo
|
||||||
$condition = ["`parent` = ? AND `uid` = ? AND `gravity` IN (?, ?)",
|
$condition = ["`parent` = ? AND `uid` = ? AND `gravity` IN (?, ?)",
|
||||||
|
|
|
@ -270,6 +270,14 @@ abstract class DI
|
||||||
// "Factory" namespace instances
|
// "Factory" namespace instances
|
||||||
//
|
//
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return Factory\Api\Friendica\Activities
|
||||||
|
*/
|
||||||
|
public static function friendicaActivities()
|
||||||
|
{
|
||||||
|
return self::$dice->create(Factory\Api\Friendica\Activities::class);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return Factory\Api\Mastodon\Account
|
* @return Factory\Api\Mastodon\Account
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -50,7 +50,7 @@ class Activities extends BaseFactory
|
||||||
* @return Array
|
* @return Array
|
||||||
* @throws HTTPException\InternalServerErrorException
|
* @throws HTTPException\InternalServerErrorException
|
||||||
*/
|
*/
|
||||||
public function createFromUriId(int $uriId, int $uid): array
|
public function createFromUriId(int $uriId, int $uid, $type = 'json'): array
|
||||||
{
|
{
|
||||||
$activities = [
|
$activities = [
|
||||||
'like' => [],
|
'like' => [],
|
||||||
|
@ -94,6 +94,20 @@ class Activities extends BaseFactory
|
||||||
|
|
||||||
DBA::close($ret);
|
DBA::close($ret);
|
||||||
|
|
||||||
|
if ($type == 'xml') {
|
||||||
|
$xml_activities = [];
|
||||||
|
foreach ($activities as $k => $v) {
|
||||||
|
// change xml element from "like" to "friendica:like"
|
||||||
|
$xml_activities["friendica:".$k] = $v;
|
||||||
|
// add user data into xml output
|
||||||
|
$k_user = 0;
|
||||||
|
foreach ($v as $user) {
|
||||||
|
$xml_activities['friendica:' . $k][$k_user++ . ':user'] = $user;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$activities = $xml_activities;
|
||||||
|
}
|
||||||
|
|
||||||
return $activities;
|
return $activities;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -2162,8 +2162,8 @@ class ApiTest extends FixtureTest
|
||||||
*/
|
*/
|
||||||
public function testApiFormatItemsActivities()
|
public function testApiFormatItemsActivities()
|
||||||
{
|
{
|
||||||
$item = ['uid' => 0, 'uri' => ''];
|
$item = ['uid' => 0, 'uri-id' => 1];
|
||||||
$result = api_format_items_activities($item);
|
$result = DI::friendicaActivities()->createFromUriId($item['uri-id'], $item['uid']);
|
||||||
self::assertArrayHasKey('like', $result);
|
self::assertArrayHasKey('like', $result);
|
||||||
self::assertArrayHasKey('dislike', $result);
|
self::assertArrayHasKey('dislike', $result);
|
||||||
self::assertArrayHasKey('attendyes', $result);
|
self::assertArrayHasKey('attendyes', $result);
|
||||||
|
@ -2178,8 +2178,8 @@ class ApiTest extends FixtureTest
|
||||||
*/
|
*/
|
||||||
public function testApiFormatItemsActivitiesWithXml()
|
public function testApiFormatItemsActivitiesWithXml()
|
||||||
{
|
{
|
||||||
$item = ['uid' => 0, 'uri' => ''];
|
$item = ['uid' => 0, 'uri-id' => 1];
|
||||||
$result = api_format_items_activities($item, 'xml');
|
$result = DI::friendicaActivities()->createFromUriId($item['uri-id'], $item['uid'], 'xml');
|
||||||
self::assertArrayHasKey('friendica:like', $result);
|
self::assertArrayHasKey('friendica:like', $result);
|
||||||
self::assertArrayHasKey('friendica:dislike', $result);
|
self::assertArrayHasKey('friendica:dislike', $result);
|
||||||
self::assertArrayHasKey('friendica:attendyes', $result);
|
self::assertArrayHasKey('friendica:attendyes', $result);
|
||||||
|
|
Loading…
Reference in a new issue