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);
 }
Exemplo n.º 2
0
 /**
  * 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'];
 }