activitystrea.ms) Feeds
* Author: Matthias Pfefferle
* Author URI: http://notizblog.org
* Version: 1.1.0
* License: MIT
* License URI: https://opensource.org/licenses/MIT
* Text Domain: activitystram-extension
*/
add_action( 'init', array( 'ActivityStreamExtensionPlugin', 'init' ) );
register_activation_hook( __FILE__, array( 'ActivityStreamExtensionPlugin', 'flush_rewrite_rules' ) );
register_deactivation_hook( __FILE__, array( 'ActivityStreamExtensionPlugin', 'flush_rewrite_rules' ) );
/**
* ActivityStream Extension
*
* @author Matthias Pfefferle
*/
class ActivityStreamExtensionPlugin {
/**
* Init function
*/
public static function init() {
add_filter( 'query_vars', array( 'ActivityStreamExtensionPlugin', 'query_vars' ) );
add_action( 'wp_head', array( 'ActivityStreamExtensionPlugin', 'add_html_header' ), 5 );
add_filter( 'feed_content_type', array( 'ActivityStreamExtensionPlugin', 'feed_content_type' ), 10, 2 );
// add the as1 feed
add_feed( 'as1', array( 'ActivityStreamExtensionPlugin', 'do_feed_as1' ) );
add_action( 'do_feed_as1', array( 'ActivityStreamExtensionPlugin', 'do_feed_as1' ), 10, 1 );
add_filter( 'as1_object_type', array( 'ActivityStreamExtensionPlugin', 'post_as1_object_type' ), 10, 2 );
// add the as2 feed
add_feed( 'as2', array( 'ActivityStreamExtensionPlugin', 'do_feed_as2' ) );
add_action( 'do_feed_as2', array( 'ActivityStreamExtensionPlugin', 'do_feed_as2' ), 10, 1 );
add_filter( 'as2_object_type', array( 'ActivityStreamExtensionPlugin', 'post_as2_object_type' ), 10, 2 );
// push json feed
add_filter( 'pshb_feed_urls', array( 'ActivityStreamExtensionPlugin', 'publish_to_hub' ) );
// extend core feeds with AS1
add_action( 'atom_ns', array( 'ActivityStreamExtensionPlugin', 'add_atom_activity_namespace' ) );
add_action( 'atom_entry', array( 'ActivityStreamExtensionPlugin', 'add_atom_activity_object' ) );
add_action( 'atom_author', array( 'ActivityStreamExtensionPlugin', 'add_atom_activity_author' ) ); // run before output
add_action( 'comment_atom_ns', array( 'ActivityStreamExtensionPlugin', 'add_atom_activity_namespace' ) );
add_action( 'comment_atom_entry', array( 'ActivityStreamExtensionPlugin', 'add_comment_atom_activity_object' ) );
}
/**
* Add 'callback' as a valid query variables.
*
* @param array $vars
* @return array
*/
public static function query_vars( $vars ) {
$vars[] = 'callback';
$vars[] = 'feed';
$vars[] = 'pretty';
return $vars;
}
/**
* Adds "as1" content-type
*
* @param string $content_type the default content-type
* @param string $type the feed-type
* @return string the as1 content-type
*/
public static function feed_content_type( $content_type, $type ) {
if ( 'as1' == $type ) {
return 'application/stream+json';
}
if ( 'as2' == $type ) {
return 'application/activity+json';
}
return $content_type;
}
/**
* Reset rewrite rules
*/
public static function flush_rewrite_rules() {
global $wp_rewrite;
$wp_rewrite->flush_rules();
}
/**
* Echos autodiscovery links
*/
public static function add_html_header() {
// check if theme author want to display feed links
if ( ! current_theme_supports( 'automatic-feed-links' ) ) {
return;
}
?>
comment_count > 0 ) {
?>
http://activitystrea.ms/schema/1.0/post
http://activitystrea.ms/schema/1.0/
]]>
]]>
http://activitystrea.ms/schema/1.0/post
http://activitystrea.ms/schema/1.0/comment
]]>
http://activitystrea.ms/schema/1.0/article
]]>
]]>
http://activitystrea.ms/schema/1.0/person