- /**
- * Returns a key string which represents this micro-app in HTML
- * ids etc, as when offering selection of what type of post to make.
- * This is paired with the user-visible localizable $this->appTitle().
- *
- * All micro-app classes must override this method.
- */
- abstract function tag();
-
- /**
- * Return a list of ActivityStreams object type URIs
- * which this micro-app handles. Default implementations
- * of the base class will use this list to check if a
- * given ActivityStreams object belongs to us, via
- * $this->isMyNotice() or $this->isMyActivity.
- *
- * All micro-app classes must override this method.
- *
- * @fixme can we confirm that these types are the same
- * for Atom and JSON streams? Any limitations or issues?
- *
- * @return array of strings
- */
- abstract function types();
-
- /**
- * Given a parsed ActivityStreams activity, your plugin
- * gets to figure out how to actually save it into a notice
- * and any additional data structures you require.
- *
- * This will handle things received via AtomPub, OStatus
- * (PuSH and Salmon transports), or ActivityStreams-based
- * backup/restore of account data.
- *
- * You should be able to accept as input the output from your
- * $this->activityObjectFromNotice(). Where applicable, try to
- * use existing ActivityStreams structures and object types,
- * and be liberal in accepting input from what might be other
- * compatible apps.
- *
- * All micro-app classes must override this method.
- *
- * @fixme are there any standard options?
- *
- * @param Activity $activity
- * @param Profile $actor
- * @param array $options=array()
- *
- * @return Notice the resulting notice
- */
- abstract function saveNoticeFromActivity($activity, $actor, $options=array());
-
- /**
- * Given an existing Notice object, your plugin gets to
- * figure out how to arrange it into an ActivityStreams
- * object.
- *
- * This will be how your specialized notice gets output in
- * Atom feeds and JSON-based ActivityStreams output, including
- * account backup/restore and OStatus (PuSH and Salmon transports).
- *
- * You should be able to round-trip data from this format back
- * through $this->saveNoticeFromActivity(). Where applicable, try
- * to use existing ActivityStreams structures and object types,
- * and consider interop with other compatible apps.
- *
- * All micro-app classes must override this method.
- *
- * @fixme this outputs an ActivityObject, not an Activity. Any compat issues?
- *
- * @param Notice $notice
- *
- * @return ActivityObject
- */
- abstract function activityObjectFromNotice($notice);
-
- /**
- * Custom HTML output for your special notice; called when a
- * matching notice turns up in a NoticeListItem.
- *
- * All micro-app classes must override this method.
- *
- * @param Notice $notice
- * @param HTMLOutputter $out
- *
- * @fixme WARNING WARNING WARNING base plugin stuff below tries to close
- * a div that this function opens in the BookmarkPlugin child class.
- * This is probably wrong.
- */
- abstract function showNotice($notice, $out);
-