Forums

The forums ran from 2008-2020 and are now closed and viewable here as an archive.

Home Forums JavaScript How to add post notification to wordpress plugin named buddypress

  • This topic is empty.
Viewing 1 post (of 1 total)
  • Author
    Posts
  • #276765
    Erik Modin
    Participant

    Hi! I am at the moment trying to add a notification for the notification system in the wordpress plugin called buddypress. i am pretty new to some of the coding language used in the plugin and there are no guides out there which is working for me so that is why I am here asking for help. Here is a link to the buddypress plugin guide on how to add the notification but I do not understand it so if you could please help me it would help so much!

    link —>
    https://codex.buddypress.org/developer/function-examples/bp_notifications_add_notification/#source-file

    Here is the file code at where the function need to be added to —>

    0,
    ‘item_id’ => 0,
    ‘secondary_item_id’ => 0,
    ‘component_name’ => ”,
    ‘component_action’ => ”,
    ‘date_notified’ => bp_core_current_time(),
    ‘is_new’ => 1,
    ‘allow_duplicate’ => false,
    ), ‘notifications_add_notification’ );

    // Check for existing duplicate notifications.
    if ( ! $r['allow_duplicate'] ) {
        // Date_notified, allow_duplicate don't count toward
        // duplicate status.
        $existing = BP_Notifications_Notification::get( array(
            'user_id'           => $r['user_id'],
            'item_id'           => $r['item_id'],
            'secondary_item_id' => $r['secondary_item_id'],
            'component_name'    => $r['component_name'],
            'component_action'  => $r['component_action'],
            'is_new'            => $r['is_new'],
        ) );
    
        if ( ! empty( $existing ) ) {
            return false;
        }
    }
    
    // Setup the new notification.
    $notification                    = new BP_Notifications_Notification;
    $notification->user_id           = $r['user_id'];
    $notification->item_id           = $r['item_id'];
    $notification->secondary_item_id = $r['secondary_item_id'];
    $notification->component_name    = $r['component_name'];
    $notification->component_action  = $r['component_action'];
    $notification->date_notified     = $r['date_notified'];
    $notification->is_new            = $r['is_new'];
    
    // Save the new notification.
    return $notification->save();
    

    }

    /**
    * Get a specific notification by its ID.
    *
    * @since 1.9.0
    *
    * @param int $id ID of the notification.
    * @return BP_Notifications_Notification Notification object for ID specified.
    */
    function bp_notifications_get_notification( $id ) {
    return new BP_Notifications_Notification( $id );
    }

    /**
    * Delete a specific notification by its ID.
    *
    * @since 1.9.0
    *
    * @param int $id ID of the notification to delete.
    * @return false|int True on success, false on failure.
    */
    function bp_notifications_delete_notification( $id ) {
    if ( ! bp_notifications_check_notification_access( bp_displayed_user_id(), $id ) ) {
    return false;
    }

    return BP_Notifications_Notification::delete( array( 'id' => $id ) );
    

    }

    /**
    * Mark notification read/unread for a user by ID.
    *
    * Used when clearing out notifications for a specific notification item.
    *
    * @since 1.9.0
    *
    * @param int $id ID of the notification.
    * @param int|bool $is_new 0 for read, 1 for unread.
    * @return false|int True on success, false on failure.
    */
    function bp_notifications_mark_notification( $id, $is_new = false ) {
    if ( ! bp_notifications_check_notification_access( bp_displayed_user_id(), $id ) ) {
    return false;
    }

    return BP_Notifications_Notification::update(
        array( 'is_new' => $is_new ),
        array( 'id'     => $id     )
    );
    

    }

    /**
    * Get all notifications for a user and cache them.
    *
    * @since 2.1.0
    *
    * @param int $user_id ID of the user whose notifications are being fetched.
    * @return array $notifications Array of notifications for user.
    */
    function bp_notifications_get_all_notifications_for_user( $user_id = 0 ) {

    // Default to displayed user if no ID is passed.
    if ( empty( $user_id ) ) {
        $user_id = ( bp_displayed_user_id() ) ? bp_displayed_user_id() : bp_loggedin_user_id();
    }
    
    // Get notifications out of the cache, or query if necessary.
    $notifications = wp_cache_get( 'all_for_user_' . $user_id, 'bp_notifications' );
    if ( false === $notifications ) {
        $notifications = BP_Notifications_Notification::get( array(
            'user_id' => $user_id
        ) );
        wp_cache_set( 'all_for_user_' . $user_id, $notifications, 'bp_notifications' );
    }
    
    /**
     * Filters all notifications for a user.
     *
     * @since 2.1.0
     *
     * @param array $notifications Array of notifications for user.
     * @param int   $user_id       ID of the user being fetched.
     */
    return apply_filters( 'bp_notifications_get_all_notifications_for_user', $notifications, $user_id );
    

    }

    /**
    * Get a user’s unread notifications, grouped by component and action.
    *
    * This function returns a list of notifications collapsed by component + action.
    * See BP_Notifications_Notification::get_grouped_notifications_for_user() for
    * more details.
    *
    * @since 3.0.0
    *
    * @param int $user_id ID of the user whose notifications are being fetched.
    * @return array $notifications
    */
    function bp_notifications_get_grouped_notifications_for_user( $user_id = 0 ) {
    if ( empty( $user_id ) ) {
    $user_id = ( bp_displayed_user_id() ) ? bp_displayed_user_id() : bp_loggedin_user_id();
    }

    $notifications = wp_cache_get( $user_id, 'bp_notifications_grouped_notifications' );
    if ( false === $notifications ) {
        $notifications = BP_Notifications_Notification::get_grouped_notifications_for_user( $user_id );
        wp_cache_set( $user_id, $notifications, 'bp_notifications_grouped_notifications' );
    }
    
    return $notifications;
    

    }

    /**
    * Get notifications for a specific user.
    *
    * @since 1.9.0
    *
    * @param int $user_id ID of the user whose notifications are being fetched.
    * @param string $format Format of the returned values. ‘string’ returns HTML,
    * while ‘object’ returns a structured object for parsing.
    * @return mixed Object or array on success, false on failure.
    */
    function bp_notifications_get_notifications_for_user( $user_id, $format = ‘string’ ) {
    $bp = buddypress();

    $notifications = bp_notifications_get_grouped_notifications_for_user( $user_id );
    
    // Calculate a renderable output for each notification type.
    foreach ( $notifications as $notification_item ) {
    
        $component_name = $notification_item->component_name;
        // We prefer that extended profile component-related notifications use
        // the component_name of 'xprofile'. However, the extended profile child
        // object in the $bp object is keyed as 'profile', which is where we need
        // to look for the registered notification callback.
        if ( 'xprofile' == $notification_item->component_name ) {
            $component_name = 'profile';
        }
    
        // Callback function exists.
        if ( isset( $bp->{$component_name}->notification_callback ) && is_callable( $bp->{$component_name}->notification_callback ) ) {
    
            // Function should return an object.
            if ( 'object' === $format ) {
    
                // Retrieve the content of the notification using the callback.
                $content = call_user_func( $bp->{$component_name}->notification_callback, $notification_item->component_action, $notification_item->item_id, $notification_item->secondary_item_id, $notification_item->total_count, 'array', $notification_item->id );
    
                // Create the object to be returned.
                $notification_object = $notification_item;
    
                // Minimal backpat with non-compatible notification
                // callback functions.
                if ( is_string( $content ) ) {
                    $notification_object->content = $content;
                    $notification_object->href    = bp_loggedin_user_domain();
                } else {
                    $notification_object->content = $content['text'];
                    $notification_object->href    = $content['link'];
                }
    
                $renderable[] = $notification_object;
    
                // Return an array of content strings.
            } else {
                $content      = call_user_func( $bp->{$component_name}->notification_callback, $notification_item->component_action, $notification_item->item_id, $notification_item->secondary_item_id, $notification_item->total_count, 'string', $notification_item->id );
                $renderable[] = $content;
            }
    
            // @deprecated format_notification_function - 1.5
        } elseif ( isset( $bp->{$component_name}->format_notification_function ) && function_exists( $bp->{$component_name}->format_notification_function ) ) {
            $renderable[] = call_user_func( $bp->{$component_name}->notification_callback, $notification_item->component_action, $notification_item->item_id, $notification_item->secondary_item_id, $notification_item->total_count );
    
            // Allow non BuddyPress components to hook in.
        } else {
    
            // The array to reference with apply_filters_ref_array().
            $ref_array = array(
                $notification_item->component_action,
                $notification_item->item_id,
                $notification_item->secondary_item_id,
                $notification_item->total_count,
                $format,
                $notification_item->component_action, // Duplicated so plugins can check the canonical action name.
                $component_name,
                $notification_item->id,
            );
    
            // Function should return an object.
            if ( 'object' === $format ) {
    
                /**
                 * Filters the notification content for notifications created by plugins.
                 * If your plugin extends the {@link BP_Component} class, you should use the
                 * 'notification_callback' parameter in your extended
                 * {@link BP_Component::setup_globals()} method instead.
                 *
                 * @since 1.9.0
                 * @since 2.6.0 Added $component_action_name, $component_name, $id as parameters.
                 *
                 * @param string $content               Component action. Deprecated. Do not do checks against this! Use
                 *                                      the 6th parameter instead - $component_action_name.
                 * @param int    $item_id               Notification item ID.
                 * @param int    $secondary_item_id     Notification secondary item ID.
                 * @param int    $action_item_count     Number of notifications with the same action.
                 * @param string $format                Format of return. Either 'string' or 'object'.
                 * @param string $component_action_name Canonical notification action.
                 * @param string $component_name        Notification component ID.
                 * @param int    $id                    Notification ID.
                 *
                 * @return string|array If $format is 'string', return a string of the notification content.
                 *                      If $format is 'object', return an array formatted like:
                 *                      array( 'text' => 'CONTENT', 'link' => 'LINK' )
                 */
                $content = apply_filters_ref_array( 'bp_notifications_get_notifications_for_user', $ref_array );
    
                // Create the object to be returned.
                $notification_object = $notification_item;
    
                // Minimal backpat with non-compatible notification
                // callback functions.
                if ( is_string( $content ) ) {
                    $notification_object->content = $content;
                    $notification_object->href    = bp_loggedin_user_domain();
                } else {
                    $notification_object->content = $content['text'];
                    $notification_object->href    = $content['link'];
                }
    
                $renderable[] = $notification_object;
    
                // Return an array of content strings.
            } else {
    
                /** This filters is documented in bp-notifications/bp-notifications-functions.php */
                $renderable[] = apply_filters_ref_array( 'bp_notifications_get_notifications_for_user', $ref_array );
            }
        }
    }
    
    // If renderable is empty array, set to false.
    if ( empty( $renderable ) ) {
        $renderable = false;
    }
    
    /**
     * Filters the final array of notifications to be displayed for a user.
     *
     * @since 1.6.0
     *
     * @param array|bool $renderable Array of notifications to render or false if no notifications.
     * @param int        $user_id    ID of the user whose notifications are being displayed.
     * @param string     $format     Display format requested for the notifications.
     */
    return apply_filters( 'bp_core_get_notifications_for_user', $renderable, $user_id, $format );
    

    }

    /** Delete ********************************************************************/

    /**
    * Delete notifications for a user by type.
    *
    * Used when clearing out notifications for a specific component when the user
    * has visited that component.
    *
    * @since 1.9.0
    *
    * @param int $user_id ID of the user whose notifications are being deleted.
    * @param string $component_name Name of the associated component.
    * @param string $component_action Name of the associated action.
    * @return int|false True on success, false on failure.
    */
    function bp_notifications_delete_notifications_by_type( $user_id, $component_name, $component_action ) {
    return BP_Notifications_Notification::delete( array(
    ‘user_id’ => $user_id,
    ‘component_name’ => $component_name,
    ‘component_action’ => $component_action,
    ) );
    }

    /**
    * Delete notifications for an item ID.
    *
    * Used when clearing out notifications for a specific component when the user
    * has visited that component.
    *
    * @since 1.9.0
    *
    * @param int $user_id ID of the user whose notifications are being deleted.
    * @param int $item_id ID of the associated item.
    * @param string $component_name Name of the associated component.
    * @param string $component_action Name of the associated action.
    * @param int|bool $secondary_item_id ID of the secondary associated item.
    * @return int|false True on success, false on failure.
    */
    function bp_notifications_delete_notifications_by_item_id( $user_id, $item_id, $component_name, $component_action, $secondary_item_id = false ) {
    return BP_Notifications_Notification::delete( array(
    ‘user_id’ => $user_id,
    ‘item_id’ => $item_id,
    ‘secondary_item_id’ => $secondary_item_id,
    ‘component_name’ => $component_name,
    ‘component_action’ => $component_action,
    ) );
    }

    /**
    * Delete all notifications by type.
    *
    * Used when clearing out notifications for an entire component.
    *
    * @since 1.9.0
    *
    * @param int $item_id ID of the user whose notifications are being deleted.
    * @param string $component_name Name of the associated component.
    * @param string|bool $component_action Optional. Name of the associated action.
    * @param int|bool $secondary_item_id Optional. ID of the secondary associated item.
    * @return int|false True on success, false on failure.
    */
    function bp_notifications_delete_all_notifications_by_type( $item_id, $component_name, $component_action = false, $secondary_item_id = false ) {
    return BP_Notifications_Notification::delete( array(
    ‘item_id’ => $item_id,
    ‘secondary_item_id’ => $secondary_item_id,
    ‘component_name’ => $component_name,
    ‘component_action’ => $component_action,
    ) );
    }

    /**
    * Delete all notifications from a user.
    *
    * Used when clearing out all notifications for a user, when deleted or spammed.
    *
    * @todo This function assumes that items with the user_id in the item_id slot
    * are associated with that user. However, this will only be true with
    * certain components (such as Friends). Use with caution!
    *
    * @since 1.9.0
    *
    * @param int $user_id ID of the user whose associated items are being deleted.
    * @param string $component_name Name of the associated component.
    * @param string $component_action Name of the associated action.
    * @return int|false True on success, false on failure.
    */
    function bp_notifications_delete_notifications_from_user( $user_id, $component_name, $component_action ) {
    return BP_Notifications_Notification::delete( array(
    ‘item_id’ => $user_id,
    ‘component_name’ => $component_name,
    ‘component_action’ => $component_action,
    ) );
    }

    /**
    * Delete a user’s notifications when the user is deleted.
    *
    * @since 2.5.0
    *
    * @param int $user_id ID of the user who is about to be deleted.
    * @return int|false The number of rows deleted, or false on error.
    */
    function bp_notifications_delete_notifications_on_user_delete( $user_id ) {
    return BP_Notifications_Notification::delete( array(
    ‘user_id’ => $user_id,
    ‘item_id’ => false,
    ‘secondary_item_id’ => false,
    ‘component_action’ => false,
    ‘component_name’ => false,
    ) );
    }
    add_action( ‘wpmu_delete_user’, ‘bp_notifications_delete_notifications_on_user_delete’ );
    add_action( ‘delete_user’, ‘bp_notifications_delete_notifications_on_user_delete’ );

    /** Mark **********************************************************************/

    /**
    * Mark notifications read/unread for a user by type.
    *
    * Used when clearing out notifications for a specific component when the user
    * has visited that component.
    *
    * @since 1.9.0
    *
    * @param int $user_id ID of the user whose notifications are being deleted.
    * @param string $component_name Name of the associated component.
    * @param string $component_action Name of the associated action.
    * @param int|bool $is_new 0 for read, 1 for unread.
    * @return int|false True on success, false on failure.
    */
    function bp_notifications_mark_notifications_by_type( $user_id, $component_name, $component_action, $is_new = false ) {
    return BP_Notifications_Notification::update(
    array(
    ‘is_new’ => $is_new
    ),
    array(
    ‘user_id’ => $user_id,
    ‘component_name’ => $component_name,
    ‘component_action’ => $component_action
    )
    );
    }

    /**
    * Mark notifications read/unread for an item ID.
    *
    * Used when clearing out notifications for a specific component when the user
    * has visited that component.
    *
    * @since 1.9.0
    *
    * @param int $user_id ID of the user whose notifications are being deleted.
    * @param int $item_id ID of the associated item.
    * @param string $component_name Name of the associated component.
    * @param string $component_action Name of the associated action.
    * @param int|bool $secondary_item_id ID of the secondary associated item.
    * @param int|bool $is_new 0 for read, 1 for unread.
    * @return int|false True on success, false on failure.
    */
    function bp_notifications_mark_notifications_by_item_id( $user_id, $item_id, $component_name, $component_action, $secondary_item_id = false, $is_new = false ) {
    return BP_Notifications_Notification::update(
    array(
    ‘is_new’ => $is_new
    ),
    array(
    ‘user_id’ => $user_id,
    ‘item_id’ => $item_id,
    ‘secondary_item_id’ => $secondary_item_id,
    ‘component_name’ => $component_name,
    ‘component_action’ => $component_action
    )
    );
    }

    /**
    * Mark all notifications read/unread by type.
    *
    * Used when clearing out notifications for an entire component.
    *
    * @since 1.9.0
    *
    * @param int $item_id ID of the user whose notifications are being deleted.
    * @param string $component_name Name of the associated component.
    * @param string|bool $component_action Optional. Name of the associated action.
    * @param int|bool $secondary_item_id Optional. ID of the secondary associated item.
    * @param int|bool $is_new 0 for read, 1 for unread.
    * @return int|false True on success, false on failure.
    */
    function bp_notifications_mark_all_notifications_by_type( $item_id, $component_name, $component_action = false, $secondary_item_id = false, $is_new = false ) {
    return BP_Notifications_Notification::update(
    array(
    ‘is_new’ => $is_new
    ),
    array(
    ‘item_id’ => $item_id,
    ‘secondary_item_id’ => $secondary_item_id,
    ‘component_name’ => $component_name,
    ‘component_action’ => $component_action
    )
    );
    }

    /**
    * Mark all notifications read/unread from a user.
    *
    * Used when clearing out all notifications for a user, when deleted or spammed.
    *
    * @todo This function assumes that items with the user_id in the item_id slot
    * are associated with that user. However, this will only be true with
    * certain components (such as Friends). Use with caution!
    *
    * @since 1.9.0
    *
    * @param int $user_id ID of the user whose associated items are being deleted.
    * @param string $component_name Name of the associated component.
    * @param string $component_action Name of the associated action.
    * @param int|bool $is_new 0 for read, 1 for unread.
    * @return int|false True on success, false on failure.
    */
    function bp_notifications_mark_notifications_from_user( $user_id, $component_name, $component_action, $is_new = false ) {
    return BP_Notifications_Notification::update(
    array(
    ‘is_new’ => $is_new
    ),
    array(
    ‘item_id’ => $user_id,
    ‘component_name’ => $component_name,
    ‘component_action’ => $component_action
    )
    );
    }

    /** Helpers *******************************************************************/

    /**
    * Check if a user has access to a specific notification.
    *
    * Used before deleting a notification for a user.
    *
    * @since 1.9.0
    *
    * @param int $user_id ID of the user being checked.
    * @param int $notification_id ID of the notification being checked.
    * @return bool True if the notification belongs to the user, otherwise false.
    */
    function bp_notifications_check_notification_access( $user_id, $notification_id ) {
    return (bool) BP_Notifications_Notification::check_access( $user_id, $notification_id );
    }

    /**
    * Get a count of unread notification items for a user.
    *
    * @since 1.9.0
    *
    * @param int $user_id ID of the user whose unread notifications are being
    * counted.
    * @return int Unread notification count.
    */
    function bp_notifications_get_unread_notification_count( $user_id = 0 ) {
    if ( empty( $user_id ) ) {
    $user_id = ( bp_displayed_user_id() ) ? bp_displayed_user_id() : bp_loggedin_user_id();
    }

    $count = wp_cache_get( $user_id, 'bp_notifications_unread_count' );
    if ( false === $count ) {
        $count = BP_Notifications_Notification::get_total_count( array(
            'user_id' => $user_id,
            'is_new'  => true,
        ) );
        wp_cache_set( $user_id, $count, 'bp_notifications_unread_count' );
    }
    
    /**
     * Filters the count of unread notification items for a user.
     *
     * @since 1.9.0
     * @since 2.7.0 Added user ID parameter.
     *
     * @param int $count   Count of unread notification items for a user.
     * @param int $user_id User ID for notifications count.
     */
    return apply_filters( 'bp_notifications_get_total_notification_count', (int) $count, $user_id );
    

    }

    /**
    * Return an array of component names that are currently active and have
    * registered Notifications callbacks.
    *
    * @since 1.9.1
    *
    * @see http://buddypress.trac.wordpress.org/ticket/5300
    *
    * @return array $component_names Array of registered components.
    */
    function bp_notifications_get_registered_components() {

    // Load BuddyPress.
    $bp = buddypress();
    
    // Setup return value.
    $component_names = array();
    
    // Get the active components.
    $active_components = array_keys( $bp->active_components );
    
    // Loop through components, look for callbacks, add to return value.
    foreach ( $active_components as $component ) {
        if ( !empty( $bp->$component->notification_callback ) ) {
            $component_names[] = $component;
        }
        // The extended profile component is identified in the active_components array as 'xprofile'.
        // However, the extended profile child object has the key 'profile' in the $bp object.
        if ( 'xprofile' == $component && ! empty( $bp->profile->notification_callback ) ) {
            $component_names[] = $component;
        }
    }
    
    /**
     * Filters active components with registered notifications callbacks.
     *
     * @since 1.9.1
     *
     * @param array $component_names   Array of registered component names.
     * @param array $active_components Array of active components.
     */
    return apply_filters( 'bp_notifications_get_registered_components', $component_names, $active_components );
    

    }

    /**
    * Catch and route the ‘settings’ notifications screen.
    *
    * This is currently unused.
    *
    * @since 1.9.0
    */
    function bp_notifications_screen_settings() {}

    /** Meta **********************************************************************/

    /**
    * Delete a meta entry from the DB for a notification item.
    *
    * @since 2.3.0
    *
    * @global object $wpdb WordPress database access object.
    *
    * @param int $notification_id ID of the notification item whose metadata is being deleted.
    * @param string $meta_key Optional. The key of the metadata being deleted. If
    * omitted, all metadata associated with the notification
    * item will be deleted.
    * @param string $meta_value Optional. If present, the metadata will only be
    * deleted if the meta_value matches this parameter.
    * @param bool $delete_all Optional. If true, delete matching metadata entries
    * for all objects, ignoring the specified object_id. Otherwise,
    * only delete matching metadata entries for the specified
    * notification item. Default: false.
    * @return bool True on success, false on failure.
    */
    function bp_notifications_delete_meta( $notification_id, $meta_key = ”, $meta_value = ”, $delete_all = false ) {

    // Legacy - if no meta_key is passed, delete all for the item.
    if ( empty( $meta_key ) ) {
        $all_meta = bp_notifications_get_meta( $notification_id );
        $keys     = ! empty( $all_meta )
            ? array_keys( $all_meta )
            : array();
    
        // With no meta_key, ignore $delete_all.
        $delete_all = false;
    } else {
        $keys = array( $meta_key );
    }
    
    $retval = true;
    
    add_filter( 'query', 'bp_filter_metaid_column_name' );
    foreach ( $keys as $key ) {
        $retval = delete_metadata( 'notification', $notification_id, $key, $meta_value, $delete_all );
    }
    remove_filter( 'query', 'bp_filter_metaid_column_name' );
    
    return $retval;
    

    }

    /**
    * Get metadata for a given notification item.
    *
    * @since 2.3.0
    *
    * @param int $notification_id ID of the notification item whose metadata is being requested.
    * @param string $meta_key Optional. If present, only the metadata matching
    * that meta key will be returned. Otherwise, all metadata for the
    * notification item will be fetched.
    * @param bool $single Optional. If true, return only the first value of the
    * specified meta_key. This parameter has no effect if meta_key is not
    * specified. Default: true.
    * @return mixed The meta value(s) being requested.
    */
    function bp_notifications_get_meta( $notification_id = 0, $meta_key = ”, $single = true ) {
    add_filter( ‘query’, ‘bp_filter_metaid_column_name’ );
    $retval = get_metadata( ‘notification’, $notification_id, $meta_key, $single );
    remove_filter( ‘query’, ‘bp_filter_metaid_column_name’ );

    /**
     * Filters the metadata for a specified notification item.
     *
     * @since 2.3.0
     *
     * @param mixed  $retval          The meta values for the notification item.
     * @param int    $notification_id ID of the notification item.
     * @param string $meta_key        Meta key for the value being requested.
     * @param bool   $single          Whether to return one matched meta key row or all.
     */
    return apply_filters( 'bp_notifications_get_meta', $retval, $notification_id, $meta_key, $single );
    

    }

    /**
    * Update a piece of notification meta.
    *
    * @since 1.2.0
    *
    * @param int $notification_id ID of the notification item whose metadata is being
    * updated.
    * @param string $meta_key Key of the metadata being updated.
    * @param mixed $meta_value Value to be set.
    * @param mixed $prev_value Optional. If specified, only update existing
    * metadata entries with the specified value.
    * Otherwise, update all entries.
    * @return bool|int Returns false on failure. On successful
    * update of existing metadata, returns true. On
    * successful creation of new metadata, returns
    * the integer ID of the new metadata row.
    */
    function bp_notifications_update_meta( $notification_id, $meta_key, $meta_value, $prev_value = ” ) {
    add_filter( ‘query’, ‘bp_filter_metaid_column_name’ );
    $retval = update_metadata( ‘notification’, $notification_id, $meta_key, $meta_value, $prev_value );
    remove_filter( ‘query’, ‘bp_filter_metaid_column_name’ );

    return $retval;
    

    }

    /**
    * Add a piece of notification metadata.
    *
    * @since 2.3.0
    *
    * @param int $notification_id ID of the notification item.
    * @param string $meta_key Metadata key.
    * @param mixed $meta_value Metadata value.
    * @param bool $unique Optional. Whether to enforce a single metadata value
    * for the given key. If true, and the object already has a value for
    * the key, no change will be made. Default: false.
    * @return int|bool The meta ID on successful update, false on failure.
    */
    function bp_notifications_add_meta( $notification_id, $meta_key, $meta_value, $unique = false ) {
    add_filter( ‘query’, ‘bp_filter_metaid_column_name’ );
    $retval = add_metadata( ‘notification’, $notification_id, $meta_key, $meta_value, $unique );
    remove_filter( ‘query’, ‘bp_filter_metaid_column_name’ );

    return $retval;
    

    }

Viewing 1 post (of 1 total)
  • The forum ‘JavaScript’ is closed to new topics and replies.