WordPress.org

Make WordPress Core

Ticket #15437: 15437.diff

File 15437.diff, 1.7 KB (added by nacin, 11 years ago)

untested

  • wp-admin/admin-ajax.php

     
    6666        die( '0' );
    6767        break;
    6868case 'ajax-tag-search' :
    69         if ( !current_user_can( 'edit_posts' ) )
    70                 die('-1');
     69        if ( isset( $_GET['tax'] ) ) {
     70                $taxonomy = sanitize_key( $_GET['tax'] );
     71                $tax = get_taxonomy( $taxonomy );
     72                if ( ! $tax )
     73                        die( '0' );
     74                if ( ! current_user_can( $tax->cap->assign_terms ) )
     75                        die( '-1' );
     76        } else {
     77                die('0');
     78        }
    7179
    7280        $s = $_GET['q']; // is this slashed already?
    7381
    74         if ( isset($_GET['tax']) )
    75                 $taxonomy = sanitize_title($_GET['tax']);
    76         else
    77                 die('0');
    78 
    7982        if ( false !== strpos( $s, ',' ) ) {
    8083                $s = explode( ',', $s );
    8184                $s = $s[count( $s ) - 1];
     
    547550        $x->send();
    548551        break;
    549552case 'get-tagcloud' :
    550         if ( !current_user_can( 'edit_posts' ) )
    551                 die('-1');
    552 
    553         if ( isset($_POST['tax']) )
    554                 $taxonomy = sanitize_title($_POST['tax']);
    555         else
     553        if ( isset( $_POST['tax'] ) ) {
     554                $taxonomy = sanitize_key( $_POST['tax'] );
     555                $tax = get_taxonomy( $taxonomy );
     556                if ( ! $tax )
     557                        die( '0' );
     558                if ( ! current_user_can( $tax->cap->assign_terms ) )
     559                        die( '-1' );
     560        } else {
    556561                die('0');
     562        }
    557563
    558564        $tags = get_terms( $taxonomy, array( 'number' => 45, 'orderby' => 'count', 'order' => 'DESC' ) );
    559565
    560         if ( empty( $tags ) ) {
    561                 $tax = get_taxonomy( $taxonomy );
     566        if ( empty( $tags ) )
    562567                die( isset( $tax->no_tagcloud ) ? $tax->no_tagcloud : __('No tags found!') );
    563         }
    564568
    565         if ( is_wp_error($tags) )
    566                 die($tags->get_error_message());
     569        if ( is_wp_error( $tags ) )
     570                die( $tags->get_error_message() );
    567571
    568572        foreach ( $tags as $key => $tag ) {
    569573                $tags[ $key ]->link = '#';