';
}
if(is_admin()) :
function WP_Live_Activity_head(){ wp_enqueue_script('jquery'); ?>
$activity_name,'url' => $feed_url, 'icon' => $icon, 'template' => $template, 'cacheTime' => $feed_cacheTime);
update_option('wplas_feeds',$wplas_feeds);
//wp_redirect( admin_url('admin.php?page=wp_live_activity'));
}
if(isset($_POST['sbt_update'])){
$activity_name = isset($_POST['activity_name']) ? esc_attr($_POST['activity_name']) : '';
$edit_name = isset($_POST['edit_name']) ? esc_attr($_POST['edit_name']) : '';
$feed_cacheTime = isset($_POST['feed_cacheTime']) ? esc_attr($_POST['feed_cacheTime']) : '';
$feed_url = isset($_POST['feed_url']) ? esc_url($_POST['feed_url']) : '';
$icon = isset($_POST['activity_icon']) ? esc_attr($_POST['activity_icon']) : 'default.png';
$template = isset($_POST['activity_template']) ? esc_attr($_POST['activity_template']) : '{!TEXT_LINK}';
$wplas_feeds = get_option('wplas_feeds');
$exists = false;
$keY = 0;
if(!is_array($wplas_feeds))
$wplas_feeds = array();
$wplas_feeds[$edit_name] = array('name' => $activity_name,'url' => $feed_url, 'icon' => $icon, 'template' => $template, 'cacheTime' => $feed_cacheTime);
update_option('wplas_feeds',$wplas_feeds);
wp_redirect( admin_url('admin.php?page=wp_live_activity'));
}
if(isset($_REQUEST['do']) && $_REQUEST['do'] == 'delete' && isset($_REQUEST['name'])){
$name = $_REQUEST['name'];
$wplas_feeds = get_option('wplas_feeds');
if(!is_array($wplas_feeds))
$wplas_feeds = array();
foreach($wplas_feeds as $key=>$feed){
if($feed['name'] == $name)
unset($wplas_feeds[$key]);
}
update_option('wplas_feeds',$wplas_feeds);
wp_redirect( admin_url('admin.php?page=wp_live_activity'));
}
}
function WP_Live_Activity_menu(){
add_options_page(__('WP Activity Streaming'),__('Activity Streaming'),8,'wp_live_activity','wp_live_activity');
}
function wp_live_activity(){
if(isset($_REQUEST['do']) && $_REQUEST['do'] == 'edit' && isset($_REQUEST['name'])){
$name = $_REQUEST['name'];
$wplas_feeds = get_option('wplas_feeds');
$feed_array = array('activity_name' => '','feed_url' => '','activity_icon' => '','activity_template' => '','update' => TRUE);
if(!is_array($wplas_feeds))
$wplas_feeds = array();
foreach($wplas_feeds as $key=>$feed){
if($feed['name'] == $name){
$feed_array['activity_name'] = $feed['name'];
$feed_array['feed_url'] = $feed['url'];
$feed_array['activity_icon'] = $feed['icon'];
$feed_array['cacheTime'] = $feed['cacheTime'];
$feed_array['activity_template'] = $feed['template'];
$edit_name = $key;
break;
}
}
extract($feed_array);
}
if(!$activity_template) $activity_template = '{!LINK}';
?>
WP Live Activity Streaming
Please define your live activity streaming source urls and their icons. Then you can select these sources when inserting widgets to your sidebar
Feed Name
Feed URL
Cache Time
...
Delete
__( "Display Live activity in your sidebar. Please configure Feeds from Activity Streaming page under settings." ) );
$this->WP_Widget('wplas', __('Live Activity Streaming'), $widget_ops);
}
function widget( $args, $instance ) {
extract($args, EXTR_SKIP);
$activities = isset($instance['activities']) ? $instance['activities'] : array();
$num_posts = isset($instance['num_posts']) ? $instance['num_posts'] : 5;
$box_title = isset($instance['box_title']) ? $instance['box_title'] : 5;
$before_widget = preg_replace('/id="[^"]*"/','id="%id"', $before_widget);
$wplas_feeds = get_option('wplas_feeds');
$active_feeds = array();
foreach($wplas_feeds as $feed)
if(in_array($feed['name'],$activities))
$active_feeds[] = $feed;
$feeds = array();
$out = 0;
$currentFeeds = array();
if(function_exists('fetch_feed')){
foreach($active_feeds as $feedr){
$out = 0;
$template = $feedr['template'];
if(!$template) $template = '{!LINK}';
$cacheTime = 0 + $feedr['cacheTime'] * 60;
// add_filter adds a cache level per feed.
add_filter( 'wp_feed_cache_transient_lifetime', create_function( '$a', "return $cacheTime;" ));
$feed = fetch_feed($feedr['url']);
remove_filter( 'wp_feed_cache_transient_lifetime', create_function( '$a', "return $cacheTime;" ));
if ( is_wp_error( $feed ) ) {
echo $feed->get_error_message(); // a method of WP_Error
} else {
$parsed = parse_url($feedr['url']);
$hostname = $parsed['host'];
//itunes time/date feed is wrong. This trys to fix it.
$malformedTimeDateFeeds = array('ax.itunes.apple.com');
if(!$feed->get_item_quantity()) return '';
foreach ($feed->get_items(0,$num_posts) as $item) {
if(in_array($hostname,$malformedTimeDateFeeds )) {
$dateTimeID = strtotime('+ '.rand(0,55).' second', strtotime($item->get_date('Y-m-d H:i:s')));
} else {
$dateTimeID = strtotime($item->get_date('Y-m-d H:i:s'));
}
$text = str_replace(array('{!LINK}','{!ITEM_URL}','{!ITEM_TITLE}','{!TITLE}'),array(''. $item->get_title() . ' ',$item->get_link(),$item->get_title(),$item->get_title()),$template);
$currentFeeds[$dateTimeID] = '' . $text. '
';
} // end for each feed item.
unset($feed);
} // end is_wp_error.
} // end for each.
// sort feeds by date, and then reverse to get newest at top.
ksort($currentFeeds);
$currentFeeds = array_reverse($currentFeeds);
// render the widget.
echo $before_widget;
echo '';
echo $after_widget;
}// end if function exists.
} // end function.
function getFFTemplate($link = ''){
$wplas_feeds = get_option('wplas_feeds');
if(is_array($wplas_feeds))
foreach($wplas_feeds as $feed)
if($feed['url'] == $url)
return $feed['template'];
return '';
}
function update( $new_instance, $old_instance ) {
$new_instance = (array) $new_instance;
$instance = array( 'num_posts' => 5, 'box_title' => 'My Life Stream','activities' => array());
foreach ( $instance as $field => $val ) {
if ( isset($new_instance[$field]) )
$instance[$field] = $new_instance[$field];
}
return $instance;
}
function form( $instance ) {
$wplas_feeds = get_option('wplas_feeds');
// set the defaults.
$instance = wp_parse_args( (array) $instance, array( 'num_posts' => 5, 'box_title' => 'My Life Stream', 'activities' => array()) );
?>
Number of Posts for each feed
Number of Posts for each feed
Display Following Activities:
name="get_field_name('activities'); ?>[]" />
';
}
}
function wplas_widgets_init(){
register_widget('WP_Widget_WPLAS');
}
add_action('init', 'wplas_widgets_init',1);
?>