return $toplevel_parent;
}
- /**
- * Get the gravity for the given item array
- *
- * @param array $item
- * @return integer gravity
- */
- private static function getGravity(array $item): int
- {
- $activity = DI::activity();
-
- if (isset($item['gravity'])) {
- return intval($item['gravity']);
- } elseif ($item['parent-uri-id'] === $item['uri-id']) {
- return self::GRAVITY_PARENT;
- } elseif ($activity->match($item['verb'], Activity::POST)) {
- return self::GRAVITY_COMMENT;
- } elseif ($activity->match($item['verb'], Activity::FOLLOW)) {
- return self::GRAVITY_ACTIVITY;
- } elseif ($activity->match($item['verb'], Activity::ANNOUNCE)) {
- return self::GRAVITY_ACTIVITY;
- }
-
- Logger::info('Unknown gravity for verb', ['verb' => $item['verb']]);
- return self::GRAVITY_UNKNOWN; // Should not happen
- }
-
/**
* Inserts item record
*
*/
public static function insert(array $item, int $notify = 0, bool $post_local = true): int
{
- $itemInserter = new ItemInserter(DI::contentItem());
+ $itemInserter = new ItemInserter(DI::contentItem(), DI::activity());
$orig_item = $item;
}
}
- $item = self::validateItemData($item);
+ $item = self::validateItemData($item, $itemInserter);
// Ensure that there is an avatar cache
Contact::checkAvatarCache($item['author-id']);
return $post_user_id;
}
- private static function validateItemData(array $item): array
+ private static function validateItemData(array $item, ItemInserter $itemInserter): array
{
$item['wall'] = intval($item['wall'] ?? 0);
$item['extid'] = trim($item['extid'] ?? '');
$item['plink'] = ($item['plink'] ?? '') ?: DI::baseUrl() . '/display/' . urlencode($item['guid']);
- $item['gravity'] = self::getGravity($item);
+ $item['gravity'] = $itemInserter->getGravity($item);
+
+ if ($item['gravity'] === self::GRAVITY_UNKNOWN) {
+ Logger::info('Unknown gravity for verb', ['verb' => $item['verb']]);
+ }
$default = [
'url' => $item['author-link'], 'name' => $item['author-name'],
namespace Friendica\Model;
use Friendica\Content\Item as ItemContent;
+use Friendica\Protocol\Activity;
/**
* A helper class for inserting an Item Model
{
private ItemContent $itemContent;
- public function __construct(ItemContent $itemContent)
+ private Activity $activity;
+
+ public function __construct(ItemContent $itemContent, Activity $activity)
{
$this->itemContent = $itemContent;
+ $this->activity = $activity;
}
public function prepareOriginPost(array $item): array
return $item;
}
+
+ /**
+ * Get the gravity for the given item array
+ *
+ * @return int gravity
+ */
+ public function getGravity(array $item): int
+ {
+ if (isset($item['gravity'])) {
+ return intval($item['gravity']);
+ } elseif ($item['parent-uri-id'] === $item['uri-id']) {
+ return Item::GRAVITY_PARENT;
+ } elseif ($this->activity->match($item['verb'], Activity::POST)) {
+ return Item::GRAVITY_COMMENT;
+ } elseif ($this->activity->match($item['verb'], Activity::FOLLOW)) {
+ return Item::GRAVITY_ACTIVITY;
+ } elseif ($this->activity->match($item['verb'], Activity::ANNOUNCE)) {
+ return Item::GRAVITY_ACTIVITY;
+ }
+
+ return Item::GRAVITY_UNKNOWN; // Should not happen
+ }
}