PluginProbe
Super RSS Reader – Add attractive RSS Feed Widget / 5.4
Super RSS Reader – Add attractive RSS Feed Widget v5.4
trunk 0.8 2.0 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 3.0 3.1 3.2 4.0 4.0.1 4.1 4.2 4.3 4.4 4.4.1 4.5 4.6 4.7 4.8 All 33 releases
super-rss-reader / includes / utilities.php

utilities.php in Super RSS Reader – Add attractive RSS Feed Widget 5.4, at includes/utilities.php

113 lines 3.0 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 * Common utilities for the plugin
4 *
5 */
6
7 if( ! defined( 'ABSPATH' ) ) exit;
8
9 class SRR_Utilities{
10
11 public static function init(){
12
13 add_filter( 'the_excerpt_rss', array( __CLASS__, 'insert_featured_image_rss_feed' ) );
14 add_filter( 'the_content_feed', array( __CLASS__, 'insert_featured_image_rss_feed' ) );
15
16 add_filter( 'commentrss2_item', array( __CLASS__, 'insert_avatar_comments_feed' ), 10, 2 );
17
18 add_filter( 'wp_feed_options', array( __CLASS__, 'set_user_agent' ), 10, 2 );
19
20 }
21
22 public static function insert_featured_image_rss_feed( $content ){
23
24 global $post;
25
26 preg_match_all( '~<img.*?src=["\']+(.*?)["\']+~', $content ?? '', $image_urls );
27
28 if( empty( $image_urls[1] ) && has_post_thumbnail( $post->ID ) ) {
29 $content = '<p>' . get_the_post_thumbnail( $post->ID ) . '</p>' . $content;
30 }
31
32 return $content;
33
34 }
35
36 public static function insert_avatar_comments_feed( $comment_id, $comment_post_id ){
37
38 $comment = get_comment( $comment_id );
39 $avatar_url = get_avatar_url( $comment );
40
41 if( $avatar_url ){
42 echo '<media:thumbnail url="' . esc_attr( $avatar_url ) . '" />';
43 }
44
45 }
46
47 public static function set_user_agent( &$feed, $url ) {
48
49 $feed->set_useragent( 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36' );
50
51 }
52
53 public static function date_i18n( $format, $timestamp, $timezone ){
54
55 try{
56 $timezone = new DateTimeZone( trim( $timezone ) );
57 }catch( Exception $e ) {
58 $timezone = new DateTimeZone( 'UTC' );
59 }
60
61 $date = wp_date( $format, $timestamp, $timezone );
62
63 return $date;
64
65 }
66
67 public static function is_valid_image_url( $item, $url ){
68
69 // Does it begin with http?
70 if( strpos( $url, 'http' ) === 0 ){
71 return true;
72 }
73
74 // If it does not begin with http, then check if the RSS feed is of the current domain
75 $wp_domain = parse_url( get_site_url(), PHP_URL_HOST );
76 return strpos( $item->get_link(), $wp_domain ) !== false;
77
78 }
79
80 public static function parse_image_url( $item, $content ){
81
82 $attributes = array(
83 'src' => '~<img.*?src=["\']+(.*?)["\']+~',
84 'srcset' => '~<img.*?srcset=["\']+(.*?)["\']+~'
85 );
86
87 foreach( $attributes as $attribute => $regex ){
88 preg_match( $regex, $content ?? '', $urls );
89
90 if( empty( $urls ) ){
91 continue;
92 }
93 $parsed_url = $urls[1];
94
95 if( $attribute == 'srcset' ){
96 $srcset_urls = explode( ',' , $parsed_url );
97 $parsed_url = explode( ' ', $srcset_urls[0] )[0];
98 }
99
100 if( self::is_valid_image_url( $item, $parsed_url ) ){
101 return $parsed_url;
102 }
103 }
104
105 return '';
106
107 }
108
109 }
110
111 SRR_Utilities::init();
112
113 ?>