set_sanitize_class( 'WP_SimplePie_Sanitize_KSES' ); // We must manually overwrite $feed->sanitize because SimplePie's // constructor sets it before we have a chance to set the sanitization class $rss->sanitize = new WP_SimplePie_Sanitize_KSES(); $rss->set_cache_class( 'WP_Feed_Cache' ); $rss->set_file_class( 'WP_SimplePie_File' ); $rss->set_raw_data($content); $rss->set_cache_duration( apply_filters( 'wp_feed_cache_transient_lifetime', 12 * HOUR_IN_SECONDS, $feed_url ) ); do_action_ref_array( 'wp_feed_options', array( &$rss, $feed_url ) ); $rss->init(); $rss->set_output_encoding( get_option( 'blog_charset' ) ); $rss->handle_content_type(); if ( $rss->error() ) return false; } $rss_items = $rss->get_items( 0, $rss->get_item_quantity( $limit ) ); // If the feed was erroneously if ( !$rss_items ) { $md5 = md5( $feed_url ); // This is from simple-pie, look at member variable ->cache_name_function delete_transient( 'feed_' . $md5 ); delete_transient( 'feed_mod_' . $md5 ); $rss->__destruct(); unset($rss); $rss = fetch_feed( $feed_url ); $rss_items = $rss->get_items( 0, $rss->get_item_quantity( $num ) ); $rss->__destruct(); unset($rss); } return $rss_items; } function powerpress_dashboard_head() { echo "\n"; ?> Blubrry.com to see your statistics'; } else if( $UserPass && time() > ($StatsCached['updated']+(60*60*3)) ) { $success = false; $api_url_array = powerpress_get_api_array(); foreach( $api_url_array as $index=> $api_url ) { $req_url = sprintf('%s/stats/%s/summary.html?nobody=1', rtrim($api_url, '/'), $Keyword); $req_url .= (defined('POWERPRESS_BLUBRRY_API_QSA')?'&'. POWERPRESS_BLUBRRY_API_QSA:''); $new_content = powerpress_remote_fopen($req_url, $UserPass, array(), 2); // Only give this 2 seconds to return results if( !$new_content && $api_url == 'https://api.blubrry.com/' ) { // Lets force cURL and see if that helps... $new_content = powerpress_remote_fopen($req_url, $UserPass, array(), 2, false, true); // Only give this 2 seconds to return results } if( $new_content ) { update_option('powerpress_stats', array('updated'=>time(), 'content'=>$new_content) ); $content = $new_content; $success = true; break; } } if( $success == false ) { if( empty($StatsCached['retry_count']) ) $StatsCached['retry_count'] = 1; else if( $StatsCached['retry_count'] < 24 ) $StatsCached['retry_count']++; if( $StatsCached['retry_count'] > 12 ) // After 36 hours, if we keep failing to authenticate then lets clear the data and display the authentication notice. { $content = ''; } // Update the updated flag so it will not try again for 3 hours... update_option('powerpress_stats', array('updated'=>time(), 'content'=>$content, 'retry_count'=>$StatsCached['retry_count'] ) ); } } if( !$UserPass ) { $content = sprintf('
'. __('Wait a sec! This feature is only available to Blubrry Podcast Community members. Join our community to get %s and access to other valuable %s.', 'powerpress') .'
', ''. __('Free Podcast Statistics') . '', ''. __('Services', 'powerpress') . '' ); $content .= ' '; $content .= sprintf(''. __('Our %s integrated PowerPress makes podcast publishing simple. Check out the %s on our exciting three-step publishing system!', 'powerpress') .'
', ''. __('Podcast Hosting', 'powerpress') .'', ''. __('Video', 'powerpress') .'' ); } else if( empty($content) ) { $content = sprintf(__('Error: A network or authentication error occurred. To verify your account, click the link "click here to configure Blubrry Statistics and Hosting services" found in the %s tab.', 'powerpress'), ''.__('Services & Statistics'.'', 'powerpress') ); } ?> '. __('Dismiss', 'powerpress') .''; } function powerpress_feed_text_limit( $text, $limit, $finish = '…') { if( strlen( $text ) > $limit ) { //$text = (function_exists('mb_substr')?mb_substr($text, 0, $limit):substr($text, 0, $limit) ); $text = substr( $text, 0, $limit ); $text = substr( $text, 0, - ( strlen( strrchr( $text,' ') ) ) ); $text .= $finish; } return $text; } function powerpress_dashboard_setup() { if( !function_exists('wp_add_dashboard_widget') ) return; // We are not in the dashboard! if( !empty($_GET['powerpressdash']) && $_GET['powerpressdash'] == 1 ) return; $Settings = get_option('powerpress_general'); $StatsDashboard = true; $NewsDashboard = true; if( !empty($Settings['disable_dashboard_stats']) ) $StatsDashboard = false; // Lets not do anything to the dashboard for PowerPress Statistics if( !empty($Settings['disable_dashboard_news']) ) $NewsDashboard = false; // Lets not do anything to the dashboard for PowerPress News if( !empty($Settings['use_caps']) && !current_user_can('view_podcast_stats') ) $StatsDashboard = false; $user = wp_get_current_user(); if( !empty($_GET['powerpressdash']) && $_GET['powerpressdash'] == 2 ) { return; } //if( $NewsDashboard ) wp_add_dashboard_widget( 'powerpress_dashboard_news', __( 'Podcast Insider by Blubrry', 'powerpress'), 'powerpress_dashboard_news_content' ); if( !empty($_GET['powerpressdash']) && $_GET['powerpressdash'] == 3 ) { return; } if( $StatsDashboard ) wp_add_dashboard_widget( 'powerpress_dashboard_stats', __( 'Blubrry Podcast Statistics', 'powerpress'), 'powerpress_dashboard_stats_content' ); if( !empty($_GET['powerpressdash']) && $_GET['powerpressdash'] == 4 ) { return; } if( !empty( $user ) ) { $user_options = get_user_option('powerpress_user'); if( empty($user_options) || empty($user_options['dashboard_installed']) || $user_options['dashboard_installed'] < 2 ) { if( !is_array($user_options) ) $user_options = array(); if( !empty($_GET['powerpressdash']) && $_GET['powerpressdash'] == 5 ) { return; } // First time we've seen this setting, so must be first time we've added the widgets, lets stack them at the top for convenience. powerpressadmin_add_dashboard_widgets($user->ID); $user_options['dashboard_installed'] = 2; // version of PowerPress update_user_option($user->ID, "powerpress_user", $user_options, true); } else { if( !empty($_GET['powerpressdash']) && $_GET['powerpressdash'] == 6 ) { return; } powerpressadmin_add_dashboard_widgets(false); } } } function powerpressadmin_add_dashboard_notice_widget($user_id, $notice_id) { $user_options = get_user_option('meta-box-order_dashboard', $user_id); if( $user_options ) { $save = false; if( !preg_match('/powerpress_dashboard_notice_'.$notice_id.'/', $user_options['normal']) && !preg_match('/powerpress_dashboard_notice_'.$notice_id.'/', $user_options['side']) && !preg_match('/powerpress_dashboard_notice_'.$notice_id.'/', $user_options['column3']) && !preg_match('/powerpress_dashboard_notice_'.$notice_id.'/', $user_options['column4']) ) { $save = true; $user_options['normal'] = 'powerpress_dashboard_notice_'.$notice_id.','.$user_options['normal']; } if( $save ) { update_user_option($user_id, "meta-box-order_dashboard", $user_options, true); } } } function powerpressadmin_add_dashboard_widgets( $check_user_id = false) { // Only re-order the powerpress widgets if they aren't already on the dashboard: if( $check_user_id ) { $user_options = get_user_option('meta-box-order_dashboard', $check_user_id); if( $user_options ) { $save = false; if( !preg_match('/powerpress_dashboard_stats/', $user_options['normal']) && !preg_match('/powerpress_dashboard_stats/', $user_options['side']) && !preg_match('/powerpress_dashboard_stats/', $user_options['column3']) && !preg_match('/powerpress_dashboard_stats/', $user_options['column4']) ) { $save = true; if( !empty($user_options['side']) ) $user_options['side'] = 'powerpress_dashboard_stats,'.$user_options['side']; else $user_options['normal'] = 'powerpress_dashboard_stats,'.$user_options['normal']; } if( !preg_match('/powerpress_dashboard_news/', $user_options['normal']) && !preg_match('/powerpress_dashboard_news/', $user_options['side']) && !preg_match('/powerpress_dashboard_news/', $user_options['column3']) && !preg_match('/powerpress_dashboard_news/', $user_options['column4']) ) { $save = true; $user_options['normal'] = 'powerpress_dashboard_news,'.$user_options['normal']; } if( $save ) { update_user_option($check_user_id, "meta-box-order_dashboard", $user_options, true); } } } // Reorder for all future users global $wp_meta_boxes; $dashboard_current = $wp_meta_boxes['dashboard']['normal']['core']; $dashboard_powerpress = array(); for( $i = 0; $i < 20; $i++ ) { if( isset( $dashboard_current['powerpress_dashboard_notice_' . $i] ) ) { $dashboard_powerpress['powerpress_dashboard_notice_' . $i] = $dashboard_current['powerpress_dashboard_notice_' . $i]; unset($dashboard_current['powerpress_dashboard_notice_' . $i]); } } if( isset( $dashboard_current['powerpress_dashboard_news'] ) ) { $dashboard_powerpress['powerpress_dashboard_news'] = $dashboard_current['powerpress_dashboard_news']; unset($dashboard_current['powerpress_dashboard_news']); } if( isset( $dashboard_current['powerpress_dashboard_stats'] ) ) { $dashboard_powerpress['powerpress_dashboard_stats'] = $dashboard_current['powerpress_dashboard_stats']; unset($dashboard_current['powerpress_dashboard_stats']); } if( count($dashboard_powerpress) > 0 ) { $wp_meta_boxes['dashboard']['normal']['core'] = array_merge($dashboard_powerpress, $dashboard_current); } } add_action('admin_head-index.php', 'powerpress_dashboard_head'); add_action('wp_dashboard_setup', 'powerpress_dashboard_setup'); function powerpress_dashboard_dismiss() // Called by AJAX call { $dismiss_dash_id = $_POST['dismiss_dash_id']; preg_match('/^powerpress_dashboard_notice_(.*)$/i', $dismiss_dash_id, $match ); if( empty($match[1]) ) exit; $DismissedNotices = get_option('powerpress_dismissed_notices'); if( !is_array($DismissedNotices) ) $DismissedNotices = array(); $DismissedNotices[ $match[1] ] = 1; update_option('powerpress_dismissed_notices', $DismissedNotices); echo 'ok'; exit; } ?>