mirror of
https://github.com/Rushilwiz/dear-anon.git
synced 2025-04-21 20:39:51 -04:00
426 lines
14 KiB
PHP
426 lines
14 KiB
PHP
<?php
|
|
|
|
if( !function_exists('add_action') )
|
|
die("access denied.");
|
|
|
|
define('POWERPRESS_FEED_HIGHLIGHTED', 'https://blubrry.com/podcast-insider/category/highlighted/feed/?order=ASC');
|
|
define('POWERPRESS_FEED_NEWS', 'https://blubrry.com/podcast-insider/feed/');
|
|
|
|
function powerpress_get_news($feed_url, $limit=10)
|
|
{
|
|
include_once(ABSPATH . WPINC . '/feed.php');
|
|
$rss = fetch_feed( $feed_url );
|
|
|
|
// If feed doesn't work...
|
|
if ( is_wp_error($rss) )
|
|
{
|
|
require_once( ABSPATH . WPINC . '/class-feed.php' );
|
|
// Try fetching the feed using CURL directly...
|
|
$content = powerpress_remote_fopen($feed_url, false, array(), 3, false, true);
|
|
if( !$content ) {
|
|
return false;
|
|
}
|
|
// Load the content in a fetch_feed object...
|
|
$rss = new SimplePie();
|
|
|
|
$rss->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 "<script type=\"text/javascript\" src=\"". powerpress_get_root_url() ."player.min.js\"></script>\n";
|
|
?>
|
|
<style type="text/css">
|
|
#blubrry_stats_summary {
|
|
|
|
}
|
|
#blubrry_stats_summary label {
|
|
width: 40%;
|
|
max-width: 150px;
|
|
float: left;
|
|
}
|
|
#blubrry_stats_summary h2 {
|
|
font-size: 14px;
|
|
margin: 0;
|
|
padding: 0;
|
|
}
|
|
.blubrry_stats_ul {
|
|
padding-left: 20px;
|
|
margin-top: 5px;
|
|
margin-bottom: 10px;
|
|
}
|
|
.blubrry_stats_ul li {
|
|
list-style-type: none;
|
|
margin: 0px;
|
|
padding: 0px;
|
|
}
|
|
#blubrry_stats_media {
|
|
display: none;
|
|
}
|
|
#blubrry_stats_media_show {
|
|
text-align: right;
|
|
font-size: 85%;
|
|
}
|
|
#blubrry_stats_media h4 {
|
|
margin-bottom: 10px;
|
|
}
|
|
.blubrry_stats_title {
|
|
margin-left: 10px;
|
|
}
|
|
.blubrry_stats_updated {
|
|
font-size: 80%;
|
|
}
|
|
.powerpress-news-dashboard {
|
|
/* background-image:url(http://images.blubrry.com/powerpress/blubrry_logo.png);
|
|
background-repeat: no-repeat;
|
|
background-position: top right; */
|
|
}
|
|
.powerpress-news-dashboard .powerpressNewsPlayer {
|
|
margin-top: 5px;
|
|
}
|
|
</style>
|
|
<script type="text/javascript"><!--
|
|
jQuery(document).ready(function($) {
|
|
jQuery('.powerpress-dashboard-notice').click( function(e) {
|
|
e.preventDefault();
|
|
var dash_id = jQuery(this).parents('.postbox').attr('id');
|
|
jQuery( '#' + dash_id + '-hide' ).prop('checked', false).triggerHandler('click');
|
|
|
|
jQuery.ajax( {
|
|
type: 'POST',
|
|
url: '<?php echo admin_url(); ?>admin-ajax.php',
|
|
data: { action: 'powerpress_dashboard_dismiss', dismiss_dash_id : dash_id },
|
|
success: function(response) {
|
|
}
|
|
});
|
|
});
|
|
});
|
|
// --></script>
|
|
<?php
|
|
}
|
|
|
|
function powerpress_dashboard_stats_content()
|
|
{
|
|
$Settings = get_option('powerpress_general');
|
|
|
|
if( !empty($Settings['disable_dashboard_stats']) )
|
|
return; // Lets not do anythign to the dashboard for PowerPress Statistics
|
|
|
|
// If using user capabilities...
|
|
if( !empty($Settings['use_caps']) && !current_user_can('view_podcast_stats') )
|
|
return;
|
|
|
|
$content = '';
|
|
$UserPass = ( !empty($Settings['blubrry_auth']) ? $Settings['blubrry_auth']:'');
|
|
$Keyword = ( !empty($Settings['blubrry_program_keyword']) ? $Settings['blubrry_program_keyword']:'');
|
|
$StatsCached = get_option('powerpress_stats');
|
|
if( empty($StatsCached) )
|
|
$StatsCached = array();
|
|
if( !empty($StatsCached['content']) )
|
|
$content = $StatsCached['content'];
|
|
if( empty($StatsCached['updated']) )
|
|
$StatsCached['updated'] = 1; // Some time
|
|
|
|
// If no content or it's been over 3 hours...
|
|
if( !empty($Settings['network_mode']) ) {
|
|
$content = 'Network mode is enabled, please visit the <a href="https://stats.blubrry.com/" target="_blank">Blubrry.com</a> 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('<p>'. __('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') .'</p>',
|
|
'<a href="http://create.blubrry.com/resources/podcast-media-download-statistics/basic-statistics/" target="_blank">'. __('Free Podcast Statistics') . '</a>',
|
|
'<a href="http://create.blubrry.com/resources/" target="_blank">'. __('Services', 'powerpress') . '</a>' );
|
|
$content .= ' ';
|
|
$content .= sprintf('<p>'. __('Our %s integrated PowerPress makes podcast publishing simple. Check out the %s on our exciting three-step publishing system!', 'powerpress') .'</p>',
|
|
'<a href="http://create.blubrry.com/resources/podcast-media-hosting/" target="_blank">'. __('Podcast Hosting', 'powerpress') .'</a>',
|
|
'<a href="http://create.blubrry.com/resources/powerpress/using-powerpress/blubrry-hosting-with-powerpress/" target="_blank">'. __('Video', 'powerpress') .'</a>' );
|
|
}
|
|
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'), '<a href="'. admin_url("admin.php?page=powerpressadmin_basic") .'#tab2">'.__('Services & Statistics'.'</a>', 'powerpress') );
|
|
}
|
|
|
|
?>
|
|
<div>
|
|
<?php
|
|
echo $content;
|
|
|
|
if( $UserPass && empty($Settings['network_mode']) )
|
|
{
|
|
?>
|
|
<div id="blubrry_stats_media_show">
|
|
<a href="<?php echo admin_url('admin.php'); ?>?action=powerpress-jquery-stats&KeepThis=true&TB_iframe=true&modal=false" title="<?php echo __('Blubrry Media statistics', 'powerpress'); ?>" class="thickbox"><?php echo __('more', 'powerpress'); ?></a>
|
|
</div>
|
|
<?php } ?>
|
|
</div>
|
|
<?php
|
|
}
|
|
|
|
|
|
function powerpress_dashboard_news_content()
|
|
{
|
|
$Settings = get_option('powerpress_general');
|
|
|
|
powerpressadmin_community_news();
|
|
}
|
|
|
|
function powerpress_dashboard_notice_message($notice_id, $message)
|
|
{
|
|
echo $message;
|
|
// Add link to remove this notice.
|
|
echo '<p><a href="#" id="powerpress_dashboard_notice_'. $notice_id .'_dismiss" class="powerpress-dashboard-notice">'. __('Dismiss', 'powerpress') .'</a></p>';
|
|
}
|
|
|
|
|
|
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;
|
|
}
|
|
|
|
?>
|