- private static function deleteTagsFromItem($item)
- {
- if (($item["verb"] != Activity::TAG) || ($item["object-type"] != Activity\ObjectType::TAGTERM)) {
- return;
- }
-
- $xo = XML::parseString($item["object"], false);
- $xt = XML::parseString($item["target"], false);
-
- if ($xt->type != Activity\ObjectType::NOTE) {
- return;
- }
-
- $i = self::selectFirst(['id', 'contact-id', 'tag'], ['uri' => $xt->id, 'uid' => $item['uid']]);
- if (!DBA::isResult($i)) {
- return;
- }
-
- // For tags, the owner cannot remove the tag on the author's copy of the post.
- $owner_remove = ($item["contact-id"] == $i["contact-id"]);
- $author_copy = $item["origin"];
-
- if (($owner_remove && $author_copy) || !$owner_remove) {
- return;
- }
-
- $tags = explode(',', $i["tag"]);
- $newtags = [];
- if (count($tags)) {
- foreach ($tags as $tag) {
- if (trim($tag) !== trim($xo->body)) {
- $newtags[] = trim($tag);
- }
- }
- }
- self::update(['tag' => implode(',', $newtags)], ['id' => $i["id"]]);
- }