| @@ -56,62 +56,12 @@ | ||
| 56 | 56 | /** |
| 57 | 57 | * Display RSS Feeds Content |
| 58 | 58 | */ |
| 59 | 59 | public function display_rss_feeds_content() { |
| 60 | - $feeds = $this->get_remote_feeds_data(); | |
| 61 | - if ( is_array( $feeds ) ) { | |
| 62 | - foreach ( $feeds as $feed ) { | |
| 63 | - ?> | |
| 64 | - <div class="activity-block"> | |
| 65 | - <a href="<?php echo esc_url( $feed->demo_link ); ?>" target="_blank" style="margin-bottom:10px; display: inline-block;"> | |
| 66 | - <img src="<?php echo esc_url( $feed->image ); ?>" style="width:100%;min-height:240px;"> | |
| 67 | - </a> | |
| 68 | - <p> | |
| 69 | - <?php echo wp_kses_post( wp_trim_words( wp_strip_all_tags( $feed->content ), 50 ) ); ?> | |
| 70 | - <a href="<?php echo esc_url( $feed->demo_link ); ?>" target="_blank"> | |
| 71 | - <?php esc_html_e( 'Learn more...', $this->settings['text_domain'] ); ?> | |
| 72 | - </a> | |
| 73 | - </p> | |
| 74 | - </div> | |
| 75 | - <?php | |
| 76 | - } | |
| 77 | - } | |
| 78 | 60 | echo wp_kses_post( $this->get_rss_posts_data() ); |
| 79 | 61 | } |
| 80 | 62 | |
| 81 | 63 | /** |
| 82 | - * Get Remote Feeds Data | |
| 83 | - * | |
| 84 | - * @return array|mixed | |
| 85 | - */ | |
| 86 | - private function get_remote_feeds_data() { | |
| 87 | - $transient_key = $this->settings['transient_key']; | |
| 88 | - $cached_data = get_transient( $transient_key ); | |
| 89 | - | |
| 90 | - if ( ! empty( $cached_data ) ) { | |
| 91 | - return json_decode( $cached_data ); | |
| 92 | - } | |
| 93 | - | |
| 94 | - $response = wp_remote_get( $this->settings['remote_feed_link'], | |
| 95 | - array( | |
| 96 | - 'timeout' => 30, | |
| 97 | - 'headers' => array( | |
| 98 | - 'Accept' => 'application/json', | |
| 99 | - ), | |
| 100 | - ) | |
| 101 | - ); | |
| 102 | - | |
| 103 | - if ( is_wp_error( $response ) ) { | |
| 104 | - return []; | |
| 105 | - } | |
| 106 | - | |
| 107 | - $response_body = wp_remote_retrieve_body( $response ); | |
| 108 | - set_transient( $transient_key, $response_body, 6 * HOUR_IN_SECONDS ); | |
| 109 | - | |
| 110 | - return json_decode( $response_body ); | |
| 111 | - } | |
| 112 | - | |
| 113 | - /** | |
| 114 | 64 | * Get RSS Posts Data |
| 115 | 65 | * |
| 116 | 66 | * @return string |
| 117 | 67 | */ |
| @@ -129,9 +79,9 @@ | ||
| 129 | 79 | |
| 130 | 80 | $rss = fetch_feed( $this->settings['feed_link'] ); |
| 131 | 81 | |
| 132 | 82 | if ( is_wp_error( $rss ) ) { |
| 133 | - return '<li>' . esc_html__( 'Items Not Found', $this->settings['text_domain'] ) . '.</li>'; | |
| 83 | + return '<li>' . esc_html__( 'Items Not Found', 'ultimate-post-kit' ) . '.</li>'; | |
| 134 | 84 | } |
| 135 | 85 | |
| 136 | 86 | $maxitems = $rss->get_item_quantity( 5 ); |
| 137 | 87 | $rss_items = $rss->get_items( 0, $maxitems ); |
| @@ -156,9 +106,9 @@ | ||
| 156 | 106 | ?> |
| 157 | 107 | <div class="bdt-widget"> |
| 158 | 108 | <ul> |
| 159 | 109 | <?php if ( empty( $rss_items ) ) : ?> |
| 160 | - <li><?php esc_html_e( 'Items Not Found', $this->settings['text_domain'] ); ?>.</li> | |
| 110 | + <li><?php esc_html_e( 'Items Not Found', 'ultimate-post-kit' ); ?>.</li> | |
| 161 | 111 | <?php else : ?> |
| 162 | 112 | <?php foreach ( $rss_items as $item ) : ?> |
| 163 | 113 | <li> |
| 164 | 114 | <a target="_blank" href="<?php echo esc_url( $item['link'] ); ?>" |
| @@ -163,14 +113,14 @@ | ||
| 163 | 113 | <li> |
| 164 | 114 | <a target="_blank" href="<?php echo esc_url( $item['link'] ); ?>" |
| 165 | 115 | title="<?php echo esc_html( $item['date'] ); ?>"> |
| 166 | 116 | <?php if ( $this->is_feed_item_new( $item['date'] ) ) : ?> |
| 167 | - <span class="bdt-feed-badge bdt-feed-badge--new"><?php esc_html_e( 'New', $this->settings['text_domain'] ); ?></span> | |
| 117 | + <span class="bdt-feed-badge bdt-feed-badge--new"><?php esc_html_e( 'New', 'ultimate-post-kit' ); ?></span> | |
| 168 | 118 | <?php endif; ?> |
| 169 | 119 | <?php echo esc_html( $item['title'] ); ?> |
| 170 | 120 | </a> |
| 171 | 121 | <span class="bdt-date" style="display: block; margin: 0;"> |
| 172 | - <?php echo esc_html( human_time_diff( $item['date'], current_time( 'timestamp' ) ) . ' ' . __( 'ago', $this->settings['text_domain'] ) ); ?> | |
| 122 | + <?php echo esc_html( human_time_diff( $item['date'], current_time( 'timestamp' ) ) . ' ' . __( 'ago', 'ultimate-post-kit' ) ); ?> | |
| 173 | 123 | </span> |
| 174 | 124 | <div class="bdt-summary"> |
| 175 | 125 | <?php echo esc_html( wp_html_excerpt( $item['content'], 120 ) . ' [...]' ); ?> |
| 176 | 126 | </div> |
| @@ -213,13 +163,13 @@ | ||
| 213 | 163 | return $timestamp >= $cutoff; |
| 214 | 164 | } |
| 215 | 165 | } |
| 216 | 166 | |
| 167 | +// phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedVariableFound -- local settings array for this admin feed file. | |
| 217 | 168 | $settings = array( |
| 218 | 169 | 'feed_title' => 'BdThemes News & Updates', |
| 219 | 170 | 'transient_key' => 'bdthemes_product_feeds', |
| 220 | 171 | 'feed_link' => 'https://bdthemes.com/feed', |
| 221 | - 'remote_feed_link' => 'https://dashboard.bdthemes.io/wp-json/bdthemes/v1/product-feed/?product_category=element-pack', | |
| 222 | 172 | 'text_domain' => 'bdthemes', |
| 223 | 173 | 'footer_links' => [ |
| 224 | 174 | [ |
| 225 | 175 | 'url' => 'https://bdthemes.com/blog/', |
| @@ -239,6 +189,13 @@ | ||
| 239 | 189 | ], |
| 240 | 190 | ], |
| 241 | 191 | ); |
| 242 | 192 | |
| 243 | -new Admin_Feeds( $settings ); | |
| 193 | +/** | |
| 194 | + * The dashboard news widget contacts an external BdThemes server, so it is strictly | |
| 195 | + * opt-in: it stays disabled until the site administrator enables "BdThemes News & | |
| 196 | + * Updates" under Ultimate Post Kit > Other Settings. No request is made otherwise. | |
| 197 | + */ | |
| 198 | +if ( 'on' === \ultimate_post_kit_option( 'news_feed', 'ultimate_post_kit_other_settings', 'off' ) ) { | |
| 199 | + new Admin_Feeds( $settings ); | |
| 200 | +} | |
| 244 | 201 | |