| 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 | } |
|---|