[ Index ]

PHP Cross Reference of BuddyPress

title

Body

[close]

/src/bp-blogs/classes/ -> class-bp-blogs-recent-posts-widget.php (source)

   1  <?php
   2  /**
   3   * BuddyPress Blogs Recent Posts Widget.
   4   *
   5   * @package BuddyPress
   6   * @subpackage BlogsWidgets
   7   * @since 1.0.0
   8   */
   9  
  10  // Exit if accessed directly.
  11  defined( 'ABSPATH' ) || exit;
  12  
  13  /**
  14   * The Recent Networkwide Posts widget.
  15   *
  16   * @since 1.0.0
  17   */
  18  class BP_Blogs_Recent_Posts_Widget extends WP_Widget {
  19  
  20      /**
  21       * Constructor method.
  22       *
  23       * @since 1.5.0
  24       * @since 9.0.0 Adds the `show_instance_in_rest` property to Widget options.
  25       */
  26  	public function __construct() {
  27          $widget_ops = array(
  28              'description'                 => __( 'A list of recently published posts from across your network.', 'buddypress' ),
  29              'classname'                   => 'widget_bp_blogs_widget buddypress widget',
  30              'customize_selective_refresh' => true,
  31              'show_instance_in_rest'       => true,
  32          );
  33          parent::__construct( false, $name = _x( '(BuddyPress) Recent Networkwide Posts', 'widget name', 'buddypress' ), $widget_ops );
  34      }
  35  
  36      /**
  37       * Display the networkwide posts widget.
  38       *
  39       * @see WP_Widget::widget() for description of parameters.
  40       *
  41       * @param array $args     Widget arguments.
  42       * @param array $instance Widget settings, as saved by the user.
  43       */
  44  	public function widget( $args, $instance ) {
  45          global $activities_template;
  46  
  47          $title = ! empty( $instance['title'] )
  48              ? esc_html( $instance['title'] )
  49              : __( 'Recent Networkwide Posts', 'buddypress' );
  50  
  51          if ( ! empty( $instance['link_title'] ) ) {
  52              $title = '<a href="' . bp_get_blogs_directory_permalink() . '">' . esc_html( $title ) . '</a>';
  53          }
  54  
  55          /**
  56           * Filters the Blogs Recent Posts widget title.
  57           *
  58           * @since 2.2.0
  59           * @since 2.3.0 Added 'instance' and 'id_base' to arguments passed to filter.
  60           *
  61           * @param string $title    The widget title.
  62           * @param array  $instance The settings for the particular instance of the widget.
  63           * @param string $id_base  Root ID for all widgets of this type.
  64           */
  65          $title = apply_filters( 'widget_title', $title, $instance, $this->id_base );
  66  
  67          echo $args['before_widget'];
  68          echo $args['before_title'] . $title . $args['after_title'];
  69  
  70          $max_limit = bp_get_widget_max_count_limit( __CLASS__ );
  71          if ( empty( $instance['max_posts'] ) || $instance['max_posts'] > $max_limit ) {
  72              $instance['max_posts'] = 10;
  73          }
  74  
  75          $after_widget = $args['after_widget'];
  76  
  77          // Override some of the contextually set parameters for bp_has_activities().
  78          $args = array(
  79              'action'     => 'new_blog_post',
  80              'max'        => $instance['max_posts'],
  81              'per_page'   => $instance['max_posts'],
  82              'user_id'    => 0,
  83              'scope'      => false,
  84              'object'     => false,
  85              'primary_id' => false
  86          );
  87  
  88          // Back up global.
  89          $old_activities_template = $activities_template;
  90  
  91          ?>
  92  
  93          <?php if ( bp_has_activities( $args ) ) : ?>
  94  
  95              <ul id="blog-post-list" class="activity-list item-list">
  96  
  97                  <?php while ( bp_activities() ) : bp_the_activity(); ?>
  98  
  99                      <li>
 100                          <div class="activity-content" style="margin: 0">
 101                              <div class="activity-header"><?php bp_activity_action(); ?></div>
 102  
 103                              <?php if ( bp_get_activity_content_body() ) : ?>
 104  
 105                                  <div class="activity-inner"><?php bp_activity_content_body(); ?></div>
 106  
 107                              <?php endif; ?>
 108  
 109                          </div>
 110                      </li>
 111  
 112                  <?php endwhile; ?>
 113  
 114              </ul>
 115  
 116          <?php else : ?>
 117  
 118              <div id="message" class="info">
 119                  <p><?php _e( 'Sorry, there were no posts found. Why not write one?', 'buddypress' ); ?></p>
 120              </div>
 121  
 122          <?php endif; ?>
 123  
 124          <?php echo $after_widget;
 125  
 126          // Restore the global.
 127          $activities_template = $old_activities_template;
 128      }
 129  
 130      /**
 131       * Update the networkwide posts widget options.
 132       *
 133       * @param array $new_instance The new instance options.
 134       * @param array $old_instance The old instance options.
 135       * @return array $instance The parsed options to be saved.
 136       */
 137  	public function update( $new_instance, $old_instance ) {
 138          $instance = $old_instance;
 139  
 140          $max_limit = bp_get_widget_max_count_limit( __CLASS__ );
 141  
 142          $instance['title']      = strip_tags( $new_instance['title'] );
 143          $instance['max_posts']  = $new_instance['max_posts'] > $max_limit ? $max_limit : intval( $new_instance['max_posts'] );
 144          $instance['link_title'] = ! empty( $new_instance['link_title'] );
 145  
 146          return $instance;
 147      }
 148  
 149      /**
 150       * Output the networkwide posts widget options form.
 151       *
 152       * @param array $instance Settings for this widget.
 153       */
 154  	public function form( $instance ) {
 155          $instance = bp_parse_args(
 156              (array) $instance,
 157              array(
 158                  'title'      => __( 'Recent Networkwide Posts', 'buddypress' ),
 159                  'max_posts'  => 10,
 160                  'link_title' => false,
 161              )
 162          );
 163  
 164          $max_limit = bp_get_widget_max_count_limit( __CLASS__ );
 165  
 166          $title      = strip_tags( $instance['title'] );
 167          $max_posts  = $instance['max_posts'] > $max_limit ? $max_limit : intval( $instance['max_posts'] );
 168          $link_title = (bool) $instance['link_title'];
 169  
 170          ?>
 171  
 172          <p><label for="<?php echo $this->get_field_id( 'title' ); ?>"><?php _ex( 'Title:', 'Label for the Title field of the Recent Networkwide Posts widget', 'buddypress' ); ?> <input class="widefat" id="<?php echo $this->get_field_id( 'title' ); ?>" name="<?php echo $this->get_field_name( 'title' ); ?>" type="text" value="<?php echo esc_attr( $title ); ?>" style="width: 100%;" /></label></p>
 173          <p><label for="<?php echo $this->get_field_id( 'link_title' ); ?>"><input type="checkbox" name="<?php echo $this->get_field_name( 'link_title' ); ?>" value="1" <?php checked( $link_title ); ?> /> <?php _e( 'Link widget title to Blogs directory', 'buddypress' ); ?></label></p>
 174          <p><label for="<?php echo $this->get_field_id( 'max_posts' ); ?>"><?php _e( 'Max posts to show:', 'buddypress' ); ?> <input class="widefat" id="<?php echo $this->get_field_id( 'max_posts' ); ?>" name="<?php echo $this->get_field_name( 'max_posts' ); ?>" type="number" min="1" max="<?php echo esc_attr( $max_limit ); ?>" value="<?php echo esc_attr( $max_posts ); ?>" style="width: 30%" /></label></p>
 175          <?php
 176      }
 177  }


Generated: Thu Nov 21 01:00:57 2024 Cross-referenced by PHPXref 0.7.1