+ /**
+ * Truth table for existing activities
+ *
+ * | Inputs || Outputs |
+ * |----------------------------||-------------------|
+ * | Mode | Event | Same verb || Delete? | Return? |
+ * |--------|-------|-----------||---------|---------|
+ * | create | Yes | Yes || No | Yes |
+ * | create | Yes | No || Yes | No |
+ * | create | No | Yes || No | Yes |
+ * | create | No | No || N/A† |
+ * | delete | Yes | Yes || Yes | N/A‡ |
+ * | delete | Yes | No || No | N/A‡ |
+ * | delete | No | Yes || Yes | N/A‡ |
+ * | delete | No | No || N/A† |
+ * |--------|-------|-----------||---------|---------|
+ * | A | B | C || A xor C | !B or C |
+ *
+ * † Can't happen: It's impossible to find an existing non-event activity without
+ * the same verb because we are only looking for this single verb.
+ *
+ * ‡ The "mode = delete" is returning early whether an existing activity was found or not.
+ */
+ if ($mode == 'create' xor $like_item['verb'] == $activity) {
+ self::markForDeletionById($like_item['id']);
+ }