????
Current Path : /home/darkwebsol/acrepairkwt.com/wp-content/plugins/feeds-for-youtube/inc/ |
Current File : /home/darkwebsol/acrepairkwt.com/wp-content/plugins/feeds-for-youtube/inc/SBY_WP_Post.php |
<?php namespace SmashBalloon\YouTubeFeed; use SmashBalloon\YouTubeFeed\Pro\SBY_Parse_Pro; use Smashballoon\Customizer\YouTube_License_Tier; class SBY_WP_Post { private $youtube_api_data; private $feed_id; private $wp_post_id; public function __construct( $json_or_array, $feed_id ) { $this->youtube_api_data = $json_or_array; $this->feed_id = $feed_id; } public function update_post( $status = 'draft' ) { // YouTube license tier $license_tier = new YouTube_License_Tier; $license_tier_features = $license_tier->tier_features(); // Get global settings $sby_settings = sby_get_database_settings(); $wp_posts_disabled = !empty($sby_settings['disable_wp_posts']); // Do not create posts if feature is not available in the tier or WP Posts creation disabled if ($wp_posts_disabled) { return; } // Add a filter to get the post type $post_type = apply_filters('sby_single_videos_post_type', SBY_CPT); $post_status = apply_filters('sby_single_videos_post_status', $status); if ( ! $this->get_wp_post_id() ) { $postarr = array( 'post_title' => SBY_Parse::get_video_title( $this->youtube_api_data ), 'post_content' => $this->get_post_content(), 'post_type' => $post_type, 'post_date' => date( 'Y-m-d H:i:s', SBY_Parse::get_timestamp( $this->youtube_api_data ) + sby_get_utc_offset() ), 'post_date_gmt' => date( 'Y-m-d H:i:s', SBY_Parse::get_timestamp( $this->youtube_api_data ) ), 'post_status' => $post_status ); $wp_post_id = wp_insert_post( $postarr ); if ( (int)$wp_post_id > 0 ) { $this->wp_post_id = $wp_post_id; $success = $this->update_meta(); do_action( 'sby_after_insert_video_post', $wp_post_id, $this->youtube_api_data ); } } else { do_action( 'sby_after_update_video_post', $this->wp_post_id, $this->youtube_api_data ); } } public function update_meta() { if ( ! isset( $this->wp_post_id ) ) { return false; } $prefix = 'sby_'; update_post_meta( $this->wp_post_id, $prefix . 'video_id', SBY_Parse::get_video_id( $this->youtube_api_data ) ); update_post_meta( $this->wp_post_id, $prefix . 'feed_id', sby_strip_after_hash( $this->feed_id ) ); update_post_meta( $this->wp_post_id, $prefix . 'channel_id', SBY_Parse::get_channel_id( $this->youtube_api_data ) ); update_post_meta( $this->wp_post_id, $prefix . 'channel_title', SBY_Parse::get_channel_title( $this->youtube_api_data ) ); update_post_meta( $this->wp_post_id, $prefix . 'description', SBY_Parse::get_caption( $this->youtube_api_data ) ); update_post_meta( $this->wp_post_id, $prefix . 'last_updated', date( 'Y-m-d H:i:s' ) ); update_post_meta( $this->wp_post_id, $prefix . 'thumbnails', SBY_Parse::get_media_src_set( $this->youtube_api_data ) ); update_post_meta( $this->wp_post_id, $prefix . 'youtube_publish_date', date( 'Y-m-d H:i:s', SBY_Parse::get_timestamp( $this->youtube_api_data ) ) ); if ( sby_is_pro_version() ) { update_post_meta( $this->wp_post_id, $prefix . 'live_broadcast_content', SBY_Parse_Pro::get_live_broadcast_content( $this->youtube_api_data ) ); } $post_array = $this->youtube_api_data; array_walk_recursive( $post_array, [$this, 'sby_replace_double_quotes'] ); update_post_meta( $this->wp_post_id, $prefix . 'json', esc_sql( wp_json_encode( $post_array ) ) ); return true; } public function post_content_description_is_incomplete() { $content = get_the_content( '', false, $this->get_wp_post_id() ); return (strpos( $content, '<!-- sby:description-incomplete -->' ) !== false); } public function update_video_details() { if ( empty( $this->youtube_api_data['statistics'] ) ) { return false; } $post_id = $this->get_wp_post_id(); if ( $post_id ) { $prefix = 'sby_'; if ( sby_is_pro_version() ) { update_post_meta( $post_id, $prefix . 'comment_count', SBY_Parse_Pro::get_comment_count( $this->youtube_api_data ) ); update_post_meta( $post_id, $prefix . 'view_count', SBY_Parse_Pro::get_view_count( $this->youtube_api_data ) ); update_post_meta( $post_id, $prefix . 'like_count', SBY_Parse_Pro::get_like_count( $this->youtube_api_data ) ); update_post_meta( $post_id, $prefix . 'scheduled_start_time', date( 'Y-m-d H:i:s', SBY_Parse_Pro::get_scheduled_start_timestamp( $this->youtube_api_data ) ) ); update_post_meta( $post_id, $prefix . 'actual_start_time', date( 'Y-m-d H:i:s', SBY_Parse_Pro::get_actual_start_timestamp( $this->youtube_api_data ) ) ); update_post_meta( $post_id, $prefix . 'actual_end_time', date( 'Y-m-d H:i:s', SBY_Parse_Pro::get_actual_end_timestamp( $this->youtube_api_data ) ) ); } update_post_meta( $post_id, $prefix . 'last_details_check_time', date( 'Y-m-d H:i:s' ) ); $description = SBY_Parse::get_caption( $this->youtube_api_data ); if ( ! empty( $description ) ) { update_post_meta( $post_id, $prefix . 'description', $description ); if ( $this->post_content_description_is_incomplete() ) { $this->update_content(); } } return true; } return false; } public function update_content() { $my_post = array(); $my_post['ID'] = $this->get_wp_post_id(); $my_post['post_content'] = $this->get_post_content( true ); wp_update_post( $my_post ); } public static function maybe_get_channel_id_for_name( $name ) { } public static function maybe_get_channel_id_for_channel_title( $title ) { global $wpdb; $channel_id = $wpdb->get_col( $wpdb->prepare( " SELECT Max(CASE WHEN m.meta_key = 'sby_channel_id' THEN m.meta_value ELSE NULL END) AS sby_channel_id FROM $wpdb->postmeta as m WHERE m.post_id IN (SELECT m2.post_id FROM $wpdb->postmeta as m2 WHERE m2.meta_key = 'sby_channel_title' AND m2.meta_value = %s ) GROUP BY m.post_id LIMIT 1", $title ) ); if ( isset( $channel_id[0] ) ) { return $channel_id[0]; } return false; } public function get_wp_post_id() { if ( isset( $this->wp_post_id ) ) { return $this->wp_post_id; } $video_id = SBY_Parse::get_video_id( $this->youtube_api_data ); global $wpdb; $results = $wpdb->get_results( $wpdb->prepare( "SELECT post_id, meta_key FROM $wpdb->postmeta WHERE meta_value = %s AND meta_key = %s", $video_id, 'sby_video_id' ), ARRAY_A ); if ( isset( $results[0] ) ) { $this->wp_post_id = $results[0]['post_id']; return $results[0]['post_id']; } else { return false; } } protected function get_post_content( $override = false ) { $description = SBY_Parse::get_caption( $this->youtube_api_data ); $flag = ''; if ( ! $override && substr( $description, -3 ) === '...' ) { $flag = '<!-- sby:description-incomplete -->'; } $content = '['.SBY_SLUG.'-single]<!-- sby:description-start -->' . wp_kses_post( make_clickable( wp_encode_emoji( $description ) ) ) . '<!-- sby:description-end -->' . $flag; $content = apply_filters( 'sby_wp_post_content', $content, $this->youtube_api_data, $this->wp_post_id ); return $content; } public function sby_replace_double_quotes( &$element, $index ) { $element = str_replace( array( '"', "\nn", "\n" ), array( """, '<br />', '<br />' ), $element ); } }