Skip to:
Content

BuddyPress.org

Ticket #5644: bp-custom.php

File bp-custom.php, 2.6 KB (added by imath, 12 years ago)
Line 
1<?php
2/**
3 * Here's an example on how to completely override Favorites to behave as likes
4 */
5
6// Exit if accessed directly
7if ( ! defined( 'ABSPATH' ) ) exit;
8
9
10class BP_Custom_Like {
11
12 public static function start() {
13 // Bail if activity component is inactive
14 if ( ! bp_is_active( 'activity' ) ) {
15 return;
16 }
17
18 $bp = buddypress();
19
20 if ( empty( $bp->custom_like ) ) {
21 $bp->custom_like = new self;
22 }
23
24 return $bp->custom_like;
25 }
26
27 public function __construct() {
28 $this->setup_hooks();
29 }
30
31 public function setup_hooks() {
32 // First remove the setting screen
33 add_filter( 'bp_activity_favorites_user_settings', '__return_false' );
34
35 // Force favorites to be public
36 add_filter( 'bp_activity_favorites_privacy', '__return_true' );
37
38 // Define your custom strings
39 add_filter( 'bp_activity_favorites_globals', array( $this, 'like_strings' ), 10, 1 );
40
41 // Change the unfav link to go to user's likes instead of unfavoriting the activity
42 add_filter( 'bp_get_activity_unfavorite_link', array( $this, 'user_likes' ), 10, 1 );
43
44 // Neutralize unfav ajax action
45 add_filter( 'bp_core_get_js_strings', array( $this, 'neutralize_unfav' ), 10, 1 );
46 }
47
48 public function like_strings( $strings = array() ) {
49 return array(
50 // Activity action args
51 'description' => _x( 'Liked an update', 'likes activity description', 'bp-custom-like' ),
52 'label' => _x( 'Likes', 'likes activity dropdown label', 'bp-custom-like' ),
53 // Wether you want to show the favorites in Activity Directory / group single item activities,
54 // member single item activities, or the groups tab of member single item activities
55 'contexts' => array( 'activity', 'group', 'member', 'member_groups' ),
56 // Strings
57 'directory_tab' => _x( 'My Likes', 'likes directory tab', 'bp-custom-like' ),
58 // The action button in activity stream to favorite an update
59 'fav_button' => _x( 'Like', 'like button caption', 'bp-custom-like' ),
60 // The action button in activity stream to remove a favorited update
61 'unfav_button' => _x( 'Liked', 'liked button caption', 'bp-custom-like' ),
62 // Nav name
63 'subnav' => _x( 'Likes', 'likes member subnav', 'bp-custom-like' ),
64 // Slug
65 'slug' => 'likes'
66 );
67 }
68
69 public function user_likes( $unfav_link = '' ) {
70 return bp_core_get_user_domain( bp_loggedin_user_id() ) . bp_get_activity_slug() . '/' . bp_get_activity_favorites_slug();
71 }
72
73 public function neutralize_unfav( $params = array() ) {
74 $params['no_unfav'] = 1;
75 return $params;
76 }
77}
78add_action( 'bp_core_components_included', array( 'BP_Custom_Like', 'start' ), 10 );