diff --git a/-/php/posts.php b/-/php/posts.php
index 94a3004..93336e6 100644
--- a/-/php/posts.php
+++ b/-/php/posts.php
@@ -36,7 +36,6 @@ public function __construct() {
add_action( 'admin_enqueue_scripts', array( $this, 'admin_enqueue_scripts' ) );
add_action( 'restrict_manage_posts', array( $this, 'restrict_manage_posts' ) );
add_action( 'wp_insert_post', array( $this, 'save_webcomic_commerce' ), 10, 2 );
- add_action( 'transition_post_status', array( $this, 'tweet_webcomic' ), 10, 3 );
add_action( 'wp_insert_post_data', array( $this, 'wp_insert_post_data' ), 10, 2 );
add_action( 'wp_insert_post', array( $this, 'save_webcomic_transcripts' ), 10, 2 );
add_action( 'bulk_edit_custom_box', array( $this, 'bulk_edit_custom_box' ), 10, 2 );
@@ -229,70 +228,6 @@ public function save_webcomic_commerce( $id, $post ) {
}
}
- /** Auto tweet on webcomic publish.
- *
- * @param string $new New post status.
- * @param string $old Old post status.
- * @param string $post Post object to update.
- * @uses Webcomic::$config
- * @hook transition_post_status
- * @filter string webcomic_tweet Filters the tweet text pushed to Twitter whenever a webcomic is published. Defaults to the collection-specific tweet format.
- */
- public function tweet_webcomic( $new, $old, $post ) {
- if ( 'publish' === $new and 'publish' !== $old and !empty( self::$config[ 'collections' ][ $post->post_type ][ 'twitter' ][ 'format' ] ) and !empty( self::$config[ 'collections' ][ $post->post_type ][ 'twitter' ][ 'oauth_token' ] ) and !empty( self::$config[ 'collections' ][ $post->post_type ][ 'twitter' ][ 'oauth_secret' ] ) ) {
- $status = self::$config[ 'collections' ][ $post->post_type ][ 'twitter' ][ 'format' ];
-
- if ( false !== strpos( self::$config[ 'collections' ][ $post->post_type ][ 'twitter' ][ 'format' ], '%' ) ) {
- $s = $c = array();
- $link = wp_get_shortlink( $post->ID );
-
- if ( false !== strpos( self::$config[ 'collections' ][ $post->post_type ][ 'twitter' ][ 'format' ], '%storylines' ) and $storylines = wp_get_object_terms( $post->ID, "{$post->post_type}_storyline" ) and !is_wp_error( $storylines ) ) {
- foreach ( $storylines as $storyline ) {
- $s[] = str_replace( array( '_', '-' ), '', "#{$storyline->slug}" );
- }
- }
-
- if ( false !== strpos( self::$config[ 'collections' ][ $post->post_type ][ 'twitter' ][ 'format' ], '%characters' ) and $characters = wp_get_object_terms( $post->ID, "{$post->post_type}_character" ) and !is_wp_error( $characters ) ) {
- foreach ( $characters as $character ) {
- $c[] = str_replace( array( '_', '-' ), '', "#{$character->slug}" );
- }
- }
-
- $tokens = array(
- '%url' => $link ? $link : get_permalink( $post->ID ),
- '%date' => get_the_time( get_option( 'date_format' ), $post ),
- '%time' => get_the_time( get_option( 'time_format' ), $post ),
- '%title' => get_the_title( $post->ID ),
- '%author' => get_the_author_meta( 'display_name', $post->post_author ),
- '%site-url' => home_url(),
- '%permalink' => get_permalink( $post->ID ),
- '%site-name' => get_bloginfo( 'name' ),
- '%storylines' => join( ' ', $s ),
- '%characters' => join( ' ', $c ),
- '%collection' => '#' . str_replace( array( '_', '-' ), '', self::$config[ 'collections' ][ $post->post_type ][ 'slugs' ][ 'name' ] ),
- '%collection-name' => strip_tags( self::$config[ 'collections' ][ $post->post_type ][ 'name' ] )
- );
-
- $status = apply_filters( 'webcomic_tweet', str_replace( array_keys( $tokens ), $tokens, $status ), $post );
- }
-
- if ( $status ) {
- if ( !class_exists( 'TwitterOAuth' ) ) {
- require_once self::$dir . '-/library/twitter.php';
- }
-
- $oauth = new TwitterOAuth( self::$config[ 'collections' ][ $post->post_type ][ 'twitter' ][ 'consumer_key' ], self::$config[ 'collections' ][ $post->post_type ][ 'twitter' ][ 'consumer_secret' ], self::$config[ 'collections' ][ $post->post_type ][ 'twitter' ][ 'oauth_token' ], self::$config[ 'collections' ][ $post->post_type ][ 'twitter' ][ 'oauth_secret' ] );
- $response = $oauth->post( 'statuses/update', array( 'status' => substr( strip_tags( $status ), 0, 140 ) ) );
-
- if ( isset( $response->error ) ) {
- $errors = get_transient( 'webcomic_error' );
-
- set_transient( 'webcomic_error', array_merge( array( sprintf( __( 'Twitter Error: %s', 'webcomic' ), $response->error ) ), $errors ? $errors : array() ), 1 );
- }
- }
- }
- }
-
/** Update webcomic title, slug, and content prior to saving.
*
* @param array $data An array of post data.
diff --git a/webcomic.php b/webcomic.php
index a3f70c9..151e50c 100755
--- a/webcomic.php
+++ b/webcomic.php
@@ -129,6 +129,7 @@ public function __construct() {
add_action( 'webcomic_buffer_alert', array( $this, 'buffer_alert' ) );
add_action( 'wp_enqueue_scripts', array( $this, 'enqueue_scripts' ) );
add_action( 'template_redirect', array( $this, 'template_redirect' ) );
+ add_action( 'transition_post_status', array( $this, 'tweet_webcomic' ), 10, 3 );
add_filter( 'request', array( $this, 'request' ), 10, 1 );
add_filter( 'get_term', array( $this, 'get_term' ), 10, 2 );
@@ -565,6 +566,78 @@ public function template_redirect() {
}
}
+ /** Auto tweet on webcomic publish.
+ *
+ * @param string $new New post status.
+ * @param string $old Old post status.
+ * @param string $post Post object to update.
+ * @uses Webcomic::$config
+ * @hook transition_post_status
+ * @filter string webcomic_tweet Filters the tweet text pushed to Twitter whenever a webcomic is published. Defaults to the collection-specific tweet format.
+ */
+ public function tweet_webcomic( $new, $old, $post ) {
+ if ( 'publish' === $new and 'publish' !== $old and !empty( self::$config[ 'collections' ][ $post->post_type ][ 'twitter' ][ 'format' ] ) and !empty( self::$config[ 'collections' ][ $post->post_type ][ 'twitter' ][ 'oauth_token' ] ) and !empty( self::$config[ 'collections' ][ $post->post_type ][ 'twitter' ][ 'oauth_secret' ] ) ) {
+ $status = self::$config[ 'collections' ][ $post->post_type ][ 'twitter' ][ 'format' ];
+
+ if ( false !== strpos( self::$config[ 'collections' ][ $post->post_type ][ 'twitter' ][ 'format' ], '%' ) ) {
+ $s = $c = $m = array();
+ $link = wp_get_shortlink( $post->ID );
+
+ if ( false !== strpos( self::$config[ 'collections' ][ $post->post_type ][ 'twitter' ][ 'format' ], '%storylines' ) and $storylines = wp_get_object_terms( $post->ID, "{$post->post_type}_storyline" ) and !is_wp_error( $storylines ) ) {
+ foreach ( $storylines as $storyline ) {
+ $s[] = str_replace( array( '_', '-' ), '', "#{$storyline->slug}" );
+ }
+ }
+
+ if ( false !== strpos( self::$config[ 'collections' ][ $post->post_type ][ 'twitter' ][ 'format' ], '%characters' ) and $characters = wp_get_object_terms( $post->ID, "{$post->post_type}_character" ) and !is_wp_error( $characters ) ) {
+ foreach ( $characters as $character ) {
+ $c[] = str_replace( array( '_', '-' ), '', "#{$character->slug}" );
+ }
+ }
+
+ if ( preg_match_all( '/%field:(?(?=\{).+?\}|\S+)/', self::$config[ 'collections' ][ $post->post_type ][ 'twitter' ][ 'format' ], $matches ) ) {
+ foreach ( $matches[ 0 ] as $match ) {
+ if ( empty( $m[ $match ] ) ) {
+ $m[ $match ] = get_post_meta( $post->ID, str_replace( array( '%field:', '{', '}' ), '', $match ), true );
+ }
+ }
+ }
+
+ $tokens = array_merge( array(
+ '%url' => $link ? $link : get_permalink( $post->ID ),
+ '%date' => get_the_time( get_option( 'date_format' ), $post ),
+ '%time' => get_the_time( get_option( 'time_format' ), $post ),
+ '%title' => get_the_title( $post->ID ),
+ '%author' => get_the_author_meta( 'display_name', $post->post_author ),
+ '%site-url' => home_url(),
+ '%permalink' => get_permalink( $post->ID ),
+ '%site-name' => get_bloginfo( 'name' ),
+ '%storylines' => join( ' ', $s ),
+ '%characters' => join( ' ', $c ),
+ '%collection' => '#' . str_replace( array( '_', '-' ), '', self::$config[ 'collections' ][ $post->post_type ][ 'slugs' ][ 'name' ] ),
+ '%collection-name' => strip_tags( self::$config[ 'collections' ][ $post->post_type ][ 'name' ] )
+ ), $m );
+
+ $status = apply_filters( 'webcomic_tweet', str_replace( array_keys( $tokens ), $tokens, $status ), $post );
+ }
+
+ if ( $status ) {
+ if ( !class_exists( 'TwitterOAuth' ) ) {
+ require_once self::$dir . '-/library/twitter.php';
+ }
+
+ $oauth = new TwitterOAuth( self::$config[ 'collections' ][ $post->post_type ][ 'twitter' ][ 'consumer_key' ], self::$config[ 'collections' ][ $post->post_type ][ 'twitter' ][ 'consumer_secret' ], self::$config[ 'collections' ][ $post->post_type ][ 'twitter' ][ 'oauth_token' ], self::$config[ 'collections' ][ $post->post_type ][ 'twitter' ][ 'oauth_secret' ] );
+ $response = $oauth->post( 'statuses/update', array( 'status' => substr( strip_tags( $status ), 0, 140 ) ) );
+
+ if ( isset( $response->error ) ) {
+ $errors = get_transient( 'webcomic_error' );
+
+ set_transient( 'webcomic_error', array_merge( array( sprintf( __( 'Twitter Error: %s', 'webcomic' ), $response->error ) ), $errors ? $errors : array() ), 1 );
+ }
+ }
+ }
+ }
+
/** Return the appropriate theme ID for custom collection themes.
*
* @param string $theme Name of the current theme.