| 1 | <?php
|
|---|
| 2 | /**
|
|---|
| 3 | * BuddyPress Blogs Template Tags.
|
|---|
| 4 | *
|
|---|
| 5 | * @package BuddyPress
|
|---|
| 6 | * @subpackage BlogsTemplate
|
|---|
| 7 | */
|
|---|
| 8 | // Exit if accessed directly
|
|---|
| 9 | if (!defined('ABSPATH'))
|
|---|
| 10 | exit;
|
|---|
| 11 |
|
|---|
| 12 | /**
|
|---|
| 13 | * Output the blogs component slug.
|
|---|
| 14 | *
|
|---|
| 15 | * @since BuddyPress (1.5.0)
|
|---|
| 16 | *
|
|---|
| 17 | * @uses bp_get_blogs_slug()
|
|---|
| 18 | */
|
|---|
| 19 | function bp_blogs_slug() {
|
|---|
| 20 | echo bp_get_blogs_slug();
|
|---|
| 21 | }
|
|---|
| 22 |
|
|---|
| 23 | /**
|
|---|
| 24 | * Return the blogs component slug.
|
|---|
| 25 | *
|
|---|
| 26 | * @since BuddyPress (1.5.0)
|
|---|
| 27 | *
|
|---|
| 28 | * @return string The 'blogs' slug.
|
|---|
| 29 | */
|
|---|
| 30 | function bp_get_blogs_slug() {
|
|---|
| 31 | return apply_filters('bp_get_blogs_slug', buddypress()->blogs->slug);
|
|---|
| 32 | }
|
|---|
| 33 |
|
|---|
| 34 | /**
|
|---|
| 35 | * Output the blogs component root slug.
|
|---|
| 36 | *
|
|---|
| 37 | * @since BuddyPress (1.5.0)
|
|---|
| 38 | *
|
|---|
| 39 | * @uses bp_get_blogs_root_slug()
|
|---|
| 40 | */
|
|---|
| 41 | function bp_blogs_root_slug() {
|
|---|
| 42 | echo bp_get_blogs_root_slug();
|
|---|
| 43 | }
|
|---|
| 44 |
|
|---|
| 45 | /**
|
|---|
| 46 | * Return the blogs component root slug.
|
|---|
| 47 | *
|
|---|
| 48 | * @since BuddyPress (1.5.0)
|
|---|
| 49 | *
|
|---|
| 50 | * @return string The 'blogs' root slug.
|
|---|
| 51 | */
|
|---|
| 52 | function bp_get_blogs_root_slug() {
|
|---|
| 53 | return apply_filters('bp_get_blogs_root_slug', buddypress()->blogs->root_slug);
|
|---|
| 54 | }
|
|---|
| 55 |
|
|---|
| 56 | /**
|
|---|
| 57 | * Output blog directory permalink.
|
|---|
| 58 | *
|
|---|
| 59 | * @since BuddyPress (1.5.0)
|
|---|
| 60 | *
|
|---|
| 61 | * @uses bp_get_blogs_directory_permalink()
|
|---|
| 62 | */
|
|---|
| 63 | function bp_blogs_directory_permalink() {
|
|---|
| 64 | echo bp_get_blogs_directory_permalink();
|
|---|
| 65 | }
|
|---|
| 66 |
|
|---|
| 67 | /**
|
|---|
| 68 | * Return blog directory permalink.
|
|---|
| 69 | *
|
|---|
| 70 | * @since BuddyPress (1.5.0)
|
|---|
| 71 | *
|
|---|
| 72 | * @uses apply_filters()
|
|---|
| 73 | * @uses trailingslashit()
|
|---|
| 74 | * @uses bp_get_root_domain()
|
|---|
| 75 | * @uses bp_get_blogs_root_slug()
|
|---|
| 76 | * @return string The URL of the Blogs directory.
|
|---|
| 77 | */
|
|---|
| 78 | function bp_get_blogs_directory_permalink() {
|
|---|
| 79 | return apply_filters('bp_get_blogs_directory_permalink', trailingslashit(bp_get_root_domain() . '/' . bp_get_blogs_root_slug()));
|
|---|
| 80 | }
|
|---|
| 81 |
|
|---|
| 82 | /**
|
|---|
| 83 | * The main blog template loop class.
|
|---|
| 84 | *
|
|---|
| 85 | * Responsible for loading a group of blogs into a loop for display.
|
|---|
| 86 | */
|
|---|
| 87 | class BP_Blogs_Template {
|
|---|
| 88 |
|
|---|
| 89 | /**
|
|---|
| 90 | * The loop iterator.
|
|---|
| 91 | *
|
|---|
| 92 | * @access public
|
|---|
| 93 | * @var int
|
|---|
| 94 | */
|
|---|
| 95 | var $current_blog = -1;
|
|---|
| 96 |
|
|---|
| 97 | /**
|
|---|
| 98 | * The number of blogs returned by the paged query.
|
|---|
| 99 | *
|
|---|
| 100 | * @access public
|
|---|
| 101 | * @var int
|
|---|
| 102 | */
|
|---|
| 103 | var $blog_count;
|
|---|
| 104 |
|
|---|
| 105 | /**
|
|---|
| 106 | * Array of blogs located by the query..
|
|---|
| 107 | *
|
|---|
| 108 | * @access public
|
|---|
| 109 | * @var array
|
|---|
| 110 | */
|
|---|
| 111 | var $blogs;
|
|---|
| 112 |
|
|---|
| 113 | /**
|
|---|
| 114 | * The blog object currently being iterated on.
|
|---|
| 115 | *
|
|---|
| 116 | * @access public
|
|---|
| 117 | * @var object
|
|---|
| 118 | */
|
|---|
| 119 | var $blog;
|
|---|
| 120 |
|
|---|
| 121 | /**
|
|---|
| 122 | * A flag for whether the loop is currently being iterated.
|
|---|
| 123 | *
|
|---|
| 124 | * @access public
|
|---|
| 125 | * @var bool
|
|---|
| 126 | */
|
|---|
| 127 | var $in_the_loop;
|
|---|
| 128 |
|
|---|
| 129 | /**
|
|---|
| 130 | * The page number being requested.
|
|---|
| 131 | *
|
|---|
| 132 | * @access public
|
|---|
| 133 | * @var public
|
|---|
| 134 | */
|
|---|
| 135 | var $pag_page;
|
|---|
| 136 |
|
|---|
| 137 | /**
|
|---|
| 138 | * The number of items being requested per page.
|
|---|
| 139 | *
|
|---|
| 140 | * @access public
|
|---|
| 141 | * @var public
|
|---|
| 142 | */
|
|---|
| 143 | var $pag_num;
|
|---|
| 144 |
|
|---|
| 145 | /**
|
|---|
| 146 | * An HTML string containing pagination links.
|
|---|
| 147 | *
|
|---|
| 148 | * @access public
|
|---|
| 149 | * @var string
|
|---|
| 150 | */
|
|---|
| 151 | var $pag_links;
|
|---|
| 152 |
|
|---|
| 153 | /**
|
|---|
| 154 | * The total number of blogs matching the query parameters.
|
|---|
| 155 | *
|
|---|
| 156 | * @access public
|
|---|
| 157 | * @var int
|
|---|
| 158 | */
|
|---|
| 159 | var $total_blog_count;
|
|---|
| 160 |
|
|---|
| 161 | /**
|
|---|
| 162 | * Constructor method.
|
|---|
| 163 | *
|
|---|
| 164 | * @see BP_Blogs_Blog::get() for a description of parameters.
|
|---|
| 165 | * @param array $args {
|
|---|
| 166 | * An array of arguments. All items are optional.
|
|---|
| 167 | * @param string $type See {@link BP_Blogs_Blog::get()}.
|
|---|
| 168 | * @param string $page See {@link BP_Blogs_Blog::get()}.
|
|---|
| 169 | * @param string $per_page See {@link BP_Blogs_Blog::get()}.
|
|---|
| 170 | * @param string $max See {@link BP_Blogs_Blog::get()}.
|
|---|
| 171 | * @param string $user_id See {@link BP_Blogs_Blog::get()}.
|
|---|
| 172 | * @param string $search_terms See {@link BP_Blogs_Blog::get()}.
|
|---|
| 173 | * @param string $page_arg The string used as a query parameter in
|
|---|
| 174 | * pagination links. Default: 'bpage'.
|
|---|
| 175 | * @param boolean $show_hidden
|
|---|
| 176 | *
|
|---|
| 177 | * }
|
|---|
| 178 | * @version 2, by stergatu, merged all args to an array and added $show_hidden into args
|
|---|
| 179 | */
|
|---|
| 180 | function __construct($args) {
|
|---|
| 181 | // Backward compatibility with old method of passing arguments
|
|---|
| 182 | if (!is_array($args) || func_num_args() > 1) {
|
|---|
| 183 | _deprecated_argument(__METHOD__, '2.0', sprintf(__('Arguments passed to %1$s should be in an associative array. See the inline documentation at %2$s for more details.', 'buddypress'), __METHOD__, __FILE__));
|
|---|
| 184 |
|
|---|
| 185 | $old_args_keys = array(
|
|---|
| 186 | 0 => 'type',
|
|---|
| 187 | 1 => 'page',
|
|---|
| 188 | 2 => 'per_page',
|
|---|
| 189 | 3 => 'max',
|
|---|
| 190 | 4 => 'user_id',
|
|---|
| 191 | 5 => 'search_terms',
|
|---|
| 192 | 6 => 'page_arg',
|
|---|
| 193 | 7 => 'show_hidden'
|
|---|
| 194 | );
|
|---|
| 195 |
|
|---|
| 196 | $func_args = func_get_args();
|
|---|
| 197 | $args = bp_core_parse_args_array($old_args_keys, $func_args);
|
|---|
| 198 | }
|
|---|
| 199 |
|
|---|
| 200 | $defaults = array(
|
|---|
| 201 | 'type' => 'active',
|
|---|
| 202 | 'page' => 1,
|
|---|
| 203 | 'per_page' => 20,
|
|---|
| 204 | 'max' => false,
|
|---|
| 205 | 'user_id' => '0',
|
|---|
| 206 | 'search_terms' => false, // Pass search terms to filter on the blog title or description.
|
|---|
| 207 | 'page_arg' => 'bpage', // See https://buddypress.trac.wordpress.org/ticket/3679
|
|---|
| 208 | 'show_hidden' => false
|
|---|
| 209 | );
|
|---|
| 210 | $r = wp_parse_args($args, $defaults);
|
|---|
| 211 | extract($r);
|
|---|
| 212 |
|
|---|
| 213 | $this->pag_page = isset($_REQUEST[$page_arg]) ? intval($_REQUEST[$page_arg]) : $page;
|
|---|
| 214 | $this->pag_num = isset($_REQUEST['num']) ? intval($_REQUEST['num']) : $per_page;
|
|---|
| 215 |
|
|---|
| 216 | if (isset($_REQUEST['letter']) && '' != $_REQUEST['letter']) {
|
|---|
| 217 | $this->blogs = BP_Blogs_Blog::get_by_letter($_REQUEST['letter'], $this->pag_num, $this->pag_page, $show_hidden);
|
|---|
| 218 | } else {
|
|---|
| 219 | $this->blogs = bp_blogs_get_blogs(array('type' => $type, 'per_page' => $this->pag_num, 'page' => $this->pag_page, 'user_id' => $user_id, 'search_terms' => $search_terms, 'show_hidden' => $show_hidden));
|
|---|
| 220 | }
|
|---|
| 221 | if (!$max || $max >= (int) $this->blogs['total'])
|
|---|
| 222 | $this->total_blog_count = (int) $this->blogs['total'];
|
|---|
| 223 | else
|
|---|
| 224 | $this->total_blog_count = (int) $max;
|
|---|
| 225 |
|
|---|
| 226 | $this->blogs = $this->blogs['blogs'];
|
|---|
| 227 |
|
|---|
| 228 | if ($max) {
|
|---|
| 229 | if ($max >= count($this->blogs)) {
|
|---|
| 230 | $this->blog_count = count($this->blogs);
|
|---|
| 231 | } else {
|
|---|
| 232 | $this->blog_count = (int) $max;
|
|---|
| 233 | }
|
|---|
| 234 | } else {
|
|---|
| 235 | $this->blog_count = count($this->blogs);
|
|---|
| 236 | }
|
|---|
| 237 |
|
|---|
| 238 | if ((int) $this->total_blog_count && (int) $this->pag_num) {
|
|---|
| 239 | $this->pag_links = paginate_links(array(
|
|---|
| 240 | 'base' => add_query_arg($page_arg, '%#%'),
|
|---|
| 241 | 'format' => '',
|
|---|
| 242 | 'total' => ceil((int) $this->total_blog_count / (int) $this->pag_num),
|
|---|
| 243 | 'current' => (int) $this->pag_page,
|
|---|
| 244 | 'prev_text' => _x('←', 'Blog pagination previous text', 'buddypress'),
|
|---|
| 245 | 'next_text' => _x('→', 'Blog pagination next text', 'buddypress'),
|
|---|
| 246 | 'mid_size' => 1
|
|---|
| 247 | ));
|
|---|
| 248 | }
|
|---|
| 249 | }
|
|---|
| 250 |
|
|---|
| 251 | /**
|
|---|
| 252 | * Whether there are blogs available in the loop.
|
|---|
| 253 | *
|
|---|
| 254 | * @see bp_has_blogs()
|
|---|
| 255 | *
|
|---|
| 256 | * @return bool True if there are items in the loop, otherwise false.
|
|---|
| 257 | */
|
|---|
| 258 | function has_blogs() {
|
|---|
| 259 | if ($this->blog_count)
|
|---|
| 260 | return true;
|
|---|
| 261 |
|
|---|
| 262 | return false;
|
|---|
| 263 | }
|
|---|
| 264 |
|
|---|
| 265 | /**
|
|---|
| 266 | * Set up the next blog and iterate index.
|
|---|
| 267 | *
|
|---|
| 268 | * @return object The next blog to iterate over.
|
|---|
| 269 | */
|
|---|
| 270 | function next_blog() {
|
|---|
| 271 | $this->current_blog++;
|
|---|
| 272 | $this->blog = $this->blogs[$this->current_blog];
|
|---|
| 273 |
|
|---|
| 274 | return $this->blog;
|
|---|
| 275 | }
|
|---|
| 276 |
|
|---|
| 277 | /**
|
|---|
| 278 | * Rewind the blogs and reset blog index.
|
|---|
| 279 | */
|
|---|
| 280 | function rewind_blogs() {
|
|---|
| 281 | $this->current_blog = -1;
|
|---|
| 282 | if ($this->blog_count > 0) {
|
|---|
| 283 | $this->blog = $this->blogs[0];
|
|---|
| 284 | }
|
|---|
| 285 | }
|
|---|
| 286 |
|
|---|
| 287 | /**
|
|---|
| 288 | * Whether there are blogs left in the loop to iterate over.
|
|---|
| 289 | *
|
|---|
| 290 | * This method is used by {@link bp_blogs()} as part of the while loop
|
|---|
| 291 | * that controls iteration inside the blogs loop, eg:
|
|---|
| 292 | * while ( bp_blogs() ) { ...
|
|---|
| 293 | *
|
|---|
| 294 | * @see bp_blogs()
|
|---|
| 295 | *
|
|---|
| 296 | * @return bool True if there are more blogs to show, otherwise false.
|
|---|
| 297 | */
|
|---|
| 298 | function blogs() {
|
|---|
| 299 | if ($this->current_blog + 1 < $this->blog_count) {
|
|---|
| 300 | return true;
|
|---|
| 301 | } elseif ($this->current_blog + 1 == $this->blog_count) {
|
|---|
| 302 | do_action('blog_loop_end');
|
|---|
| 303 | // Do some cleaning up after the loop
|
|---|
| 304 | $this->rewind_blogs();
|
|---|
| 305 | }
|
|---|
| 306 |
|
|---|
| 307 | $this->in_the_loop = false;
|
|---|
| 308 | return false;
|
|---|
| 309 | }
|
|---|
| 310 |
|
|---|
| 311 | /**
|
|---|
| 312 | * Set up the current blog inside the loop.
|
|---|
| 313 | *
|
|---|
| 314 | * Used by {@link bp_the_blog()} to set up the current blog data while
|
|---|
| 315 | * looping, so that template tags used during that iteration make
|
|---|
| 316 | * reference to the current blog.
|
|---|
| 317 | *
|
|---|
| 318 | * @see bp_the_blog()
|
|---|
| 319 | */
|
|---|
| 320 | function the_blog() {
|
|---|
| 321 |
|
|---|
| 322 | $this->in_the_loop = true;
|
|---|
| 323 | $this->blog = $this->next_blog();
|
|---|
| 324 |
|
|---|
| 325 | if (0 == $this->current_blog) // loop has just started
|
|---|
| 326 | do_action('blog_loop_start');
|
|---|
| 327 | }
|
|---|
| 328 |
|
|---|
| 329 | }
|
|---|
| 330 |
|
|---|
| 331 | /**
|
|---|
| 332 | * Rewind the blogs and reset blog index.
|
|---|
| 333 | */
|
|---|
| 334 | function bp_rewind_blogs() {
|
|---|
| 335 | global $blogs_template;
|
|---|
| 336 |
|
|---|
| 337 | $blogs_template->rewind_blogs();
|
|---|
| 338 | }
|
|---|
| 339 |
|
|---|
| 340 | /**
|
|---|
| 341 | * Initialize the blogs loop.
|
|---|
| 342 | *
|
|---|
| 343 | * Based on the $args passed, bp_has_blogs() populates the $blogs_template
|
|---|
| 344 | * global, enabling the use of BuddyPress templates and template functions to
|
|---|
| 345 | * display a list of activity items.
|
|---|
| 346 | *
|
|---|
| 347 | * @global object $blogs_template {@link BP_Blogs_Template}
|
|---|
| 348 | *
|
|---|
| 349 | * @param array $args {
|
|---|
| 350 | * Arguments for limiting the contents of the blogs loop. Most arguments
|
|---|
| 351 | * are in the same format as {@link BP_Blogs_Blog::get()}. However, because
|
|---|
| 352 | * the format of the arguments accepted here differs in a number of ways,
|
|---|
| 353 | * and because bp_has_blogs() determines some default arguments in a
|
|---|
| 354 | * dynamic fashion, we list all accepted arguments here as well.
|
|---|
| 355 | *
|
|---|
| 356 | * Arguments can be passed as an associative array, or as a URL query
|
|---|
| 357 | * string (eg, 'user_id=4&per_page=3').
|
|---|
| 358 | *
|
|---|
| 359 | * @type int $page Which page of results to fetch. Using page=1 without
|
|---|
| 360 | * per_page will result in no pagination. Default: 1.
|
|---|
| 361 | * @type int|bool $per_page Number of results per page. Default: 20.
|
|---|
| 362 | * @type string $page_arg The string used as a query parameter in
|
|---|
| 363 | * pagination links. Default: 'bpage'.
|
|---|
| 364 | * @type int|bool $max Maximum number of results to return.
|
|---|
| 365 | * Default: false (unlimited).
|
|---|
| 366 | * @type string $type The order in which results should be fetched.
|
|---|
| 367 | 'active', 'alphabetical', 'newest', or 'random'.
|
|---|
| 368 | * @type string $sort 'ASC' or 'DESC'. Default: 'DESC'.
|
|---|
| 369 | * @type string $search_terms Limit results by a search term. Default: null.
|
|---|
| 370 | * @type int $user_id The ID of the user whose blogs should be retrieved.
|
|---|
| 371 | * When viewing a user profile page, 'user_id' defaults to the ID of
|
|---|
| 372 | * the displayed user. Otherwise the default is false.
|
|---|
| 373 | * @type bool $show_hidden. Whether to show private blogs or not
|
|---|
| 374 | * }
|
|---|
| 375 | * @return bool Returns true when blogs are found, otherwise false.
|
|---|
| 376 | * @version 2, stergatu added $show_hidden, add passes array to BP_Blogs_Template
|
|---|
| 377 | */
|
|---|
| 378 | function bp_has_blogs($args = '') {
|
|---|
| 379 | global $blogs_template;
|
|---|
| 380 |
|
|---|
| 381 | /* * *
|
|---|
| 382 | * Set the defaults based on the current page. Any of these will be overridden
|
|---|
| 383 | * if arguments are directly passed into the loop. Custom plugins should always
|
|---|
| 384 | * pass their parameters directly to the loop.
|
|---|
| 385 | */
|
|---|
| 386 | $type = 'active';
|
|---|
| 387 | $user_id = 0;
|
|---|
| 388 | $search_terms = null;
|
|---|
| 389 |
|
|---|
| 390 | // User filtering
|
|---|
| 391 | if (bp_displayed_user_id())
|
|---|
| 392 | $user_id = bp_displayed_user_id();
|
|---|
| 393 |
|
|---|
| 394 | $defaults = array(
|
|---|
| 395 | 'type' => $type,
|
|---|
| 396 | 'page' => 1,
|
|---|
| 397 | 'per_page' => 20,
|
|---|
| 398 | 'max' => false,
|
|---|
| 399 | 'page_arg' => 'bpage', // See https://buddypress.trac.wordpress.org/ticket/3679
|
|---|
| 400 | 'user_id' => $user_id, // Pass a user_id to limit to only blogs this user has higher than subscriber access to
|
|---|
| 401 | 'search_terms' => $search_terms, // Pass search terms to filter on the blog title or description.
|
|---|
| 402 | 'show_hidden' => false
|
|---|
| 403 | );
|
|---|
| 404 |
|
|---|
| 405 | $r = wp_parse_args($args, $defaults);
|
|---|
| 406 | extract($r);
|
|---|
| 407 |
|
|---|
| 408 | if (is_null($search_terms)) {
|
|---|
| 409 | if (isset($_REQUEST['s']) && !empty($_REQUEST['s']))
|
|---|
| 410 | $search_terms = $_REQUEST['s'];
|
|---|
| 411 | else
|
|---|
| 412 | $search_terms = false;
|
|---|
| 413 | }
|
|---|
| 414 |
|
|---|
| 415 | if ($max) {
|
|---|
| 416 | if ($per_page > $max) {
|
|---|
| 417 | $per_page = $max;
|
|---|
| 418 | }
|
|---|
| 419 | }
|
|---|
| 420 |
|
|---|
| 421 | $args = array('type' => $type, 'page' => $page, 'per_page' => $per_page, 'max' => $max, 'user_id' => $user_id, 'search_terms' => $search_terms, 'page_arg' => $page_arg, 'show_hidden' => $show_hidden);
|
|---|
| 422 | $blogs_template = new BP_Blogs_Template($args);
|
|---|
| 423 | return apply_filters('bp_has_blogs', $blogs_template->has_blogs(), $blogs_template);
|
|---|
| 424 | }
|
|---|
| 425 |
|
|---|
| 426 | /**
|
|---|
| 427 | * Determine if there are still blogs left in the loop.
|
|---|
| 428 | *
|
|---|
| 429 | * @global object $blogs_template {@link BP_Blogs_Template}
|
|---|
| 430 | *
|
|---|
| 431 | * @return bool Returns true when blogs are found.
|
|---|
| 432 | */
|
|---|
| 433 | function bp_blogs() {
|
|---|
| 434 | global $blogs_template;
|
|---|
| 435 |
|
|---|
| 436 | return $blogs_template->blogs();
|
|---|
| 437 | }
|
|---|
| 438 |
|
|---|
| 439 | /**
|
|---|
| 440 | * Get the current blog object in the loop.
|
|---|
| 441 | *
|
|---|
| 442 | * @global object $blogs_template {@link BP_Blogs_Template}
|
|---|
| 443 | *
|
|---|
| 444 | * @return object The current blog within the loop.
|
|---|
| 445 | */
|
|---|
| 446 | function bp_the_blog() {
|
|---|
| 447 | global $blogs_template;
|
|---|
| 448 |
|
|---|
| 449 | return $blogs_template->the_blog();
|
|---|
| 450 | }
|
|---|
| 451 |
|
|---|
| 452 | /**
|
|---|
| 453 | * Output the blogs pagination count.
|
|---|
| 454 | *
|
|---|
| 455 | * @global object $blogs_template {@link BP_Blogs_Template}
|
|---|
| 456 | */
|
|---|
| 457 | function bp_blogs_pagination_count() {
|
|---|
| 458 | global $blogs_template;
|
|---|
| 459 | $start_num = intval(( $blogs_template->pag_page - 1 ) * $blogs_template->pag_num) + 1;
|
|---|
| 460 | $from_num = bp_core_number_format($start_num);
|
|---|
| 461 | $to_num = bp_core_number_format(( $start_num + ( $blogs_template->pag_num - 1 ) > $blogs_template->total_blog_count ) ? $blogs_template->total_blog_count : $start_num + ( $blogs_template->pag_num - 1 ) );
|
|---|
| 462 | $total = bp_core_number_format($blogs_template->total_blog_count);
|
|---|
| 463 |
|
|---|
| 464 | echo sprintf(_n('Viewing site %1$s to %2$s (of %3$s site)', 'Viewing site %1$s to %2$s (of %3$s sites)', $total, 'buddypress'), $from_num, $to_num, $total);
|
|---|
| 465 | }
|
|---|
| 466 |
|
|---|
| 467 | /**
|
|---|
| 468 | * Output the blogs pagination links.
|
|---|
| 469 | */
|
|---|
| 470 | function bp_blogs_pagination_links() {
|
|---|
| 471 | echo bp_get_blogs_pagination_links();
|
|---|
| 472 | }
|
|---|
| 473 |
|
|---|
| 474 | /**
|
|---|
| 475 | * Return the blogs pagination links.
|
|---|
| 476 | *
|
|---|
| 477 | * @global object $blogs_template {@link BP_Blogs_Template}
|
|---|
| 478 | *
|
|---|
| 479 | * @return string HTML pagination links.
|
|---|
| 480 | */
|
|---|
| 481 | function bp_get_blogs_pagination_links() {
|
|---|
| 482 | global $blogs_template;
|
|---|
| 483 |
|
|---|
| 484 | return apply_filters('bp_get_blogs_pagination_links', $blogs_template->pag_links);
|
|---|
| 485 | }
|
|---|
| 486 |
|
|---|
| 487 | /**
|
|---|
| 488 | * Output a blog's avatar.
|
|---|
| 489 | *
|
|---|
| 490 | * @see bp_get_blog_avatar() for description of arguments.
|
|---|
| 491 | *
|
|---|
| 492 | * @param array $args See {@link bp_get_blog_avatar()}.
|
|---|
| 493 | */
|
|---|
| 494 | function bp_blog_avatar($args = '') {
|
|---|
| 495 | echo bp_get_blog_avatar($args);
|
|---|
| 496 | }
|
|---|
| 497 |
|
|---|
| 498 | /**
|
|---|
| 499 | * Get a blog's avatar.
|
|---|
| 500 | *
|
|---|
| 501 | * At the moment, blog avatars are simply the user avatars of the blog
|
|---|
| 502 | * admin. Filter 'bp_get_blog_avatar_' . $blog_id to customize.
|
|---|
| 503 | *
|
|---|
| 504 | * @see bp_core_fetch_avatar() For a description of arguments and
|
|---|
| 505 | * return values.
|
|---|
| 506 | *
|
|---|
| 507 | * @param array $args {
|
|---|
| 508 | * Arguments are listed here with an explanation of their defaults.
|
|---|
| 509 | * For more information about the arguments, see
|
|---|
| 510 | * {@link bp_core_fetch_avatar()}.
|
|---|
| 511 | * @type string $alt Default: 'Profile picture of site author
|
|---|
| 512 | * [user name]'.
|
|---|
| 513 | * @type string $class Default: 'avatar'.
|
|---|
| 514 | * @type string $type Default: 'full'.
|
|---|
| 515 | * @type int|bool $width Default: false.
|
|---|
| 516 | * @type int|bool $height Default: false.
|
|---|
| 517 | * @type bool $id Currently unused.
|
|---|
| 518 | * @type bool $no_grav Default: false.
|
|---|
| 519 | * }
|
|---|
| 520 | * @return string User avatar string.
|
|---|
| 521 | */
|
|---|
| 522 | function bp_get_blog_avatar($args = '') {
|
|---|
| 523 | global $blogs_template;
|
|---|
| 524 |
|
|---|
| 525 | $defaults = array(
|
|---|
| 526 | 'type' => 'full',
|
|---|
| 527 | 'width' => false,
|
|---|
| 528 | 'height' => false,
|
|---|
| 529 | 'class' => 'avatar',
|
|---|
| 530 | 'id' => false,
|
|---|
| 531 | 'alt' => sprintf(__('Profile picture of site author %s', 'buddypress'), bp_core_get_user_displayname($blogs_template->blog->admin_user_id)),
|
|---|
| 532 | 'no_grav' => true
|
|---|
| 533 | );
|
|---|
| 534 |
|
|---|
| 535 | $r = wp_parse_args($args, $defaults);
|
|---|
| 536 | extract($r, EXTR_SKIP);
|
|---|
| 537 |
|
|---|
| 538 | /* * *
|
|---|
| 539 | * In future BuddyPress versions you will be able to set the avatar for a blog.
|
|---|
| 540 | * Right now you can use a filter with the ID of the blog to change it if you wish.
|
|---|
| 541 | * By default it will return the avatar for the primary blog admin.
|
|---|
| 542 | *
|
|---|
| 543 | * This filter is deprecated as of BuddyPress 1.5 and may be removed in a future version.
|
|---|
| 544 | * Use the 'bp_get_blog_avatar' filter instead.
|
|---|
| 545 | */
|
|---|
| 546 | $avatar = apply_filters('bp_get_blog_avatar_' . $blogs_template->blog->blog_id, bp_core_fetch_avatar(array('item_id' => $blogs_template->blog->admin_user_id, 'type' => $type, 'alt' => $alt, 'width' => $width, 'height' => $height, 'class' => $class, 'email' => $blogs_template->blog->admin_user_email)));
|
|---|
| 547 |
|
|---|
| 548 | return apply_filters('bp_get_blog_avatar', $avatar, $blogs_template->blog->blog_id, array('item_id' => $blogs_template->blog->admin_user_id, 'type' => $type, 'alt' => $alt, 'width' => $width, 'height' => $height, 'class' => $class, 'email' => $blogs_template->blog->admin_user_email));
|
|---|
| 549 | }
|
|---|
| 550 |
|
|---|
| 551 | function bp_blog_permalink() {
|
|---|
| 552 | echo bp_get_blog_permalink();
|
|---|
| 553 | }
|
|---|
| 554 |
|
|---|
| 555 | function bp_get_blog_permalink() {
|
|---|
| 556 | global $blogs_template;
|
|---|
| 557 |
|
|---|
| 558 | if (empty($blogs_template->blog->domain))
|
|---|
| 559 | $permalink = bp_get_root_domain() . $blogs_template->blog->path;
|
|---|
| 560 | else {
|
|---|
| 561 | $protocol = 'http://';
|
|---|
| 562 | if (is_ssl())
|
|---|
| 563 | $protocol = 'https://';
|
|---|
| 564 |
|
|---|
| 565 | $permalink = $protocol . $blogs_template->blog->domain . $blogs_template->blog->path;
|
|---|
| 566 | }
|
|---|
| 567 |
|
|---|
| 568 | return apply_filters('bp_get_blog_permalink', $permalink);
|
|---|
| 569 | }
|
|---|
| 570 |
|
|---|
| 571 | /**
|
|---|
| 572 | * Output the name of the current blog in the loop.
|
|---|
| 573 | */
|
|---|
| 574 | function bp_blog_name() {
|
|---|
| 575 | echo bp_get_blog_name();
|
|---|
| 576 | }
|
|---|
| 577 |
|
|---|
| 578 | /**
|
|---|
| 579 | * Return the name of the current blog in the loop.
|
|---|
| 580 | *
|
|---|
| 581 | * @return string The name of the current blog in the loop.
|
|---|
| 582 | */
|
|---|
| 583 | function bp_get_blog_name() {
|
|---|
| 584 | global $blogs_template;
|
|---|
| 585 |
|
|---|
| 586 | return apply_filters('bp_get_blog_name', $blogs_template->blog->name);
|
|---|
| 587 | }
|
|---|
| 588 |
|
|---|
| 589 | /**
|
|---|
| 590 | * Output the ID of the current blog in the loop.
|
|---|
| 591 | *
|
|---|
| 592 | * @since BuddyPress (1.7.0)
|
|---|
| 593 | */
|
|---|
| 594 | function bp_blog_id() {
|
|---|
| 595 | echo bp_get_blog_id();
|
|---|
| 596 | }
|
|---|
| 597 |
|
|---|
| 598 | /**
|
|---|
| 599 | * Return the ID of the current blog in the loop.
|
|---|
| 600 | *
|
|---|
| 601 | * @since BuddyPress (1.7.0)
|
|---|
| 602 | *
|
|---|
| 603 | * @return int ID of the current blog in the loop.
|
|---|
| 604 | */
|
|---|
| 605 | function bp_get_blog_id() {
|
|---|
| 606 | global $blogs_template;
|
|---|
| 607 |
|
|---|
| 608 | return apply_filters('bp_get_blog_id', $blogs_template->blog->blog_id);
|
|---|
| 609 | }
|
|---|
| 610 |
|
|---|
| 611 | /**
|
|---|
| 612 | * Output the description of the current blog in the loop.
|
|---|
| 613 | */
|
|---|
| 614 | function bp_blog_description() {
|
|---|
| 615 | echo apply_filters('bp_blog_description', bp_get_blog_description());
|
|---|
| 616 | }
|
|---|
| 617 |
|
|---|
| 618 | /**
|
|---|
| 619 | * Return the description of the current blog in the loop.
|
|---|
| 620 | *
|
|---|
| 621 | * @ret
|
|---|
| 622 | urn string Description of the current blog in the loop.
|
|---|
| 623 | */
|
|---|
| 624 | function bp_get_blog_description() {
|
|---|
| 625 | global $blogs_template;
|
|---|
| 626 |
|
|---|
| 627 | return apply_filters('bp_get_blog_description', $blogs_template->blog->description);
|
|---|
| 628 | }
|
|---|
| 629 |
|
|---|
| 630 | /**
|
|---|
| 631 | * Output the row class of the current blog in the loop.
|
|---|
| 632 | *
|
|---|
| 633 | * @since BuddyPress (1.7.0)
|
|---|
| 634 | */
|
|---|
| 635 | function bp_blog_class() {
|
|---|
| 636 | echo bp_get_blog_class();
|
|---|
| 637 | }
|
|---|
| 638 |
|
|---|
| 639 | /**
|
|---|
| 640 | * Return the row class of the current blog in the loop.
|
|---|
| 641 | *
|
|---|
| 642 | * @since BuddyPress (1.7.0)
|
|---|
| 643 | *
|
|---|
| 644 | * @global BP_Blogs_Template $blogs_template
|
|---|
| 645 | *
|
|---|
| 646 | * @return string Row class of the site.
|
|---|
| 647 | */
|
|---|
| 648 | function bp_get_blog_class() {
|
|---|
| 649 | global $blogs_template;
|
|---|
| 650 |
|
|---|
| 651 | $classes = array();
|
|---|
| 652 | $pos_in_loop = (int) $blogs_template->current_blog;
|
|---|
| 653 |
|
|---|
| 654 | // If we've only one site in the loop, don't bother with odd and even.
|
|---|
| 655 | if ($blogs_template->blog_count > 1)
|
|---|
| 656 | $classes[] = ( $pos_in_loop % 2 ) ? 'even' : 'odd';
|
|---|
| 657 | else
|
|---|
| 658 | $classes[] = 'bp-single-blog';
|
|---|
| 659 |
|
|---|
| 660 | $classes = apply_filters('bp_get_blog_class', $classes);
|
|---|
| 661 | $classes = array_merge($classes, array());
|
|---|
| 662 |
|
|---|
| 663 | $retval = 'class="' . join(' ', $classes) . '"';
|
|---|
| 664 | return $retval;
|
|---|
| 665 | }
|
|---|
| 666 |
|
|---|
| 667 | /**
|
|---|
| 668 | * Output the last active date of the current blog in the loop.
|
|---|
| 669 | */
|
|---|
| 670 | function bp_blog_last_active() {
|
|---|
| 671 | echo bp_get_blog_last_active();
|
|---|
| 672 | }
|
|---|
| 673 |
|
|---|
| 674 | /**
|
|---|
| 675 | * Return the last active date of the current blog in the loop.
|
|---|
| 676 | *
|
|---|
| 677 | * @return string Last active date.
|
|---|
| 678 | */
|
|---|
| 679 | function bp_get_blog_last_active() {
|
|---|
| 680 | global $blogs_template;
|
|---|
| 681 |
|
|---|
| 682 | return apply_filters('bp_blog_last_active', bp_core_get_last_activity($blogs_template->blog->last_activity, __('active %s', 'buddypress')));
|
|---|
| 683 | }
|
|---|
| 684 |
|
|---|
| 685 | /**
|
|---|
| 686 | * Output the latest post from the current blog in the loop.
|
|---|
| 687 | */
|
|---|
| 688 | function bp_blog_latest_post() {
|
|---|
| 689 | echo bp_get_blog_latest_post();
|
|---|
| 690 | }
|
|---|
| 691 |
|
|---|
| 692 | /**
|
|---|
| 693 | * Return the latest post from the current blog in the loop.
|
|---|
| 694 | *
|
|---|
| 695 | * @return string $retval String of the form 'Latest Post: [link to post]'.
|
|---|
| 696 | */
|
|---|
| 697 | function bp_get_blog_latest_post() {
|
|---|
| 698 | global $blogs_template;
|
|---|
| 699 |
|
|---|
| 700 | $retval = bp_get_blog_latest_post_title();
|
|---|
| 701 |
|
|---|
| 702 | if (!empty($retval))
|
|---|
| 703 | $retval = sprintf(__('Latest Post: %s', 'buddypress'), '<a href="' . $blogs_template->blog->latest_post->guid . '">' . apply_filters('the_title', $retval) . '</a>');
|
|---|
| 704 |
|
|---|
| 705 | return apply_filters('bp_get_blog_latest_post', $retval);
|
|---|
| 706 | }
|
|---|
| 707 |
|
|---|
| 708 | /**
|
|---|
| 709 | * Output the title of the latest post on the current blog in the loop.
|
|---|
| 710 | *
|
|---|
| 711 | * @since BuddyPress (1.7.0)
|
|---|
| 712 | *
|
|---|
| 713 | * @see bp_get_blog_latest_post_title()
|
|---|
| 714 | */
|
|---|
| 715 | function bp_blog_latest_post_title() {
|
|---|
| 716 | echo bp_get_blog_latest_post_title();
|
|---|
| 717 | }
|
|---|
| 718 |
|
|---|
| 719 | /**
|
|---|
| 720 | * Return the title of the latest post on the current blog in the loop.
|
|---|
| 721 | *
|
|---|
| 722 | * @since BuddyP
|
|---|
| 723 | ress (1.7.0)
|
|---|
| 724 | *
|
|---|
| 725 | * @global BP_Blogs_Template
|
|---|
| 726 | *
|
|---|
| 727 | * @return string Post title.
|
|---|
| 728 | */
|
|---|
| 729 | function bp_get_blog_latest_post_title() {
|
|---|
| 730 | global $blogs_template;
|
|---|
| 731 |
|
|---|
| 732 | $retval = '';
|
|---|
| 733 |
|
|---|
| 734 | if (!empty($blogs_template->blog->latest_post) && !empty($blogs_template->blog->latest_post->post_title))
|
|---|
| 735 | $retval = $blogs_template->blog->latest_post->post_title;
|
|---|
| 736 |
|
|---|
| 737 | return apply_filters('bp_get_blog_latest_post_title', $retval);
|
|---|
| 738 | }
|
|---|
| 739 |
|
|---|
| 740 | /**
|
|---|
| 741 | * Output the permalink of the latest post on the current blog in the loop.
|
|---|
| 742 | *
|
|---|
| 743 | * @since BuddyPress (1.7.0)
|
|---|
| 744 | *
|
|---|
| 745 | * @see bp_get_blog_latest_post_title()
|
|---|
| 746 | */
|
|---|
| 747 | function bp_blog_latest_post_permalink() {
|
|---|
| 748 | echo bp_get_blog_latest_post_permalink();
|
|---|
| 749 | }
|
|---|
| 750 |
|
|---|
| 751 | /**
|
|---|
| 752 | * Return the permalink of the latest post on the current blog in the loop.
|
|---|
| 753 | *
|
|---|
| 754 | * @since BuddyPress (1.7.0)
|
|---|
| 755 | *
|
|---|
| 756 | * @global BP_Blogs_Template
|
|---|
| 757 | *
|
|---|
| 758 | * @return string URL of the blog's latest post.
|
|---|
| 759 | */
|
|---|
| 760 | function bp_get_blog_latest_post_permalink() {
|
|---|
| 761 | global $blogs_template;
|
|---|
| 762 |
|
|---|
| 763 | $retval = '';
|
|---|
| 764 |
|
|---|
| 765 | if (!empty($blogs_template->blog->latest_post) && !empty($blogs_template->blog->latest_post->ID))
|
|---|
| 766 | $retval = add_query_arg('p', $blogs_template->blog->latest_post->ID, bp_get_blog_permalink());
|
|---|
| 767 |
|
|---|
| 768 | return apply_filters('bp_get_blog_latest_post_permalink', $retval);
|
|---|
| 769 | }
|
|---|
| 770 |
|
|---|
| 771 | /**
|
|---|
| 772 | * Output the content of the latest post on the current blog in the l
|
|---|
| 773 | oop.
|
|---|
| 774 | *
|
|---|
| 775 | * @since BuddyPress (1.7.0)
|
|---|
| 776 | *
|
|---|
| 777 | * @uses bp_get_blog_latest_post_content()
|
|---|
| 778 | */
|
|---|
| 779 | function bp_blog_latest_post_content() {
|
|---|
| 780 | echo bp_get_blog_latest_post_content();
|
|---|
| 781 | }
|
|---|
| 782 |
|
|---|
| 783 | /**
|
|---|
| 784 | * Return the content of the latest post on the current blog in the loop.
|
|---|
| 785 | *
|
|---|
| 786 | * @since BuddyPress (1.7.0)
|
|---|
| 787 | *
|
|---|
| 788 | * @global BP_Blogs_Template
|
|---|
| 789 | *
|
|---|
| 790 | * @return string Content of the blog's latest post.
|
|---|
| 791 | */
|
|---|
| 792 | function bp_get_blog_latest_post_content() {
|
|---|
| 793 | global $blogs_template;
|
|---|
| 794 |
|
|---|
| 795 | $retval = '';
|
|---|
| 796 |
|
|---|
| 797 | if (!empty($blogs_template->blog->latest_post) && !empty($blogs_template->blog->latest_post->post_content))
|
|---|
| 798 | $retval = $blogs_template->blog->latest_post->post_content;
|
|---|
| 799 |
|
|---|
| 800 | return apply_filters('bp_get_blog_latest_post_content', $retval);
|
|---|
| 801 | }
|
|---|
| 802 |
|
|---|
| 803 | /**
|
|---|
| 804 | * Output the featured image of the latest post on the current blog in the loop.
|
|---|
| 805 | *
|
|---|
| 806 | * @since BuddyPress (1.7.0)
|
|---|
| 807 | *
|
|---|
| 808 | * @see bp_get_blog_latest_post_conten
|
|---|
| 809 | t() For description of parameters.
|
|---|
| 810 | *
|
|---|
| 811 | * @param string $size See {@link bp_get_blog_latest_post_featured_image()}.
|
|---|
| 812 | */
|
|---|
| 813 | function bp_blog_latest_post_featured_image($size = 'thumbnail') {
|
|---|
| 814 | echo bp_get_blog_latest_post_featured_image($size);
|
|---|
| 815 | }
|
|---|
| 816 |
|
|---|
| 817 | /**
|
|---|
| 818 | * Return the featured image of the latest post on the current blog in the loop.
|
|---|
| 819 | *
|
|---|
| 820 | * @since BuddyPress (1.7.0)
|
|---|
| 821 | *
|
|---|
| 822 | * @global BP_Blogs_Template
|
|---|
| 823 | *
|
|---|
| 824 | * @param string $size Image version to return. 'thumbnail', 'medium',
|
|---|
| 825 | * 'large', or 'post-thumbnail'. Default: 'thumbnail'.
|
|---|
| 826 | * @return string URL of the image.
|
|---|
| 827 | */
|
|---|
| 828 | function bp_get_blog_latest_post_featured_image($size = 'thumbnail') {
|
|---|
| 829 | global $blogs_template;
|
|---|
| 830 |
|
|---|
| 831 | $retval = '';
|
|---|
| 832 |
|
|---|
| 833 | if (!empty($blogs_template->blog->latest_post) && !empty($blogs_template->blog->latest_post->images[$size]))
|
|---|
| 834 | $retval = $blogs_template->blog->latest_post->images[$size];
|
|---|
| 835 |
|
|---|
| 836 | return apply_filters('bp_get_blog_latest_post_featured_image', $retval);
|
|---|
| 837 | }
|
|---|
| 838 |
|
|---|
| 839 | /**
|
|---|
| 840 | * Does the latest blog post have a featured image?
|
|---|
| 841 | *
|
|---|
| 842 | * @since BuddyPress (1.7.0)
|
|---|
| 843 | *
|
|---|
| 844 | * @param string $size Image version to return. 'thumbnail', 'medium', 'large',
|
|---|
| 845 | * or 'post-thumbnail'. Default: 'thumbnail'.
|
|---|
| 846 | * @return bool True if the latest blog post from the current blog has a
|
|---|
| 847 | * featured image of the given size.
|
|---|
| 848 | */
|
|---|
| 849 | function bp_blog_latest_post_has_featured_image($thumbnail = 'thumbnail') {
|
|---|
| 850 | $image = bp_get_blog_latest_post_featured_image($thumbnail);
|
|---|
| 851 |
|
|---|
| 852 | return apply_filters('bp_blog_latest_post_has_featured_image', !empty($image), $thumbnail, $image);
|
|---|
| 853 | }
|
|---|
| 854 |
|
|---|
| 855 | /**
|
|---|
| 856 | * Output hidden fields to help with form submissions in Sit
|
|---|
| 857 | es directory.
|
|---|
| 858 | *
|
|---|
| 859 | * This function detects whether 's', 'letter', or 'blogs_search' requests are
|
|---|
| 860 | * currently being made (as in a URL parameter), and creates corresponding
|
|---|
| 861 | * hidden fields.
|
|---|
| 862 | */
|
|---|
| 863 | function bp_blog_hidden_fields() {
|
|---|
| 864 | if (isset($_REQUEST['s']))
|
|---|
| 865 | echo '<input type="hidden" id="search_terms" value="' . esc_attr($_REQUEST['s']) . '" name="search_terms" />';
|
|---|
| 866 |
|
|---|
| 867 | if (isset($_REQUEST['letter']))
|
|---|
| 868 | echo '<input type="hidden" id="selected_letter" value="' . esc_attr($_REQUEST['letter']) . '" name="selected_letter" />';
|
|---|
| 869 |
|
|---|
| 870 | if (isset($_REQUEST['blogs_search']))
|
|---|
| 871 | echo '<input type="hidden" id="search_terms" value="' . esc_attr($_REQUEST['blogs_search']) . '" name="search_terms" />';
|
|---|
| 872 | }
|
|---|
| 873 |
|
|---|
| 874 | /**
|
|---|
| 875 | * Output the total number of blogs on the site.
|
|---|
| 876 | */
|
|---|
| 877 | function bp_total_blog_count() {
|
|---|
| 878 | echo bp_get_total_blog_count();
|
|---|
| 879 | }
|
|---|
| 880 |
|
|---|
| 881 | /**
|
|---|
| 882 | * Return the total number of blogs on the site.
|
|---|
| 883 | *
|
|---|
| 884 | * @return int Total number of blogs.
|
|---|
| 885 | */
|
|---|
| 886 | function bp_get_total_blog_count() {
|
|---|
| 887 | return apply_filters('bp_get_total_blog_count', bp_blogs_total_blogs());
|
|---|
| 888 | }
|
|---|
| 889 |
|
|---|
| 890 | add_filter('bp_get_total_blog_count', 'bp_core_number_format');
|
|---|
| 891 |
|
|---|
| 892 | /**
|
|---|
| 893 | * Output the total number of blogs for a given user.
|
|---|
| 894 | *
|
|---|
| 895 | * @param int $user_id ID of the user.
|
|---|
| 896 | * @param bool $show_hidden Whether to count also hidden blogs.
|
|---|
| 897 | * @version 2, stergatu added @param $show_hidden
|
|---|
| 898 | */
|
|---|
| 899 | function bp_total_blog_count_for_user($user_id = 0, $show_hidden = false) {
|
|---|
| 900 | echo bp_get_total_blog_count_for_user($user_id, $show_hidden);
|
|---|
| 901 | }
|
|---|
| 902 |
|
|---|
| 903 | /**
|
|---|
| 904 | * Return the total number of blogs for a given user.
|
|---|
| 905 | *
|
|---|
| 906 | * @param int $user_id ID of the user.
|
|---|
| 907 | * @param bool $show_hidden whether to count also hidden blogs
|
|---|
| 908 | * @return int Total number of blogs for the user.
|
|---|
| 909 | * @version 2, stergatu added @param $show_hidden
|
|---|
| 910 | */
|
|---|
| 911 | function bp_get_total_blog_count_for_user($user_id = 0, $show_hidden = false) {
|
|---|
| 912 | return apply_filters('bp_get_total_blog_count_for_user', bp_blogs_total_blogs_for_user($user_id, $show_hidden));
|
|---|
| 913 | }
|
|---|
| 914 |
|
|---|
| 915 | add_filter('bp_get_total_blog_count_for_user', 'bp_core_number_format');
|
|---|
| 916 |
|
|---|
| 917 |
|
|---|
| 918 | /** Blog Registration ******************************************************* */
|
|---|
| 919 |
|
|---|
| 920 | /**
|
|---|
| 921 | * Checks whether blog creation is enabled.
|
|---|
| 922 | *
|
|---|
| 923 | * Returns true
|
|---|
| 924 | when blog creation is enabled for logged-in users only, or
|
|---|
| 925 | * when it's enabled for new registrations.
|
|---|
| 926 | *
|
|---|
| 927 | * @return bool True if blog registration is e
|
|---|
| 928 | nabled.
|
|---|
| 929 | */
|
|---|
| 930 | function bp_blog_signup_enabled() {
|
|---|
| 931 | global $bp;
|
|---|
| 932 |
|
|---|
| 933 | $active_signup = isset($bp->site_options['registration']) ? $bp->site_options['registration'] : 'all';
|
|---|
| 934 |
|
|---|
| 935 | $active_signup = apply_filters('wpmu_active_signup', $active_signup); // return "all", "none", "blog" or "user"
|
|---|
| 936 | if ('none' == $active_signup || 'user' == $active_signup)
|
|---|
| 937 | return false;
|
|---|
| 938 |
|
|---|
| 939 | return true;
|
|---|
| 940 | }
|
|---|
| 941 |
|
|---|
| 942 | /**
|
|---|
| 943 | * Output the wrapper markup for the blog signup form.
|
|---|
| 944 | *
|
|---|
| 945 | * @param string $blogname Optional. The default blog name (path or domain).
|
|---|
| 946 | * @param string $blog_title Optional. The default blog title.
|
|---|
| 947 | * @param string|WP_Error Optional. The WP_Error object returned by a previous
|
|---|
| 948 | * submission attempt.
|
|---|
| 949 | */
|
|---|
| 950 | function bp_show_blog_signup_form($blogname = '', $blog_title = '', $errors = '') {
|
|---|
| 951 | global $current_user;
|
|---|
| 952 |
|
|---|
| 953 | if (isset($_POST['submit'])) {
|
|---|
| 954 | bp_blogs_validate_blog_signup();
|
|---|
| 955 | } else {
|
|---|
| 956 | if (!is_wp_error($errors)) {
|
|---|
| 957 | $errors = new WP_Error();
|
|---|
| 958 | }
|
|---|
| 959 |
|
|---|
| 960 | // allow definition of default variables
|
|---|
| 961 | $filtered_results = apply_filters('signup_another_blog_init', array('blogname' => $blogname, 'blog_title' => $blog_title, 'errors' => $errors));
|
|---|
| 962 | $blogname = $filtered_results['blogname'];
|
|---|
| 963 | $blog_title = $filtered_results['blog_title'];
|
|---|
| 964 | $errors = $filtered_results['errors'];
|
|---|
| 965 |
|
|---|
| 966 | if ($errors->get_error_code()) {
|
|---|
| 967 | echo "<p>" . __('There was a problem, please correct the form below and try again.', 'buddypress') . "</p>";
|
|---|
| 968 | }
|
|---|
| 969 | ?>
|
|---|
| 970 | <p><?php printf(__("By filling out the form below, you can <strong>add a site to your account</strong>. There is no limit to the number of sites that you can have, so create to your heart's content, but blog responsibly!", 'buddypress'), $current_user->display_name) ?></p>
|
|---|
| 971 |
|
|---|
| 972 | <p><?php _e("If you’re not going to use a great domain, leave it for a new user. Now have at it!", 'buddypress') ?></p>
|
|---|
| 973 |
|
|---|
| 974 | <form class="standard-form" id="setupform" method="post" action="">
|
|---|
| 975 |
|
|---|
| 976 | <input type="hidden" name="stage" value="gimmeanotherblog" />
|
|---|
| 977 | <?php do_action('signup_hidden_fields'); ?>
|
|---|
| 978 |
|
|---|
| 979 | <?php bp_blogs_signup_blog($blogname, $blog_title, $errors); ?>
|
|---|
| 980 | <p>
|
|---|
| 981 | <input id="submit" type="submit" name="submit" class="submit" value="<?php _e('Create Site', 'buddypress') ?>" />
|
|---|
| 982 | </p>
|
|---|
| 983 |
|
|---|
| 984 | <?php wp_nonce_field('bp_blog_signup_form') ?>
|
|---|
| 985 | </form>
|
|---|
| 986 | <?php
|
|---|
| 987 | }
|
|---|
| 988 | }
|
|---|
| 989 |
|
|---|
| 990 | /**
|
|---|
| 991 | * Output the input fields for the blog creation form.
|
|---|
| 992 | *
|
|---|
| 993 | * @param string $blogname Optional. The default blog name (path or domain).
|
|---|
| 994 | * @param string $blog_title Optional. The default blog title.
|
|---|
| 995 | * @param string|WP_Error Optional. The WP_Error object returned by a previous
|
|---|
| 996 | * submission attempt.
|
|---|
| 997 | */
|
|---|
| 998 | function bp_blogs_signup_blog($blogname = '', $blog_title = '', $errors = '') {
|
|---|
| 999 | global $current_site;
|
|---|
| 1000 |
|
|---|
| 1001 | // Blog name
|
|---|
| 1002 | if (!is_subdomain_install())
|
|---|
| 1003 | echo '<label for="blogname">' . __('Site Name:', 'buddypress') . '</label>';
|
|---|
| 1004 | else
|
|---|
| 1005 | echo '<label for="blogname">' . __('Site Domain:', 'buddypress') . '</label>';
|
|---|
| 1006 |
|
|---|
| 1007 | if ($errmsg = $errors->get_error_message('blogname')) {
|
|---|
| 1008 | ?>
|
|---|
| 1009 |
|
|---|
| 1010 | <p class="error"><?php echo $errmsg ?></p>
|
|---|
| 1011 |
|
|---|
| 1012 | <?php
|
|---|
| 1013 | }
|
|---|
| 1014 |
|
|---|
| 1015 | if (!is_subdomain_install())
|
|---|
| 1016 | echo '<span class="prefix_address">' . $current_site->domain . $current_site->path . '</span> <input name="blogname" type="text" id="blogname" value="' . $blogname . '" maxlength="63" /><br />';
|
|---|
| 1017 | else
|
|---|
| 1018 | echo '<input name="blogname" type="text" id="blogname" value="' . $blogname . '" maxlength="63" /> <span class="suffix_address">.' . bp_blogs_get_subdomain_base() . '</span><br />';
|
|---|
| 1019 |
|
|---|
| 1020 | if (!is_user_logged_in()) {
|
|---|
| 1021 | print '(<strong>' . __('Your address will be ', 'buddypress');
|
|---|
| 1022 |
|
|---|
| 1023 | if (!is_subdomain_install()) {
|
|---|
| 1024 | print $current_site->domain . $current_site->path . __('blogname', 'buddypress');
|
|---|
| 1025 | } else {
|
|---|
| 1026 | print __('domain.', 'buddypress') . $current_site->domain . $current_site->path;
|
|---|
| 1027 | }
|
|---|
| 1028 |
|
|---|
| 1029 | echo '.</strong> ' . __('Must be at least 4 characters, letters and numbers only. It cannot be changed so choose carefully!)', 'buddypress') . '</p>';
|
|---|
| 1030 | }
|
|---|
| 1031 |
|
|---|
| 1032 | // Blog Title
|
|---|
| 1033 | ?>
|
|---|
| 1034 |
|
|---|
| 1035 | <label for="blog_title"><?php _e('Site Title:', 'buddypress') ?></label>
|
|---|
| 1036 |
|
|---|
| 1037 | <?php if ($errmsg = $errors->get_error_message('blog_title')) { ?>
|
|---|
| 1038 |
|
|---|
| 1039 | <p class="error"><?php echo $errmsg ?></p>
|
|---|
| 1040 |
|
|---|
| 1041 | <?php
|
|---|
| 1042 | }
|
|---|
| 1043 | echo '<input name="blog_title" type="text" id="blog_title" value="' . esc_html($blog_title, 1) . '" /></p>';
|
|---|
| 1044 | ?>
|
|---|
| 1045 |
|
|---|
| 1046 | <p>
|
|---|
| 1047 | <label for="blog_public_on"><?php _e('Privacy:', 'buddypress') ?></label>
|
|---|
| 1048 | <?php _e('I wou
|
|---|
| 1049 | ld like my site to appear in search engines, and in public listings around this network.', 'buddypress'); ?>
|
|---|
| 1050 |
|
|---|
| 1051 | <label class="checkbox" for="blog_public_on">
|
|---|
| 1052 | <input type="radio" id="blog_public_on" name="blog_public" value="1" <?php
|
|---|
| 1053 | if (!isset($_POST['blog_public']) ||
|
|---|
| 1054 | '1' == $_POST['blog_public']) {
|
|---|
| 1055 | ?>checked="checked"<?php } ?> />
|
|---|
| 1056 |
|
|---|
| 1057 | <strong><?php _e('Yes', 'buddypress'); ?></strong>
|
|---|
| 1058 | </label>
|
|---|
| 1059 | <label class="checkbox" for="blog_public_off">
|
|---|
| 1060 | <input type="radio" id="blog_public_off" name="blog_public" value="0" <?php if (isset($_POST['blog_public']) && '0' == $_POST['blog_public']) { ?>checked="checked"<?php } ?> />
|
|---|
| 1061 | <strong><?php _e('No', 'buddypress'); ?></strong>
|
|---|
| 1062 | </label>
|
|---|
| 1063 | </p>
|
|---|
| 1064 |
|
|---|
| 1065 | <?php
|
|---|
| 1066 | do_action('signup_blogform', $errors);
|
|---|
| 1067 | }
|
|---|
| 1068 |
|
|---|
| 1069 | /**
|
|---|
| 1070 | * Output the base URL for subdomain installations of WordPress Multisite.
|
|---|
| 1071 | *
|
|---|
| 1072 | * @since BuddyPress (1.6.0)
|
|---|
| 1073 | */
|
|---|
| 1074 | function bp_blogs_subdomain_base() {
|
|---|
| 1075 | echo bp_blogs_get_subdomain_base();
|
|---|
| 1076 | }
|
|---|
| 1077 |
|
|---|
| 1078 | /**
|
|---|
| 1079 | * Return the base URL for subdomain installations of WordPress Multisite.
|
|---|
| 1080 | *
|
|---|
| 1081 | * @since BuddyPress (1.6.0)
|
|---|
| 1082 | *
|
|---|
| 1083 | * @return string The base URL - eg, 'example.com' for site_url() example.com or www.example.com.
|
|---|
| 1084 | */
|
|---|
| 1085 | function bp_blogs_get_subdomain_base() {
|
|---|
| 1086 | global $current_site;
|
|---|
| 1087 |
|
|---|
| 1088 | return apply_filters('bp_blogs_subdomain_base', preg_replace('|^www\.|', '', $current_site->domain) . $current_site->path);
|
|---|
| 1089 | }
|
|---|
| 1090 |
|
|---|
| 1091 | /**
|
|---|
| 1092 | * Process a blog registration submission.
|
|---|
| 1093 | *
|
|---|
| 1094 | * Passes submitted values to {@link wpmu_create_blog()}.
|
|---|
| 1095 | *
|
|---|
| 1096 | * @return bool True on success, false on failure.
|
|---|
| 1097 | */
|
|---|
| 1098 | function bp_blogs_validate_blog_signup() {
|
|---|
| 1099 | global $wpdb, $current_user, $blogname, $blog_title, $errors, $domain, $path, $current_site;
|
|---|
| 1100 |
|
|---|
| 1101 | if (!check_admin_referer('bp_blog_signup_form'))
|
|---|
| 1102 | return false;
|
|---|
| 1103 |
|
|---|
| 1104 | $current_user = wp_get_current_user();
|
|---|
| 1105 |
|
|---|
| 1106 | if (!is_user_logged_in())
|
|---|
| 1107 | die();
|
|---|
| 1108 |
|
|---|
| 1109 | $result = bp_blogs_validate_blog_form();
|
|---|
| 1110 | extract($result);
|
|---|
| 1111 |
|
|---|
| 1112 | if ($errors->get_error_code()) {
|
|---|
| 1113 | unset($_POST['submit']);
|
|---|
| 1114 | bp_show_blog_signup_form($blogname, $blog_title, $errors);
|
|---|
| 1115 | return false;
|
|---|
| 1116 | }
|
|---|
| 1117 |
|
|---|
| 1118 | $public = (int) $_POST['blog_public'];
|
|---|
| 1119 |
|
|---|
| 1120 | $meta = apply_filters('signup_create_blog_meta', array('lang_id' => 1, 'public' => $public)); // depreciated
|
|---|
| 1121 | $meta = apply_filters('add_signup_meta', $meta);
|
|---|
| 1122 |
|
|---|
| 1123 | // If this is a subdomain install, set up the site inside the root domain.
|
|---|
| 1124 | if (is_subdomain_install())
|
|---|
| 1125 | $domain = $blogname . '.' . preg_replace('|^www\.|', '', $current_site->domain);
|
|---|
| 1126 |
|
|---|
| 1127 | wpmu_create_blog($domain, $path, $blog_title, $current_user->ID, $meta, $wpdb->siteid);
|
|---|
| 1128 | bp_blogs_confirm_blog_signup($domain, $path, $blog_title, $current_user->user_login, $current_user->user_email, $meta);
|
|---|
| 1129 | return true;
|
|---|
| 1130 | }
|
|---|
| 1131 |
|
|---|
| 1132 | /**
|
|---|
| 1133 | * Validate a blog creation submission.
|
|---|
| 1134 | *
|
|---|
| 1135 | * Essentially, a wrapper for {@link wpmu_validate_blog_signup()}.
|
|---|
| 1136 | *
|
|---|
| 1137 | * @return array Contains the new site data and error messages.
|
|---|
| 1138 |
|
|---|
| 1139 | */
|
|---|
| 1140 | function bp_blogs_validate_blog_form() {
|
|---|
| 1141 | $user = '';
|
|---|
| 1142 |
|
|---|
| 1143 | if (is_user_logged_in())
|
|---|
| 1144 | $user = wp_get_current_user();
|
|---|
| 1145 |
|
|---|
| 1146 | return wpmu_validate_blog_signup($_POST['blogname'], $_POST['blog_title'], $user);
|
|---|
| 1147 | }
|
|---|
| 1148 |
|
|---|
| 1149 | /**
|
|---|
| 1150 | * Display a message after successful blog registration.
|
|---|
| 1151 | *
|
|---|
| 1152 | * @param string $domain The new blog's domain.
|
|---|
| 1153 | * @param string $path The new blog's path.
|
|---|
| 1154 | * @param string $blog_title The new blog's title.
|
|---|
| 1155 | * @param string $user_name The user name of the user who created the blog. Unused.
|
|---|
| 1156 |
|
|---|
| 1157 | * @param string $user_email The email of the user who created the blog. Unused.
|
|---|
| 1158 | * @param string|array $meta Meta values associated with the new blog. Unused.
|
|---|
| 1159 | */
|
|---|
| 1160 | function bp_blogs_confirm_blog_signup($domain, $path, $blog_title, $user_name, $user_email = '', $meta = '') {
|
|---|
| 1161 | $protocol = is_ssl() ? 'https://' : 'http://';
|
|---|
| 1162 | $blog_url = $protocol . $domain . $path;
|
|---|
| 1163 | ?>
|
|---|
| 1164 | <p><?php _e('Congratulations! You have successfully registered a new site.', 'buddypress') ?></p>
|
|---|
| 1165 | <p>
|
|---|
| 1166 | <?php printf(__('<a href="%1$s">%2$s</a> is your new site. <a href="%3$s">Login</a> as "%4$s" using your existing password.', 'buddypress'), $blog_url, $blog_url, $blog_url . "wp-login.php", $user_name); ?>
|
|---|
| 1167 | </p>
|
|---|
| 1168 |
|
|---|
| 1169 | <?php
|
|---|
| 1170 | do_action('signup_finished');
|
|---|
| 1171 | }
|
|---|
| 1172 |
|
|---|
| 1173 | /**
|
|---|
| 1174 | * Output a "Create a Site" link for users viewing their own profiles.
|
|---|
| 1175 | */
|
|---|
| 1176 | function bp_create_blog_link() {
|
|---|
| 1177 | if (bp_is_my_profile())
|
|---|
| 1178 | echo apply_filters('bp_create_blog_link', '<a href="' . bp_get_root_domain() . '/' . bp_get_blogs_root_slug() . '/create/">' . __('Create a Site', 'buddypress') . '</a>');
|
|---|
| 1179 | }
|
|---|
| 1180 |
|
|---|
| 1181 | /**
|
|---|
| 1182 | * Output navigation tabs for a user Blogs page.
|
|---|
| 1183 | *
|
|---|
| 1184 | * Currently unused by BuddyPress.
|
|---|
| 1185 | */
|
|---|
| 1186 | function bp_blogs_blog_tabs() {
|
|---|
| 1187 |
|
|---|
| 1188 | // Don't show these tabs on a user's own profile
|
|---|
| 1189 | if (bp_is_my_profile())
|
|---|
| 1190 | return false;
|
|---|
| 1191 | ?>
|
|---|
| 1192 |
|
|---|
| 1193 | <ul class="content-header-nav">
|
|---|
| 1194 | <li<?php if (bp_is_current_action('my-blogs') || !bp_current_action()) : ?> class="current"<?php endif; ?>><a href="<?php echo trailingslashit(bp_displayed_user_domain() . bp_get_blogs_slug() . '/my-blogs'); ?>"><?php printf(__("%s's Sites", 'buddypress'), bp_get_displayed_user_fullname()); ?></a></li>
|
|---|
| 1195 | <li<?php if (bp_is_current_action('recent-posts')) : ?> class="current"<?php endif; ?>><a href="<?php echo trailingslashit(bp_displayed_user_domain() . bp_get_blogs_slug() . '/recent-posts'); ?>"><?php printf(__("%s's Recent Posts", 'buddypress'), bp_get_displayed_user_fullname()); ?></a></li>
|
|---|
| 1196 | <li<?php if (bp_is_current_action('recent-comments')) : ?> class="current"<?php endif; ?>><a href="<?php echo trailingslashit(bp_displayed_user_domain() . bp_get_blogs_slug() . '/recent-comments'); ?>"><?php printf(__("%s's Recent Comments", 'buddypress'), bp_get_displayed_user_fullname()); ?></a></li>
|
|---|
| 1197 | </ul>
|
|---|
| 1198 |
|
|---|
| 1199 | <?php
|
|---|
| 1200 | do_action('bp_blogs_blog_tabs');
|
|---|
| 1201 | }
|
|---|
| 1202 |
|
|---|
| 1203 | /**
|
|---|
| 1204 | * Output the blog directory search form.
|
|---|
| 1205 | */
|
|---|
| 1206 | function bp_directory_blogs_search_form() {
|
|---|
| 1207 | $default_search_value = bp_get_search_default_text();
|
|---|
| 1208 | $search_value = !empty($_REQUEST['s']) ? stripslashes($_REQUEST['s'
|
|---|
| 1209 | ]) : $default_search_value;
|
|---|
| 1210 |
|
|---|
| 1211 | $search_form_html = '<form action="" method="get" id="search-blogs-form">
|
|---|
| 1212 | <label><input type="text" name="s" id="blogs_search" placeholder="' . esc_attr($search_value) . '" /></label>
|
|---|
| 1213 | <input type="submit" id="blogs_search_submit" name="blogs_search_submit" value="' . __('Search', 'buddypress') . '" />
|
|---|
| 1214 | </form>';
|
|---|
| 1215 |
|
|---|
| 1216 | echo apply_filters('bp_directory_blogs_search_form', $search_form_html);
|
|---|
| 1217 | }
|
|---|
| 1218 |
|
|---|
| 1219 | /**
|
|---|
| 1220 | * Output button for visiting a blog in a loop.
|
|---|
| 1221 | *
|
|---|
| 1222 | * @see bp_get_blogs_visit_blog_button() for description of arguments.
|
|---|
| 1223 | *
|
|---|
| 1224 | * @param array $args See {@link bp_get_blogs_visit_blog_button()}.
|
|---|
| 1225 | */
|
|---|
| 1226 | function bp_blogs_visit_blog_button($args = '') {
|
|---|
| 1227 | echo bp_get_blogs_visit_blog_button($args);
|
|---|
| 1228 | }
|
|---|
| 1229 |
|
|---|
| 1230 | /**
|
|---|
| 1231 | * Return button for visiting a blog in a loop.
|
|---|
| 1232 | *
|
|---|
| 1233 | * @see BP_Button for a complete description of arguments and return
|
|---|
| 1234 | * value.
|
|---|
| 1235 | *
|
|---|
| 1236 | * @param array $args {
|
|---|
| 1237 | * Arguments are listed below, with their default values. For a
|
|---|
| 1238 | * complete description of arguments, see {@link BP_Button}.
|
|---|
| 1239 | * @type string $id Default: 'visit_blog'.
|
|---|
| 1240 | * @type string $component Default: 'blogs'.
|
|---|
| 1241 | * @type bool $must_be_logged_in Default: false.
|
|---|
| 1242 | * @type bool $block_self Default: false.
|
|---|
| 1243 | * @type string $wrapper_class Default: 'blog-button visit'.
|
|---|
| 1244 | * @type string $link_href Permalink of the current blog in the loop.
|
|---|
| 1245 | * @type string $link_class Default: 'blog-button visit'.
|
|---|
| 1246 | * @type string $link_text Default: 'Visit Site'.
|
|---|
| 1247 | * @type string $link_title Default: 'Visit Site'.
|
|---|
| 1248 | * }
|
|---|
| 1249 | * @return string The HTML for the Visit button.
|
|---|
| 1250 | */
|
|---|
| 1251 | function bp_get_blogs_visit_blog_button($args = '') {
|
|---|
| 1252 | $defaults = array(
|
|---|
| 1253 | 'id' => 'visit_blog',
|
|---|
| 1254 | 'component' => 'blogs',
|
|---|
| 1255 | 'must_be_logged_in' => false,
|
|---|
| 1256 | 'block_self' => false,
|
|---|
| 1257 | 'wrapper_class' => 'blog-button visit',
|
|---|
| 1258 | 'link_href' => bp_get_blog_permalink(),
|
|---|
| 1259 | 'link_class' => 'blog-button visit',
|
|---|
| 1260 | 'link_text' => __('Visit Site', 'buddypress'),
|
|---|
| 1261 | 'link_title' => __('Visit Site', 'buddypress'),
|
|---|
| 1262 | );
|
|---|
| 1263 |
|
|---|
| 1264 | $button = wp_parse_args($args, $defaults);
|
|---|
| 1265 |
|
|---|
| 1266 | // Filter and return the HTML button
|
|---|
| 1267 | return bp_get_button(apply_filters('bp_get_blogs_visit_blog_button', $button));
|
|---|
| 1268 | }
|
|---|