/** * Format notifications related to activity. * * @since 1.5.0 * * @uses bp_loggedin_user_domain() * @uses bp_get_activity_slug() * @uses bp_core_get_user_displayname() * @uses apply_filters() To call the 'bp_activity_multiple_at_mentions_notification' hook. * @uses apply_filters() To call the 'bp_activity_single_at_mentions_notification' hook. * @uses do_action() To call 'activity_format_notifications' hook. * * @param string $action The type of activity item. Just 'new_at_mention' for now. * @param int $item_id The activity ID. * @param int $secondary_item_id In the case of at-mentions, this is the mentioner's ID. * @param int $total_items The total number of notifications to format. * @param string $format 'string' to get a BuddyBar-compatible notification, 'array' otherwise. * @return string $return Formatted @mention notification. */ function bp_activity_format_notifications($action, $item_id, $secondary_item_id, $total_items, $format = 'string') { switch ($action) { case 'new_at_mention': $activity_id = $item_id; $poster_user_id = $secondary_item_id; $at_mention_link = bp_loggedin_user_domain() . bp_get_activity_slug() . '/mentions/'; $at_mention_title = sprintf(__('@%s Mentions', 'buddypress'), bp_get_loggedin_user_username()); $amount = 'single'; if ((int) $total_items > 1) { $text = sprintf(__('You have %1$d new mentions', 'buddypress'), (int) $total_items); $amount = 'multiple'; } else { $user_fullname = bp_core_get_user_displayname($poster_user_id); $text = sprintf(__('%1$s mentioned you', 'buddypress'), $user_fullname); } break; } if ('string' == $format) { /** * Filters the @mention notification for the string format. * * This is a variable filter that is dependent on how many items * need notified about. The two possible hooks are bp_activity_single_at_mentions_notification * or bp_activity_multiple_at_mentions_notification. * * @since 1.5.0 * * @param string $string HTML anchor tag for the mention. * @param string $at_mention_link The permalink for the mention. * @param int $total_items How many items being notified about. * @param int $activity_id ID of the activity item being formatted. * @param int $poster_user_id ID of the user posting the mention. */ $return = apply_filters('bp_activity_' . $amount . '_at_mentions_notification', '<a href="' . esc_url($at_mention_link) . '" title="' . esc_attr($at_mention_title) . '">' . esc_html($text) . '</a>', $at_mention_link, (int) $total_items, $activity_id, $poster_user_id); } else { /** * Filters the @mention notification for any non-string format. * * This is a variable filter that is dependent on how many items need notified about. * The two possible hooks are bp_activity_single_at_mentions_notification * or bp_activity_multiple_at_mentions_notification. * * @since 1.5.0 * * @param array $array Array holding the content and permalink for the mention notification. * @param string $at_mention_link The permalink for the mention. * @param int $total_items How many items being notified about. * @param int $activity_id ID of the activity item being formatted. * @param int $poster_user_id ID of the user posting the mention. */ $return = apply_filters('bp_activity_' . $amount . '_at_mentions_notification', array('text' => $text, 'link' => $at_mention_link), $at_mention_link, (int) $total_items, $activity_id, $poster_user_id); } /** * Fires right before returning the formatted activity notifications. * * @since 1.2.0 * * @param string $action The type of activity item. * @param int $item_id The activity ID. * @param int $secondary_item_id @mention mentioner ID. * @param int $total_items Total amount of items to format. */ do_action('activity_format_notifications', $action, $item_id, $secondary_item_id, $total_items); return $return; }
/** * Output the username of the logged-in user. */ function bp_loggedin_user_username() { echo bp_get_loggedin_user_username(); }
/** * Set up IdeaStream navigation. * * @package WP Idea Stream * @subpackage buddypress/loader * * @since 2.0.0 * * @uses buddypress() to get BuddyPress instance data * @uses bp_loggedin_user_id() to get logged in user id * @uses bp_get_loggedin_user_username() to get logged in user nicename * @uses bp_loggedin_user_domain() to get logged in user domain * @uses bp_is_user() to check if a user's profile is displayed * @uses bp_displayed_user_id() to get the displayed user id * @uses bp_get_displayed_user_username() to get displayed user nicename * @uses bp_displayed_user_domain() to get displayed user profile link * @uses wp_idea_stream_users_get_profile_nav_items() to get IdeaStream user nav items * @uses sanitize_title(), sanitize_key() to sanitize datas */ public function setup_nav($main_nav = array(), $sub_nav = array()) { $bp = buddypress(); // Default is current user. $user_id = bp_loggedin_user_id(); $user_nicename = bp_get_loggedin_user_username(); $user_domain = bp_loggedin_user_domain(); // If viewing a user, set the user to displayed one if (bp_is_user()) { $user_id = bp_displayed_user_id(); $user_nicename = bp_get_displayed_user_username(); $user_domain = bp_displayed_user_domain(); } // Build the user nav if we have an id if (!empty($user_id)) { // Build user's ideas BuddyPress profile link $profile_link = trailingslashit($user_domain . $this->slug); // Get Core User's profile nav $user_core_subnav = wp_idea_stream_users_get_profile_nav_items($user_id, $user_nicename); // Build BuddyPress user's Main nav $main_nav = array('name' => $this->name, 'slug' => $this->slug, 'position' => 90, 'screen_function' => array('WP_Idea_Stream_Screens', 'user_ideas'), 'default_subnav_slug' => sanitize_title($user_core_subnav['profile']['slug'], 'ideas', 'save')); // Init nav position & subnav slugs $position = 10; $this->idea_nav = array(); // Build BuddyPress user's Sub nav foreach ($user_core_subnav as $key => $nav) { $fallback_slug = sanitize_key($key); if ('profile' == $fallback_slug) { $fallback_slug = 'ideas'; } // Register subnav slugs using the fallback title // as keys to easily build urls later on. $this->idea_nav[$fallback_slug] = array('name' => $nav['title'], 'slug' => sanitize_title($nav['slug'], $fallback_slug, 'save')); $sub_nav[] = array('name' => $this->idea_nav[$fallback_slug]['name'], 'slug' => $this->idea_nav[$fallback_slug]['slug'], 'parent_url' => $profile_link, 'parent_slug' => $this->slug, 'screen_function' => array('WP_Idea_Stream_Screens', 'user_' . $fallback_slug), 'position' => $position); // increment next nav position $position += 10; } } parent::setup_nav($main_nav, $sub_nav); }
/** * Format notifications related to activity. * * @since 1.5.0 * * @param string $action The type of activity item. Just 'new_at_mention' for now. * @param int $item_id The activity ID. * @param int $secondary_item_id In the case of at-mentions, this is the mentioner's ID. * @param int $total_items The total number of notifications to format. * @param string $format 'string' to get a BuddyBar-compatible notification, 'array' otherwise. * @param int $id Optional. The notification ID. * @return string $return Formatted @mention notification. */ function bp_activity_format_notifications($action, $item_id, $secondary_item_id, $total_items, $format = 'string', $id = 0) { $action_filter = $action; $return = false; $activity_id = $item_id; $user_id = $secondary_item_id; $user_fullname = bp_core_get_user_displayname($user_id); switch ($action) { case 'new_at_mention': $action_filter = 'at_mentions'; $link = bp_loggedin_user_domain() . bp_get_activity_slug() . '/mentions/'; $title = sprintf(__('@%s Mentions', 'buddypress'), bp_get_loggedin_user_username()); $amount = 'single'; if ((int) $total_items > 1) { $text = sprintf(__('You have %1$d new mentions', 'buddypress'), (int) $total_items); $amount = 'multiple'; } else { $text = sprintf(__('%1$s mentioned you', 'buddypress'), $user_fullname); } break; case 'update_reply': $link = bp_get_notifications_permalink(); $title = __('New Activity reply', 'buddypress'); $amount = 'single'; if ((int) $total_items > 1) { $link = add_query_arg('type', $action, $link); $text = sprintf(__('You have %1$d new replies', 'buddypress'), (int) $total_items); $amount = 'multiple'; } else { $link = add_query_arg('nid', (int) $id, bp_activity_get_permalink($activity_id)); $text = sprintf(__('%1$s commented on one of your updates', 'buddypress'), $user_fullname); } break; case 'comment_reply': $link = bp_get_notifications_permalink(); $title = __('New Activity comment reply', 'buddypress'); $amount = 'single'; if ((int) $total_items > 1) { $link = add_query_arg('type', $action, $link); $text = sprintf(__('You have %1$d new comment replies', 'buddypress'), (int) $total_items); $amount = 'multiple'; } else { $link = add_query_arg('nid', (int) $id, bp_activity_get_permalink($activity_id)); $text = sprintf(__('%1$s replied to one your activity comments', 'buddypress'), $user_fullname); } break; } if ('string' == $format) { /** * Filters the activity notification for the string format. * * This is a variable filter that is dependent on how many items * need notified about. The two possible hooks are bp_activity_single_at_mentions_notification * or bp_activity_multiple_at_mentions_notification. * * @since 1.5.0 * @since 2.6.0 use the $action_filter as a new dynamic portion of the filter name. * * @param string $string HTML anchor tag for the interaction. * @param string $link The permalink for the interaction. * @param int $total_items How many items being notified about. * @param int $activity_id ID of the activity item being formatted. * @param int $user_id ID of the user who inited the interaction. */ $return = apply_filters('bp_activity_' . $amount . '_' . $action_filter . '_notification', '<a href="' . esc_url($link) . '" title="' . esc_attr($title) . '">' . esc_html($text) . '</a>', $link, (int) $total_items, $activity_id, $user_id); } else { /** * Filters the activity notification for any non-string format. * * This is a variable filter that is dependent on how many items need notified about. * The two possible hooks are bp_activity_single_at_mentions_notification * or bp_activity_multiple_at_mentions_notification. * * @since 1.5.0 * @since 2.6.0 use the $action_filter as a new dynamic portion of the filter name. * * @param array $array Array holding the content and permalink for the interaction notification. * @param string $link The permalink for the interaction. * @param int $total_items How many items being notified about. * @param int $activity_id ID of the activity item being formatted. * @param int $user_id ID of the user who inited the interaction. */ $return = apply_filters('bp_activity_' . $amount . '_' . $action_filter . '_notification', array('text' => $text, 'link' => $link), $link, (int) $total_items, $activity_id, $user_id); } /** * Fires right before returning the formatted activity notifications. * * @since 1.2.0 * * @param string $action The type of activity item. * @param int $item_id The activity ID. * @param int $secondary_item_id The user ID who inited the interaction. * @param int $total_items Total amount of items to format. */ do_action('activity_format_notifications', $action, $item_id, $secondary_item_id, $total_items); return $return; }
/** * Update activity meta after a manual ham change (user initiated) * * @param BP_Activity_Activity $activity The activity to check * @since BuddyPress (1.6) */ public function update_activity_ham_meta($activity) { // By default, only handle activity updates and activity comments. if (!in_array($activity->type, BP_Akismet::get_activity_types())) { return; } $this->update_activity_history($activity->id, sprintf(__('%s reported this activity as not spam', 'buddypress'), bp_get_loggedin_user_username()), 'report-ham'); bp_activity_update_meta($activity->id, '_bp_akismet_user_result', 'false'); bp_activity_update_meta($activity->id, '_bp_akismet_user', bp_get_loggedin_user_username()); }
function rendez_vous_single_get_the_dates($view = 'single') { // First add organizer $all_attendees = (array) rendez_vous()->item->attendees; if (!in_array(rendez_vous()->item->organizer, $all_attendees)) { $all_attendees = array_merge(array(rendez_vous()->item->organizer), $all_attendees); } // Then remove current_user as we want him to be in last position if ('edit' != $view) { if (!rendez_vous_single_date_set() && bp_loggedin_user_id()) { $attendees = array_diff($all_attendees, array(bp_loggedin_user_id())); } else { $attendees = $all_attendees; } } else { $attendees = $all_attendees; } $days = rendez_vous()->item->days; if (empty($days)) { return false; } ksort($days); $header = array_keys($days); $output = '<table id="rendez-vous-attendees-prefs">'; $output .= '<thead>'; $output .= '<tr><th> </th>'; foreach ($header as $date) { $output .= '<th class="rendez-vous-date">'; if (is_long($date)) { $output .= '<div class="date">' . date_i18n(get_option('date_format'), $date) . '</div>'; $output .= '<div class="time">' . date_i18n(get_option('time_format'), $date) . '</div>'; } else { $output .= '<div class="none">' . esc_html__('None', 'rendez-vous') . '</div>'; } $output .= '</th>'; } $output .= '</tr></thead>'; $output .= '<tbody>'; //rows foreach ($attendees as $attendee) { $user_link = trailingslashit(bp_core_get_user_domain($attendee)); $user_name = bp_core_get_user_displayname($attendee); $tr_class = $attendee == bp_loggedin_user_id() ? 'edited' : false; $output .= '<tr class="' . $tr_class . '"><td>'; if ('edit' == $view) { // Make sure the organizer is not removed from attendees if ($attendee == rendez_vous()->item->organizer) { $output .= '<input type="hidden" name="_rendez_vous_edit[attendees][]" value="' . $attendee . '"/>'; } else { $output .= '<input type="checkbox" name="_rendez_vous_edit[attendees][]" value="' . $attendee . '" checked="true"/> '; } } $output .= '<a href="' . esc_url($user_link) . '" title="' . esc_attr($user_name) . '">' . bp_core_fetch_avatar(array('object' => 'user', 'item_id' => $attendee, 'type' => 'thumb', 'class' => 'mini', 'width' => 20, 'height' => 20)) . ' ' . $user_name . '</a></td>'; foreach ($header as $date) { $class = in_array($attendee, $days[$date]) ? 'active' : 'inactive'; if ('none' == $date) { $class .= ' impossible'; } $output .= '<td class="' . $class . '"> </td>'; } $output .= '</tr>'; } $ending_rows = array('total' => '<td>' . esc_html__('Total', 'rendez-vous') . '</td>'); if ('edit' != $view) { $ending_rows['editable_row'] = '<td><a href="' . esc_url(bp_loggedin_user_domain()) . '" title="' . esc_attr(bp_get_loggedin_user_username()) . '">' . bp_core_fetch_avatar(array('object' => 'user', 'item_id' => bp_loggedin_user_id(), 'type' => 'thumb', 'class' => 'mini', 'width' => 20, 'height' => 20)) . ' ' . esc_html(bp_get_loggedin_user_fullname()) . '</a></td>'; // Set definitive date } else { $ending_rows['editable_row'] = '<td id="rendez-vous-set">' . esc_html__('Set date', 'rendez-vous') . '</td>'; } foreach ($header as $date) { $checked = checked(true, in_array(bp_loggedin_user_id(), $days[$date]), false); $ending_rows['total'] .= '<td><strong>' . count($days[$date]) . '</strong></td>'; // Let the user set his prefs if ('edit' != $view) { $class = false; if ('none' == $date) { $class = ' class="none-resets-cb"'; } $ending_rows['editable_row'] .= '<td><input type="checkbox" name="_rendez_vous_prefs[days][' . bp_loggedin_user_id() . '][]" value="' . $date . '" ' . $checked . $class . '/></td>'; // Let the organizer choose the definitive date } else { $def_date = !empty(rendez_vous()->item->def_date) ? rendez_vous()->item->def_date : false; if ('none' != $date) { $ending_rows['editable_row'] .= '<td><input type="radio" name="_rendez_vous_edit[def_date]" value="' . $date . '" ' . checked($date, $def_date, false) . '/></td>'; } else { $ending_rows['editable_row'] .= '<td></td>'; } } } if ('edit' != $view) { // Date is set, changes cannot be done anymore if (!rendez_vous_single_date_set()) { if ('private' == rendez_vous()->item->privacy) { // If private, display the row only if current user is an attendee or the author if (bp_loggedin_user_id() == rendez_vous()->item->organizer || in_array(bp_loggedin_user_id(), $all_attendees)) { $output .= '<tr class="edited">' . $ending_rows['editable_row'] . '</tr>'; } } else { if (current_user_can('subscribe_rendez_vous')) { $output .= '<tr class="edited">' . $ending_rows['editable_row'] . '</tr>'; } } // Display totals $output .= '<tr>' . $ending_rows['total'] . '</tr>'; } } else { // Display totals $output .= '<tr>' . $ending_rows['total'] . '</tr>'; // Display the radio to set the date if ('draft' != rendez_vous()->item->status) { $output .= '<tr>' . $ending_rows['editable_row'] . '</tr>'; } } $output .= '</tbody>'; $output .= '</table>'; if (!is_user_logged_in() && 'publish' == rendez_vous()->item->status && !rendez_vous_single_date_set()) { $output .= '<div id="message" class="info"><p>' . __('If you want to set your preferences about this rendez-vous, please log in.', 'rendez-vous') . '</p></div>'; } return apply_filters('rendez_vous_single_get_the_dates', $output, $view); }
function bp_record_vote_activity($site_id, $blog_id, $post_id, $vote) { if (!bp_loggedin_user_id()) { return false; } $username = bp_get_loggedin_user_fullname(); $username = $username ? $username : bp_get_loggedin_user_username(); if (!$username) { return false; } $user_link = bp_get_loggedin_user_link(); $link = get_blog_permalink($blog_id, $post_id); $post = get_blog_post($blog_id, $post_id); $title = $post->post_title; $args = array('action' => sprintf(__('<a href="%s">%s</a> voted on <a href="%s">%s</a>', 'wdpv'), $user_link, $username, $link, $title), 'component' => 'wdpv_post_vote', 'type' => 'wdpv_post_vote', 'item_id' => $blog_id, 'secondary_item_id' => $post_id, 'hide_sitewide' => $this->data->get_option('bp_publish_activity_local')); $res = bp_activity_add($args); return $res; }
<a href="<?php echo bp_loggedin_user_domain(); ?> "> <?php bp_loggedin_user_avatar('width=150&height=150'); ?> </a> </div> <div class="col-xs-12 col-sm-12 col-lg-12" style="text-align: center"> <h4 style="font-size: 1.4em"><?php echo bp_get_loggedin_user_fullname(); ?> </h4> <span class="username">@<?php echo bp_get_loggedin_user_username(); ?> </span> </div> </div> <div class="row"> <div class="col-lg-12"> <nav class="nav" role="navigation"> <div class="row"> <div class="navbar-header panel hidden-md hidden-lg" style="background-color: #fff; text-align: center"> <h4 class="no-margin"> <a class="collapsed" data-toggle="collapse" data-target="#navbar-user"> What's New <i class="fa fa-caret-down"></i> </a>
/** * Formats notifications related to activity * * @since BuddyPress (1.5) * * @param string $action The type of activity item. Just 'new_at_mention' for now * @param int $item_id The activity id * @param int $secondary_item_id In the case of at-mentions, this is the mentioner's id * @param int $total_items The total number of notifications to format * @param string $format 'string' to get a BuddyBar-compatible notification, 'array' otherwise * * @uses bp_loggedin_user_domain() * @uses bp_get_activity_slug() * @uses bp_core_get_user_displayname() * @uses apply_filters() To call the 'bp_activity_multiple_at_mentions_notification' hook * @uses apply_filters() To call the 'bp_activity_single_at_mentions_notification' hook * @uses do_action() To call 'activity_format_notifications' hook * * @return string $return Formatted @mention notification */ function bp_activity_format_notifications($action, $item_id, $secondary_item_id, $total_items, $format = 'string') { switch ($action) { case 'new_at_mention': $activity_id = $item_id; $poster_user_id = $secondary_item_id; $at_mention_link = bp_loggedin_user_domain() . bp_get_activity_slug() . '/mentions/'; $at_mention_title = sprintf(__('@%s Mentions', 'buddypress'), bp_get_loggedin_user_username()); if ((int) $total_items > 1) { $text = sprintf(__('You have %1$d new mentions', 'buddypress'), (int) $total_items); $filter = 'bp_activity_multiple_at_mentions_notification'; } else { $user_fullname = bp_core_get_user_displayname($poster_user_id); $text = sprintf(__('%1$s mentioned you', 'buddypress'), $user_fullname); $filter = 'bp_activity_single_at_mentions_notification'; } break; } if ('string' == $format) { $return = apply_filters($filter, '<a href="' . $at_mention_link . '" title="' . $at_mention_title . '">' . $text . '</a>', $at_mention_link, (int) $total_items, $activity_id, $poster_user_id); } else { $return = apply_filters($filter, array('text' => $text, 'link' => $at_mention_link), $at_mention_link, (int) $total_items, $activity_id, $poster_user_id); } do_action('activity_format_notifications', $action, $item_id, $secondary_item_id, $total_items); return $return; }
/** * Applies restrictions based on the Theme options -> Memberships * @return void * @since 2.0 */ function kleo_pmpro_restrict_rules() { //if PMPRO is not activated if (!function_exists('pmpro_url')) { return; } //if buddypress is not activated if (!function_exists('bp_is_active')) { return; } //full current url $actual_link = kleo_full_url(); //our request uri $home_url = home_url(); //WPML support if (defined('ICL_SITEPRESS_VERSION')) { global $sitepress; $home_url = $sitepress->language_url(ICL_LANGUAGE_CODE); } $home_url = str_replace("www.", "", $home_url); $uri = str_replace(untrailingslashit($home_url), "", $actual_link); //restriction match array $final = array(); $allowed_chars = apply_filters('kleo_pmpro_allowed_chars', "a-z 0-9~%.:_\\-"); $restrict_options = kleo_memberships(); $members_slug = str_replace('/', '\\/', bp_get_members_root_slug()); /*-----------------------------------------------------------------------------------*/ /* Preg match rules /*-----------------------------------------------------------------------------------*/ //members directory restriction rule $final["/^\\/" . $members_slug . "\\/?\$/"] = array('name' => 'members_dir', 'type' => $restrict_options['members_dir']['type'], 'levels' => isset($restrict_options['members_dir']['levels']) ? $restrict_options['members_dir']['levels'] : array()); //members single profile restriction rule $final["/^\\/" . $members_slug . "\\/[" . $allowed_chars . "\\/]+\\/?\$/"] = array('name' => 'view_profiles', 'type' => $restrict_options['view_profiles']['type'], 'levels' => isset($restrict_options['view_profiles']['levels']) ? $restrict_options['view_profiles']['levels'] : array()); if (function_exists('bp_get_groups_root_slug')) { $groups_slug = str_replace('/', '\\/', bp_get_groups_root_slug()); //groups directory restriction rule $final["/^\\/" . $groups_slug . "\\/?\$/"] = array('name' => 'groups_dir', 'type' => $restrict_options['groups_dir']['type'], 'levels' => isset($restrict_options['groups_dir']['levels']) ? $restrict_options['groups_dir']['levels'] : array()); //groups single page restriction rule $final["/^\\/" . $groups_slug . "\\/[" . $allowed_chars . "\\/]+\\/?\$/"] = array('name' => 'view_groups', 'type' => $restrict_options['view_groups']['type'], 'levels' => isset($restrict_options['view_groups']['levels']) ? $restrict_options['view_groups']['levels'] : array()); } if (function_exists('bp_get_activity_root_slug')) { $activity_slug = str_replace('/', '\\/', bp_get_activity_root_slug()); //activity page restriction rule $final["/^\\/" . $activity_slug . "\\/?\$/"] = array('name' => 'show_activity', 'type' => $restrict_options['show_activity']['type'], 'levels' => isset($restrict_options['show_activity']['levels']) ? $restrict_options['show_activity']['levels'] : array()); } /* You can add extra restrictions using this filter */ $final = apply_filters('kleo_pmpro_match_rules', $final); //no redirection for super-admin if (is_super_admin()) { return false; } elseif (is_user_logged_in()) { //restrict media if (preg_match("/^\\/" . $members_slug . "\\/" . bp_get_loggedin_user_username() . "\\/media\\/?/", $uri) || preg_match("/^\\/" . $members_slug . "\\/" . bp_get_loggedin_user_username() . "\\/album\\/?/", $uri)) { kleo_check_access('add_media', $restrict_options); } elseif (preg_match("/^\\/" . $members_slug . "\\/" . bp_get_loggedin_user_username() . "\\/messages\\/compose\\/?/", $uri) || preg_match("/^\\/" . $members_slug . "\\/" . bp_get_loggedin_user_username() . "\\/messages\\/view\\/[" . $allowed_chars . "\\/]?\\/?/", $uri)) { kleo_check_access('pm', $restrict_options); } /* Add other restrictions for own profile */ do_action('kleo_pmro_extra_restriction_before_my_profile', $restrict_options); //allow me to view other parts of my profile if (bp_is_my_profile()) { return false; } } //loop trought remaining restrictions foreach ($final as $rk => $rv) { if (preg_match($rk, $uri)) { kleo_check_access($rv['name'], $restrict_options); } } do_action('kleo_pmro_extra_restriction_rules', $restrict_options); }
<?php } ?> <?php do_action('bp_before_activity_type_tab_mentions'); ?> <li id="activity-mentions"><a href="<?php echo bp_loggedin_user_domain() . BP_ACTIVITY_SLUG . '/mentions/'; ?> " title="<?php _e('Activity that I have been mentioned in.', 'buddypress'); ?> "><?php printf(__('@%s Mentions', 'buddypress'), bp_get_loggedin_user_username()); if (bp_get_total_mention_count_for_user(bp_loggedin_user_id())) { ?> <strong><?php printf(__('(%s new)', 'buddypress'), bp_get_total_mention_count_for_user(bp_loggedin_user_id())); ?> </strong><?php } ?> </a></li> <?php } ?> <?php
/** * Format @mention notifications to redirect to the wall * @param [type] $notification [description] * @return [type] [description] */ function buddyboss_format_mention_notification($notification, $at_mention_link, $total_items, $activity_id, $poster_user_id) { global $wp_admin_bar, $bp; $domain = $bp->loggedin_user->domain; $activity_link = trailingslashit($domain . $bp->activity->slug); $at_mention_link = bp_loggedin_user_domain() . bp_get_activity_slug() . '/mentions/'; $at_mention_title = sprintf(__('@%s Mentions', 'buddyboss'), bp_get_loggedin_user_username()); if ((int) $total_items > 1) { $text = sprintf(__('You have %1$d new mentions', 'buddyboss'), (int) $total_items); } else { $user_fullname = bp_core_get_user_displayname($poster_user_id); $text = sprintf(__('%1$s mentioned you', 'buddyboss'), $user_fullname); } if (is_array($notification)) { $notification['link'] = $activity_link; } else { $notification = '<a href="' . $activity_link . '" title="' . $at_mention_title . '">' . $text . '</a>'; } return $notification; }
<?php if ( function_exists( 'bp_get_total_group_count_for_user' ) ) : ?> <?php if ( bp_get_total_group_count_for_user( bp_loggedin_user_id() ) ) : ?> <li id="activity-groups"><a href="<?php echo bp_loggedin_user_domain() . BP_ACTIVITY_SLUG . '/' . BP_GROUPS_SLUG . '/' ?>" title="<?php _e( 'The activity of groups I am a member of.', 'buddypress' ) ?>"><?php printf( __( 'My Groups (%s)', 'buddypress' ), bp_get_total_group_count_for_user( bp_loggedin_user_id() ) ) ?></a></li> <?php endif; ?> <?php endif; ?> <?php do_action( 'bp_before_activity_type_tab_favorites' ) ?> <?php if ( bp_get_total_favorite_count_for_user( bp_loggedin_user_id() ) ) : ?> <li id="activity-favorites"><a href="<?php echo bp_loggedin_user_domain() . BP_ACTIVITY_SLUG . '/favorites/' ?>" title="<?php _e( "The activity I've marked as a favorite.", 'buddypress' ) ?>"><?php printf( __( 'My Favorites (<span>%s</span>)', 'buddypress' ), bp_get_total_favorite_count_for_user( bp_loggedin_user_id() ) ) ?></a></li> <?php endif; ?> <?php do_action( 'bp_before_activity_type_tab_mentions' ) ?> <li id="activity-mentions"><a href="<?php echo bp_loggedin_user_domain() . BP_ACTIVITY_SLUG . '/mentions/' ?>" title="<?php _e( 'Activity that I have been mentioned in.', 'buddypress' ) ?>"><?php printf( __( '@%s Mentions', 'buddypress' ), bp_get_loggedin_user_username() ) ?><?php if ( bp_get_total_mention_count_for_user( bp_loggedin_user_id() ) ) : ?> <strong><?php printf( __( '(%s new)', 'buddypress' ), bp_get_total_mention_count_for_user( bp_loggedin_user_id() ) ) ?></strong><?php endif; ?></a></li> <?php endif; ?> <?php do_action( 'bp_activity_type_tabs' ) ?> </ul> </div><!-- .item-list-tabs --> <div class="item-list-tabs no-ajax" id="subnav"> <ul> <li class="feed"><a href="<?php bp_sitewide_activity_feed_link() ?>" title="<?php _e( 'RSS Feed', 'buddypress' ); ?>"><?php _e( 'RSS', 'buddypress' ) ?></a></li> <?php do_action( 'bp_activity_syndication_options' ) ?> <li id="activity-filter-select" class="last"> <select>
/** * Prepare the metadata sent to Fedora and Solr from $_POST input. * * @param array $nextPids Array of fedora pids. * @return array metadata content */ function prepare_metadata($nextPids) { global $fedora_api; /** * Prepare the metadata to be sent to Fedora and Solr. */ $metadata = array(); $metadata['id'] = $nextPids[0]; $metadata['pid'] = $nextPids[0]; $metadata['creator'] = 'HumCORE'; $metadata['title'] = wp_strip_all_tags(stripslashes($_POST['deposit-title-unchanged'])); $metadata['title_unchanged'] = wp_kses(stripslashes($_POST['deposit-title-unchanged']), array('b' => array(), 'em' => array(), 'strong' => array())); $metadata['abstract'] = wp_strip_all_tags(stripslashes($_POST['deposit-abstract-unchanged'])); $metadata['abstract_unchanged'] = wp_kses(stripslashes($_POST['deposit-abstract-unchanged']), array('b' => array(), 'em' => array(), 'strong' => array())); $metadata['genre'] = sanitize_text_field($_POST['deposit-genre']); $metadata['committee_deposit'] = sanitize_text_field($_POST['deposit-on-behalf-flag']); $metadata['committee_id'] = sanitize_text_field($_POST['deposit-committee']); $metadata['submitter'] = bp_loggedin_user_id(); /** * Get committee or author metadata. */ if ('yes' === $metadata['committee_deposit']) { $committee = groups_get_group(array('group_id' => $metadata['committee_id'])); $metadata['organization'] = 'MLA'; $metadata['authors'][] = array('fullname' => $committee->name, 'given' => '', 'family' => '', 'uni' => $committee->slug, 'role' => 'creator', 'affiliation' => 'MLA'); } else { $user_id = bp_loggedin_user_id(); $user_firstname = get_the_author_meta('first_name', $user_id); $user_lastname = get_the_author_meta('last_name', $user_id); $user_affiliation = bp_get_profile_field_data(array('field' => 2, 'user_id' => $user_id)); $metadata['organization'] = $user_affiliation; $metadata['authors'][] = array('fullname' => bp_get_loggedin_user_fullname(), 'given' => $user_firstname, 'family' => $user_lastname, 'uni' => bp_get_loggedin_user_username(), 'role' => 'author', 'affiliation' => $user_affiliation); } if ((empty($metadata['committee_deposit']) || 'yes' !== $metadata['committee_deposit']) && (!empty($_POST['deposit-other-authors-first-name']) && !empty($_POST['deposit-other-authors-last-name']))) { $other_authors = array_map(function ($first_name, $last_name) { return array('first_name' => sanitize_text_field($first_name), 'last_name' => sanitize_text_field($last_name)); }, $_POST['deposit-other-authors-first-name'], $_POST['deposit-other-authors-last-name']); foreach ($other_authors as $author_array) { if (!empty($author_array['first_name']) && !empty($author_array['last_name'])) { $mla_user = bp_activity_find_mentions($author_array['first_name'] . $author_array['last_name']); if (!empty($mla_user)) { foreach ($mla_user as $mla_userid => $mla_username) { break; } // Only one, right? $author_name = bp_core_get_user_displayname($mla_userid); $author_firstname = get_the_author_meta('first_name', $mla_userid); $author_lastname = get_the_author_meta('last_name', $mla_userid); $author_affiliation = bp_get_profile_field_data(array('field' => 2, 'user_id' => $mla_userid)); $author_uni = $mla_username; } else { $author_firstname = $author_array['first_name']; $author_lastname = $author_array['last_name']; $author_name = trim($author_firstname . ' ' . $author_lastname); $author_uni = ''; $author_affiliation = ''; } $metadata['authors'][] = array('fullname' => $author_name, 'given' => $author_firstname, 'family' => $author_lastname, 'uni' => $author_uni, 'role' => 'author', 'affiliation' => $author_affiliation); } } } usort($metadata['authors'], function ($a, $b) { return strcasecmp($a['family'], $b['family']); }); /** * Format author info for solr. */ $metadata['author_info'] = humcore_deposits_format_author_info($metadata['authors']); if (!empty($metadata['genre']) && in_array($metadata['genre'], array('Dissertation', 'Technical Report', 'Thesis')) && !empty($_POST['deposit-institution'])) { $metadata['institution'] = sanitize_text_field($_POST['deposit-institution']); } else { if (!empty($metadata['genre']) && in_array($metadata['genre'], array('Dissertation', 'Technical Report', 'Thesis')) && empty($_POST['deposit-institution'])) { $metadata['institution'] = $metadata['organization']; } } if (!empty($metadata['genre']) && ('Conference proceeding' == $metadata['genre'] || 'Conference paper' == $metadata['genre']) && !empty($_POST['deposit-conference-title'])) { $metadata['conference_title'] = sanitize_text_field($_POST['deposit-conference-title']); $metadata['conference_organization'] = sanitize_text_field($_POST['deposit-organization']); } $metadata['group'] = array(); if (!empty($_POST['deposit-group'])) { foreach ($_POST['deposit-group'] as $group_id) { $group = groups_get_group(array('group_id' => sanitize_text_field($group_id))); $metadata['group'][] = $group->name; $metadata['group_ids'][] = $group_id; } } $metadata['subject'] = array(); if (!empty($_POST['deposit-subject'])) { foreach ($_POST['deposit-subject'] as $subject) { $metadata['subject'][] = sanitize_text_field(stripslashes($subject)); // Subject ids will be set later. } } $metadata['keyword'] = array(); if (!empty($_POST['deposit-keyword'])) { foreach ($_POST['deposit-keyword'] as $keyword) { $metadata['keyword'][] = sanitize_text_field(stripslashes($keyword)); // Keyword ids will be set later. } } $metadata['type_of_resource'] = sanitize_text_field($_POST['deposit-resource-type']); $metadata['language'] = 'English'; $metadata['notes'] = sanitize_text_field(stripslashes($_POST['deposit-notes-unchanged'])); // Where do they go in MODS? $metadata['notes_unchanged'] = wp_kses(stripslashes($_POST['deposit-notes-unchanged']), array('b' => array(), 'em' => array(), 'strong' => array())); $metadata['type_of_license'] = sanitize_text_field($_POST['deposit-license-type']); $metadata['record_content_source'] = 'HumCORE'; $metadata['record_creation_date'] = gmdate('Y-m-d\\TH:i:s\\Z'); $metadata['member_of'] = $fedora_api->collectionPid; if (!empty($_POST['deposit-publication-type'])) { $metadata['publication-type'] = sanitize_text_field($_POST['deposit-publication-type']); // Not stored in solr. } else { $metadata['publication-type'] = 'none'; } if ('journal-article' == $metadata['publication-type']) { $metadata['publisher'] = sanitize_text_field($_POST['deposit-journal-publisher']); $metadata['date'] = sanitize_text_field($_POST['deposit-journal-publish-date']); if (!empty($metadata['date'])) { $temp_date = preg_replace('~^(winter(?:/|)|spring(?:/|)|summer(?:/|)|fall(?:/|)|autumn(?:/|))+\\s(\\d{4})$~i', 'Jan $2', $metadata['date']); $metadata['date_issued'] = date('Y', strtotime(preg_replace('/^(\\d{4})$/', 'Jan $1', $temp_date))); } else { $metadata['date_issued'] = date('Y', strtotime('today')); } $metadata['book_journal_title'] = sanitize_text_field($_POST['deposit-journal-title']); $metadata['volume'] = sanitize_text_field($_POST['deposit-journal-volume']); $metadata['issue'] = sanitize_text_field($_POST['deposit-journal-issue']); $metadata['start_page'] = sanitize_text_field($_POST['deposit-journal-start-page']); $metadata['end_page'] = sanitize_text_field($_POST['deposit-journal-end-page']); $metadata['issn'] = sanitize_text_field($_POST['deposit-journal-issn']); $metadata['doi'] = sanitize_text_field($_POST['deposit-journal-doi']); } elseif ('book' == $metadata['publication-type']) { $metadata['publisher'] = sanitize_text_field($_POST['deposit-book-publisher']); $metadata['date'] = sanitize_text_field($_POST['deposit-book-publish-date']); if (!empty($metadata['date'])) { $temp_date = preg_replace('~^(winter(?:/|)|spring(?:/|)|summer(?:/|)|fall(?:/|)|autumn(?:/|))+\\s(\\d{4})$~i', 'Jan $2', $metadata['date']); $metadata['date_issued'] = date('Y', strtotime(preg_replace('/^(\\d{4})$/', 'Jan $1', $temp_date))); } else { $metadata['date_issued'] = date('Y', strtotime('today')); } $metadata['book_journal_title'] = sanitize_text_field($_POST['deposit-book-title']); $metadata['book_author'] = sanitize_text_field($_POST['deposit-book-author']); $metadata['chapter'] = sanitize_text_field($_POST['deposit-book-chapter']); $metadata['start_page'] = sanitize_text_field($_POST['deposit-book-start-page']); $metadata['end_page'] = sanitize_text_field($_POST['deposit-book-end-page']); $metadata['isbn'] = sanitize_text_field($_POST['deposit-book-isbn']); $metadata['doi'] = sanitize_text_field($_POST['deposit-book-doi']); } elseif ('conference-proceeding' == $metadata['publication-type']) { $metadata['publisher'] = sanitize_text_field($_POST['deposit-proceeding-publisher']); $metadata['date'] = sanitize_text_field($_POST['deposit-proceeding-publish-date']); if (!empty($metadata['date'])) { $temp_date = preg_replace('~^(winter(?:/|)|spring(?:/|)|summer(?:/|)|fall(?:/|)|autumn(?:/|))+\\s(\\d{4})$~i', 'Jan $2', $metadata['date']); $metadata['date_issued'] = date('Y', strtotime(preg_replace('/^(\\d{4})$/', 'Jan $1', $temp_date))); } else { $metadata['date_issued'] = date('Y', strtotime('today')); } $metadata['book_journal_title'] = sanitize_text_field($_POST['deposit-proceeding-title']); $metadata['start_page'] = sanitize_text_field($_POST['deposit-proceeding-start-page']); $metadata['end_page'] = sanitize_text_field($_POST['deposit-proceeding-end-page']); $metadata['doi'] = sanitize_text_field($_POST['deposit-proceeding-doi']); } elseif ('none' == $metadata['publication-type']) { $metadata['date'] = sanitize_text_field($_POST['deposit-non-published-date']); if (!empty($metadata['date'])) { $temp_date = preg_replace('~^(winter(?:/|)|spring(?:/|)|summer(?:/|)|fall(?:/|)|autumn(?:/|))+\\s(\\d{4})$~i', 'Jan $2', $metadata['date']); $metadata['date_issued'] = date('Y', strtotime(preg_replace('/^(\\d{4})$/', 'Jan $1', $temp_date))); } else { $metadata['date_issued'] = date('Y', strtotime('today')); } } /** * Mint and reserve a DOI. */ $creators = array(); foreach ($metadata['authors'] as $author) { if ('author' === $author['role'] && !empty($author['fullname'])) { $creators[] = $author['fullname']; } } $creator_list = implode(',', $creators); $deposit_doi = humcore_create_handle($metadata['title'], $nextPids[0], $creator_list, $metadata['genre'], $metadata['date_issued'], $metadata['publisher']); if (!$deposit_doi) { $metadata['handle'] = sprintf(bp_get_root_domain() . '/deposits/item/%s/', $nextPids[0]); $metadata['deposit_doi'] = ''; // Not stored in solr. } else { $metadata['handle'] = 'http://dx.doi.org/' . str_replace('doi:', '', $deposit_doi); $metadata['deposit_doi'] = $deposit_doi; // Not stored in solr. } return $metadata; }