Exemple #1
0
 /**
  * Handles live updates for both dashboard widget and Stream Post List
  *
  * @action heartbeat_recieved
  * @param  array  Response to be sent to heartbeat tick
  * @param  array  Data from heartbeat send
  * @return array  Data sent to heartbeat tick
  */
 public static function heartbeat_received($response, $data)
 {
     $option = get_option('dashboard_stream_activity_options');
     $enable_stream_update = 'off' !== get_user_meta(get_current_user_id(), 'stream_live_update_records', true);
     $enable_dashboard_update = 'off' !== $option['live_update'];
     // Register list table
     require_once WP_STREAM_INC_DIR . 'list-table.php';
     self::$list_table = new WP_Stream_List_Table(array('screen' => 'toplevel_page_' . WP_Stream_Admin::RECORDS_PAGE_SLUG));
     self::$list_table->prepare_items();
     $total_items = isset(self::$list_table->_pagination_args['total_items']) ? self::$list_table->_pagination_args['total_items'] : null;
     $total_pages = isset(self::$list_table->_pagination_args['total_pages']) ? self::$list_table->_pagination_args['total_pages'] : null;
     $per_page = isset(self::$list_table->_pagination_args['per_page']) ? self::$list_table->_pagination_args['per_page'] : null;
     if (isset($data['wp-stream-heartbeat']) && isset($total_items)) {
         $response['total_items'] = $total_items;
         $response['total_items_i18n'] = sprintf(_n('1 item', '%s items', $total_items), number_format_i18n($total_items));
     }
     if (isset($data['wp-stream-heartbeat']) && 'live-update' === $data['wp-stream-heartbeat'] && $enable_stream_update) {
         if (!empty($data['wp-stream-heartbeat'])) {
             if (isset($total_pages)) {
                 $response['total_pages'] = $total_pages;
                 $response['total_pages_i18n'] = number_format_i18n($total_pages);
                 $query_args = json_decode($data['wp-stream-heartbeat-query'], true);
                 $query_args['paged'] = $total_pages;
                 $response['last_page_link'] = add_query_arg($query_args, admin_url('admin.php'));
             } else {
                 $response['total_pages'] = 0;
             }
         }
         $response['wp-stream-heartbeat'] = self::live_update($response, $data);
     } elseif (isset($data['wp-stream-heartbeat']) && 'dashboard-update' === $data['wp-stream-heartbeat'] && $enable_dashboard_update) {
         $per_page = isset($option['records_per_page']) ? absint($option['records_per_page']) : 5;
         if (isset($total_items)) {
             $total_pages = ceil($total_items / $per_page);
             $response['total_pages'] = $total_pages;
             $response['total_pages_i18n'] = number_format_i18n($total_pages);
             $query_args['page'] = WP_Stream_Admin::RECORDS_PAGE_SLUG;
             $query_args['paged'] = $total_pages;
             $response['last_page_link'] = add_query_arg($query_args, admin_url('admin.php'));
         }
         $response['per_page'] = $per_page;
         $response['wp-stream-heartbeat'] = WP_Stream_Dashboard_Widget::live_update($response, $data);
     } else {
         $response['log'] = 'fail';
     }
     return $response;
 }
 /**
  * Handles Live Updates for Stream Activity Dashboard Widget.
  *
  * @uses gather_updated_items
  *
  * @param  array  Response to heartbeat
  * @param  array  Response from heartbeat
  *
  * @return array  Data sent to heartbeat
  */
 public static function live_update($response, $data)
 {
     if (!isset($data['wp-stream-heartbeat-last-time'])) {
         return;
     }
     $send = array();
     $last_time = $data['wp-stream-heartbeat-last-time'];
     $updated_items = WP_Stream_Live_Update::gather_updated_items($last_time);
     if (!empty($updated_items)) {
         ob_start();
         foreach ($updated_items as $item) {
             echo self::widget_row($item);
             //xss okay
         }
         $send = ob_get_clean();
     }
     return $send;
 }