Skip to:
Content

bbPress.org


Ignore:
Timestamp:
01/23/2018 10:24:15 PM (8 years ago)
Author:
johnjamesjacoby
Message:

Admin Notices: remove create_function() usage from tools feedback.

This change removes the last remaining deprecated function call for full PHP 7.2 support, while also making admin area notices a bit more flexible in the process.

Notices are now stored in an bbpress()->admin->notices array, and are output to the page via the bbp_admin_notices sub-action. This ensures that they'll only be made visible when bbPress is active, and keeps them contained to places where bbPress is already hooked in.

It was also previously possible for any user to dismiss the database upgrade notice, even if they were not capable of seeing it, so this is now fixed as well.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/includes/admin/tools/common.php

    r6704 r6771  
    6262 */
    6363function bbp_admin_tools_feedback( $message, $class = false, $is_dismissible = true ) {
    64 
    65     // One message as string
    66     if ( is_string( $message ) ) {
    67         $message       = '<p>' . $message . '</p>';
    68         $default_class ='updated';
    69 
    70     // Messages as objects
    71     } elseif ( is_wp_error( $message ) ) {
    72         $errors  = $message->get_error_messages();
    73 
    74         switch ( count( $errors ) ) {
    75             case 0:
    76                 return false;
    77 
    78             case 1:
    79                 $message = '<p>' . $errors[0] . '</p>';
    80                 break;
    81 
    82             default:
    83                 $message = '<ul>' . "\n\t" . '<li>' . implode( '</li>' . "\n\t" . '<li>', $errors ) . '</li>' . "\n" . '</ul>';
    84                 break;
    85         }
    86 
    87         $default_class = 'is-error';
    88 
    89     // Message is an unknown format, so bail
    90     } else {
    91         return false;
    92     }
    93 
    94     // CSS Classes
    95     $classes = ! empty( $class )
    96         ? array( $class )
    97         : array( $default_class );
    98 
    99     // Add dismissible class
    100     if ( ! empty( $is_dismissible ) ) {
    101         array_push( $classes, 'is-dismissible' );
    102     }
    103 
    104     // Assemble the message
    105     $message = '<div id="message" class="notice ' . implode( ' ', array_map( 'esc_attr', $classes ) ) . '">' . $message . '</div>';
    106     $message = str_replace( "'", "\'", $message );
    107 
    108     // Ugh
    109     $lambda  = create_function( '', "echo '$message';" );
    110     add_action( 'admin_notices', $lambda );
    111 
    112     return $lambda;
     64    return bbp_admin()->add_notice( $message, $class, $is_dismissible );
    11365}
    11466
Note: See TracChangeset for help on using the changeset viewer.