publisher = new LBRY_Network_Publisher(); $this->parser = new LBRY_Network_Parser(); $this->post_meta_setup(); } /** * Sets up everything for the post meta boxes */ private function post_meta_setup() { // Add the meta boxes add_action( 'add_meta_boxes', array( $this, 'lbry_meta_boxes' ) ); // Save the post meta on 'save_post' hook add_action( 'wp_insert_post', array( $this, 'save_post_meta' ), 11, 2 ); // Checkbox inside the WordPres meta box near "Publish" button add_action( 'post_submitbox_misc_actions', array( $this, 'publish_to_lbry_checkbox' ) ); } /** * Adds the meta boxes to the post editing backend */ public function lbry_meta_boxes( $post ) { // IDEA: Support post types based on user selection add_meta_box( 'lbry-network-publishing', // Unique ID __('LBRY Network', 'lbrypress'), // Title array($this, 'meta_box_html'), // Callback function 'post', // Screen Options (or post type) 'side', // Context 'high', // Priority array( '__block_editor_compatible_meta_box' => false, ) ); } /** * Handles saving the post meta that is relative to publishing to the LBRY Network * @param int $post_id The ID of the post we are saving * @param WP_Post $post The Post Object we are saving * @return int Returns post_id if user cannot edit post */ public function save_post_meta( $post_id, $post ) { if ( $post->post_type != 'post' ) { return $post_id; } if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) { return $post_id; } // Verify the nonce before proceeding. if ( ! isset( $_POST['_lbrynonce'] ) || ! wp_verify_nonce( $_POST['_lbrynonce'], 'lbry_publish_post_nonce' ) ) { //LBRY()->notice->set_notice('error', 'Security check failed' ); return $post_id; } $post_type = get_post_type_object( $post->post_type ); if ( ! current_user_can( $post_type->cap->edit_post, $post_id ) ) { return $post_id; } if ( ( $_POST[LBRY_WILL_PUBLISH] ) && $_POST[LBRY_WILL_PUBLISH] != get_post_meta( $post_id, LBRY_WILL_PUBLISH, true ) ) { update_post_meta( $post_id, LBRY_WILL_PUBLISH, $_POST[LBRY_WILL_PUBLISH] ); } elseif ( ! isset( $_POST[LBRY_WILL_PUBLISH] ) ) { update_post_meta( $post_id, LBRY_WILL_PUBLISH, 0 ); } $channel = $_POST[LBRY_POST_PUB_CHANNEL]; $cur_channel = ( get_post_meta( $post_id, LBRY_POST_PUB_CHANNEL, true ) ? get_post_meta( $post_id, LBRY_POST_PUB_CHANNEL, true ) : get_post_meta( $post_id, '_lbry_channel', true ) ); $license = $_POST[LBRY_POST_PUB_LICENSE]; $cur_license = get_post_meta( $post_id, LBRY_POST_PUB_LICENSE, true ); $will_publish = $_POST[LBRY_WILL_PUBLISH]; // Update meta acordingly if ( ( $channel ) && ( $channel !== $cur_channel ) && ( $channel != null || $channel != '' ) ) { update_post_meta( $post_id, LBRY_POST_PUB_CHANNEL, $channel ); delete_post_meta( $post_id, '_lbry_channel'); // remove the _lbry_channel if already set from the post and replaces with _lbry_post_pub_channel to avoid confusion } elseif ( $channel === $cur_channel && ( $cur_channel === get_post_meta( $post_id, '_lbry_channel', true ) ) ) { update_post_meta( $post_id, LBRY_POST_PUB_CHANNEL, $channel ); delete_post_meta( $post_id, '_lbry_channel' ); // remove the _lbry_channel if already set from the post and replaces with _lbry_post_pub_channel to avoid confusion } if ( ( $license ) && ( $license !== $cur_license ) && ( $license != null || $license != '' ) ) { update_post_meta( $post_id, LBRY_POST_PUB_LICENSE, $license ); } elseif ( $license === $cur_license && ( $cur_license === get_post_meta( $post_id, 'lbry_license', true ) ) ) { update_post_meta( $post_id, LBRY_POST_PUB_LICENSE, $license ); } $published = get_post_meta( $post_id, '_lbry_is_published', true ); $will_pub = get_post_meta( $post_id, '_lbry_will_publish', true ); if ( ( $will_pub == 0 ) && ( ! ( $published ) || ( $published ) == 0 ) ) { // If not publishing to LBRY we want to not save unused values in database delete_post_meta( $post_id, '_lbry_post_pub_channel' ); delete_post_meta( $post_id, '_lbry_post_pub_license' ); delete_post_meta( $post_id, '_lbry_canonical_url' ); } $pub_channel = ( $channel ) ? $channel : $cur_channel; $pub_license = ( $license ) ? $license : $cur_license; if ( ( $will_publish ) && ( $will_publish == true ) && ( $post->post_status == 'publish' ) && ( $pub_channel ) && ( $pub_license ) && ( $pub_license != null ) ) { // Publish the post on the LBRY Network $this->publisher->publish( $post, $pub_channel, $pub_license ); } } /** * Creates a checkbox that changes the default setting to always publish to LBRY, * can be reverted individually to not publish on a per post basis. Saves to options table. */ public function publish_to_lbry_checkbox( $post ) { if ( get_post_type( $post_id ) != 'post' ) { return $post; } $post_id = $post->ID; $lbry_claim_id = get_post_meta( $post_id, '_lbry_claim_id', true ); if ( $_GET['action'] === 'edit' ) { if ( get_post_meta( $post_id, '_lbry_canonical_url', true ) == null || empty( get_post_meta( $post_id, '_lbry_canonical_url', true ) ) ) { $canonical_url = LBRY()->daemon->canonical_url( $lbry_claim_id ); if ( $canonical_url != null ) { update_post_meta( $post_id, '_lbry_canonical_url', $canonical_url ); } elseif ( $canonical_url == null ) { delete_post_meta( $post_id, '_lbry_canonical_url' ); } } } $lbry_url = ( get_post_meta( $post_id, '_lbry_canonical_url', true ) ); if ($lbry_url) { $open_url = str_replace('lbry://', 'open.lbry.com/', $lbry_url ); } $lbry_published = get_post_meta( $post_id, '_lbry_is_published', true ); $will_publish = get_post_meta( $post_id, '_lbry_will_publish', true ); $lbry_post_pub_channel = get_post_meta( $post_id, '_lbry_post_pub_channel', true ); if ( ( $will_publish ) ? $will_publish : $will_publish = get_option( LBRY_SETTINGS )['lbry_default_publish_setting'] ); if ( ( $_GET['action'] === 'edit' ) ? $value = $lbry_published : $value = $will_publish ); $checked = checked( $value, true, false ); // nonce set on page meta-box.php if ( ( ( $will_publish == true ) && ( $lbry_post_pub_channel ) ) || ( ( ( $lbry_published ) || ( $lbry_claim_id ) ) && ( ( $lbry_url != null ) || ( $lbry_claim_id ) ) ) ) { printf( '
Published on: LBRY
LBRY URL: ' . esc_html__( '%3$s', 'lbrypress' ) . '
LBRY claim ID:

' . esc_html__( '%4$s', 'lbrypress' ) . '

Update Post on: LBRY
', plugin_dir_url( LBRY_PLUGIN_FILE ) . 'admin/images/lbry.png', $open_url, $lbry_url, $lbry_claim_id, $checked, LBRY_WILL_PUBLISH ); } else { printf ( '
Publish to: LBRY
', plugin_dir_url( LBRY_PLUGIN_FILE ) . 'admin/images/lbry.png', $checked, LBRY_WILL_PUBLISH ); } } /** * Returns the HTML for the LBRY Meta Box * @param WP_POST $post */ public function meta_box_html( $post ) { require_once( LBRY_ABSPATH . 'templates/meta-box.php' ); } }