Skip to:
Content

bbPress.org

Changeset 5366


Ignore:
Timestamp:
06/05/2014 08:44:55 PM (5 years ago)
Author:
johnjamesjacoby
Message:

Introduce bbp_sanitize_slug() function for sanitizing permalink slugs, and use it as the callback for any slug settings. Props mazengamal. See #2496 (2.5 branch).

Location:
branches/2.5/includes/admin
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • branches/2.5/includes/admin/functions.php

    r5133 r5366  
    136136    // Return post link
    137137    return $post_link;
     138}
     139
     140/**
     141 * Sanitize permalink slugs when saving the settings page.
     142 *
     143 * @since bbPress (r5364)
     144 *
     145 * @param string $slug
     146 * @return string
     147 */
     148function bbp_sanitize_slug( $slug = '' ) {
     149
     150    // Don't allow multiple slashes in a row
     151    $value = preg_replace( '#/+#', '/', str_replace( '#', '', $slug ) );
     152
     153    // Strip out unsafe or unusable chars
     154    $value = esc_url_raw( $value );
     155
     156    // esc_url_raw() adds a scheme via esc_url(), so let's remove it
     157    $value = str_replace( 'http://', '', $value );
     158
     159    // Trim off first and last slashes.
     160    //
     161    // We already prevent double slashing elsewhere, but let's prevent
     162    // accidental poisoning of options values where we can.
     163    $value = ltrim( $value, '/' );
     164    $value = rtrim( $value, '/' );
     165
     166    // Filter the result and return
     167    return apply_filters( 'bbp_sanitize_slug', $value, $slug );
    138168}
    139169
  • branches/2.5/includes/admin/settings.php

    r5243 r5366  
    264264                'title'             => __( 'Forum Root', 'bbpress' ),
    265265                'callback'          => 'bbp_admin_setting_callback_root_slug',
    266                 'sanitize_callback' => 'esc_sql',
     266                'sanitize_callback' => 'bbp_sanitize_slug',
    267267                'args'              => array()
    268268            ),
     
    293293                'title'             => __( 'Forum', 'bbpress' ),
    294294                'callback'          => 'bbp_admin_setting_callback_forum_slug',
    295                 'sanitize_callback' => 'sanitize_title',
     295                'sanitize_callback' => 'bbp_sanitize_slug',
    296296                'args'              => array()
    297297            ),
     
    301301                'title'             => __( 'Topic', 'bbpress' ),
    302302                'callback'          => 'bbp_admin_setting_callback_topic_slug',
    303                 'sanitize_callback' => 'sanitize_title',
     303                'sanitize_callback' => 'bbp_sanitize_slug',
    304304                'args'              => array()
    305305            ),
     
    309309                'title'             => __( 'Topic Tag', 'bbpress' ),
    310310                'callback'          => 'bbp_admin_setting_callback_topic_tag_slug',
    311                 'sanitize_callback' => 'sanitize_title',
     311                'sanitize_callback' => 'bbp_sanitize_slug',
    312312                'args'              => array()
    313313            ),
     
    317317                'title'             => __( 'Topic View', 'bbpress' ),
    318318                'callback'          => 'bbp_admin_setting_callback_view_slug',
    319                 'sanitize_callback' => 'sanitize_title',
     319                'sanitize_callback' => 'bbp_sanitize_slug',
    320320                'args'              => array()
    321321            ),
     
    325325                'title'             => __( 'Reply', 'bbpress' ),
    326326                'callback'          => 'bbp_admin_setting_callback_reply_slug',
    327                 'sanitize_callback' => 'sanitize_title',
     327                'sanitize_callback' => 'bbp_sanitize_slug',
    328328                'args'              => array()
    329329            ),
     
    333333                'title'             => __( 'Search', 'bbpress' ),
    334334                'callback'          => 'bbp_admin_setting_callback_search_slug',
    335                 'sanitize_callback' => 'sanitize_title',
     335                'sanitize_callback' => 'bbp_sanitize_slug',
    336336                'args'              => array()
    337337            )
     
    346346                'title'             => __( 'User Base', 'bbpress' ),
    347347                'callback'          => 'bbp_admin_setting_callback_user_slug',
    348                 'sanitize_callback' => 'sanitize_title',
     348                'sanitize_callback' => 'bbp_sanitize_slug',
    349349                'args'              => array()
    350350            ),
     
    354354                'title'             => __( 'Topics Started', 'bbpress' ),
    355355                'callback'          => 'bbp_admin_setting_callback_topic_archive_slug',
    356                 'sanitize_callback' => 'esc_sql',
     356                'sanitize_callback' => 'bbp_sanitize_slug',
    357357                'args'              => array()
    358358            ),
     
    362362                'title'             => __( 'Replies Created', 'bbpress' ),
    363363                'callback'          => 'bbp_admin_setting_callback_reply_archive_slug',
    364                 'sanitize_callback' => 'esc_sql',
     364                'sanitize_callback' => 'bbp_sanitize_slug',
    365365                'args'              => array()
    366366            ),
     
    370370                'title'             => __( 'Favorite Topics', 'bbpress' ),
    371371                'callback'          => 'bbp_admin_setting_callback_user_favs_slug',
    372                 'sanitize_callback' => 'esc_sql',
     372                'sanitize_callback' => 'bbp_sanitize_slug',
    373373                'args'              => array()
    374374            ),
     
    378378                'title'             => __( 'Topic Subscriptions', 'bbpress' ),
    379379                'callback'          => 'bbp_admin_setting_callback_user_subs_slug',
    380                 'sanitize_callback' => 'esc_sql',
     380                'sanitize_callback' => 'bbp_sanitize_slug',
    381381                'args'              => array()
    382382            )
Note: See TracChangeset for help on using the changeset viewer.