function do_shortcode($attrs) { $attrs = shortcode_atts(array('url' => '', 'width' => '620', 'height' => '378', 'stream' => TRUE, 'chat_width' => '620', 'chat_height' => '400', 'chat' => FALSE, 'autoplay' => TRUE), $attrs); if (empty($attrs['url'])) { return ''; } $api_core = new LSB_API_Core(); $stream_summaries = $api_core->validate_urls(array($attrs['url'])); $stream_summary = !empty($stream_summaries) ? $stream_summaries[0] : NULL; /** @var $stream_summary LSB_Stream_Summary */ if (empty($stream_summary)) { return ''; } $view = NULL; switch ($stream_summary->api_id) { case 'twitch': $view = new LSB_Embedded_Twitch_View(); break; } if (empty($view)) { return ''; } $attrs['stream_summary'] = $stream_summary; return $view->get_html($attrs); }
/** * Synchronizes with Live Stream APIs */ function sync($backup) { $all_widget_settings = $this->get_all_widget_configuration(); $all_urls = $this->parse_configuration($all_widget_settings); if (empty($all_urls)) { return; } $api_core = new LSB_API_Core(); $stream_summaries = $api_core->validate_urls($all_urls); $streams = $api_core->get_streams($stream_summaries); $new_data = $this->merge_update($stream_summaries, $streams, $backup); return $new_data; }
function widget($args, $instance) { /** * @var $title string * @var $menu_id int * @var $display_type string * @var $hide_offline boolean * @var $hide_offline_images boolean * @var $sorting_strategy string */ extract(self::$defaults); extract(wp_parse_args($instance, self::$defaults), EXTR_IF_EXISTS); // Get menu items for configured menu $menu_items = !empty($menu_id) ? wp_get_nav_menu_items($menu_id) : false; // No menu selected if (!$menu_items) { return; } echo $args['before_widget']; $title = apply_filters('widget_title', $title); if (!empty($title)) { echo $args['before_title'] . $title . $args['after_title']; } $core = new LSB_API_Core(); // Get only those with links $links = array(); foreach ($menu_items as $m) { if (empty($m->url) || empty($m->title)) { continue; } $stream_summaries = $core->validate_urls(array($m->url)); /** @var $stream_summary LSB_Stream_Summary */ $stream_summary = isset($stream_summaries[0]) ? $stream_summaries[0] : NULL; if (empty($stream_summary)) { continue; } $links[$stream_summary->get_id()] = $m; } $store = new LSB_Stream_Storage(new LSB_API_Sync()); $streams = $store->get_streams(); $stream_sorter = new LSB_Stream_Sorter($links); if ($sorting_strategy == 'by_status') { usort($streams, array($stream_sorter, 'sort_by_status')); } else { if ($sorting_strategy == 'by_watching_now') { usort($streams, array($stream_sorter, 'sort_by_watching_now')); } else { usort($streams, array($stream_sorter, 'sort_by_menu_order')); } } // Display format templates $templates = new Templates(); $lsb_status_widget_format = $templates->status_widget(); $lsb_status_widget_item_format = $templates->status_widget_item(); $lsb_status_widget_item_with_image_format = $templates->status_widget_item_with_image(); $lsb_status_widget_no_content_format = $templates->status_widget_no_content(); $container = ''; $items = ''; foreach ($streams as $stream) { /** @var $stream LSB_Stream */ $stream_id = $stream->summary->get_id(); $menu_item = isset($links[$stream_id]) ? $links[$stream_id] : NULL; if (empty($menu_item)) { continue; } $is_on = $stream->watching_now != -1; if (!$is_on && $hide_offline) { continue; } $var_image_src = ''; if ($is_on || !$hide_offline_images) { if ($display_type == 'screen_cap' && !empty($stream->screen_cap_url)) { $var_image_src = $stream->screen_cap_url; } else { if ($display_type == 'image' && !empty($stream->image_url)) { $var_image_src = $stream->image_url; } } } $show_image = !empty($var_image_src); $var_status_class = $is_on ? 'lsb-on' : 'lsb-off'; $var_url = $menu_item->url; $var_title = apply_filters('lsb_stream_status_widget_text', $menu_item->title); $var_status_indicator = $is_on ? $stream->watching_now : 'Offline'; $item = ''; if ($show_image == true) { $item = $templates->printt($lsb_status_widget_item_with_image_format, array('%%status_class%%' => $var_status_class, '%%url%%' => $var_url, '%%title%%' => $var_title, '%%status_indicator%%' => $var_status_indicator, '%%image_src%%' => $var_image_src)); } else { $item = $templates->printt($lsb_status_widget_item_format, array('%%status_class%%' => $var_status_class, '%%url%%' => $var_url, '%%title%%' => $var_title, '%%status_indicator%%' => $var_status_indicator)); } $items .= $item; } if (!empty($items)) { $container = $templates->printt($lsb_status_widget_format, array('%%items%%' => $items)); } else { $container = $templates->printt($lsb_status_widget_no_content_format, array('%%message%%' => __('No streams available'))); } echo $container; echo $args['after_widget']; }