????
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_RSS_Connect.php |
<?php namespace SmashBalloon\YouTubeFeed; class SBY_RSS_Connect { /** * @var string */ private $url; /** * @var object */ private $response; private $is_live_stream; public function __construct( $endpoint = '', $params = array() ) { $this->is_live_stream = false; if ( isset( $params['livestream'] ) ) { $this->is_live_stream = true; } $this->set_url( $endpoint, $params ); } public function get_data() { return $this->response; } public function set_url_from_args( $url ) { $this->url = $url; } public function get_url() { return $this->url; } public function connect() { if ( ! ini_get( 'allow_url_fopen' ) ) { if ( ! $this->is_live_stream ) { $error_message = '<p><b>'. __( 'Unable to retrieve new videos without an API key.', 'feeds-for-youtube' ) .'</b></p>'; if ( current_user_can( 'manage_youtube_feed_options' ) ) { $error_message .= '<p>' . sprintf( __( 'Due to your server configuration, an API key is required to update your feed. See %sthis FAQ%s to set up an API key.', 'feeds-for-youtube' ), '<a href="https://smashballoon.com/youtube-api-key/" target="_blank" rel="noopener nofollow">', '</a>' ) . '</p>'; } } else { $error_message = '<p><b>'. __( 'Unable to retrieve new videos due to server configuration.', 'feeds-for-youtube' ) .'</b></p>'; if ( current_user_can( 'manage_youtube_feed_options' ) ) { $error_message .= '<p>' . sprintf( __( 'You must have the allow_url_fopen directive enabled in your server\'s php.ini file to retrieve live streams.', 'feeds-for-youtube' ), '<a href="https://smashballoon.com/youtube-api-key/" target="_blank" rel="noopener nofollow">', '</a>' ) . '</p>'; } } global $sby_posts_manager; $sby_posts_manager->add_frontend_error( 'api', $error_message ); $sby_posts_manager->add_error( 'api', array( 'Error connecting', $error_message ) ); $sby_posts_manager->add_api_request_delay( 300 ); return array(); } if ( wp_remote_retrieve_response_code( wp_remote_get( $this->url ) ) === 404 ) { $error_message = '<p><b>'. __( 'Cannot collect videos from this channel. Please make sure this is a valid channel ID.', 'feeds-for-youtube' ) .'</b></p>'; global $sby_posts_manager; $sby_posts_manager->add_frontend_error( 'api', $error_message ); $sby_posts_manager->add_error( 'api', array( 'Error connecting', $error_message ) ); $sby_posts_manager->add_api_request_delay( 300 ); return array(); } $parsed_obj = new \SimpleXMLElement( $this->url, null, true ); $items_array = array(); if ( isset( $parsed_obj->entry ) ) { foreach ( $parsed_obj->entry as $video_xml ) { $this_item_array = array(); $high_thumbnail_url = (string) $video_xml->children( 'http://search.yahoo.com/mrss/' )->group->thumbnail->attributes()->url; $this_item_array['snippet'] = array( 'publishedAt' => (string) $video_xml->published, 'channelId' => (string) $video_xml->children( 'http://www.youtube.com/xml/schemas/2015' )->channelId, 'title' => (string) $video_xml->title, 'description' => (string) $video_xml->children( 'http://search.yahoo.com/mrss/' )->group->description, 'thumbnails' => array( 'default' => array( 'url' => (string) str_replace( 'hqdefault.jpg', 'default.jpg', $high_thumbnail_url ), ), 'medium' => array( 'url' => str_replace( 'hqdefault.jpg', 'mqdefault.jpg', $high_thumbnail_url ), ), 'high' => array( 'url' => $high_thumbnail_url, 'width' => (string) $video_xml->children( 'http://search.yahoo.com/mrss/' )->group->thumbnail->attributes()->width, 'height' => (string) $video_xml->children( 'http://search.yahoo.com/mrss/' )->group->thumbnail->attributes()->height, ), 'standard' => array( 'url' => str_replace( 'hqdefault.jpg', 'sddefault.jpg', $high_thumbnail_url ), ), 'maxres' => array( 'url' => str_replace( 'hqdefault.jpg', 'maxresdefault.jpg', $high_thumbnail_url ), ), ), 'channelTitle' => (string) $video_xml->author->name, 'resourceId' => array( 'videoId' => (string) $video_xml->children( 'http://www.youtube.com/xml/schemas/2015' )->videoId ), ); $this_item_array['statistics'] = array( 'viewCount' => (int) $video_xml->children( 'http://search.yahoo.com/mrss/' )->group->community->statistics->attributes()->views, 'starRating' => (float) $video_xml->children( 'http://search.yahoo.com/mrss/' )->group->community->starRating->attributes()->average, ); $items_array[] = $this_item_array; } } $this->response = $items_array; } protected function set_url( $endpoint_slug, $params ) { $url = 'https://www.youtube.com/feeds/videos.xml?channel_id=' . $params['channel_id']; $this->set_url_from_args( $url ); } }