Ticket #118: 118.diff

File 118.diff, 1.1 kB (added by skippy, 11 months ago)

alternate delete_by_status() implementation

  • comments.php

     
    554554    } 
    555555 
    556556 
     557    /** 
     558     * static delete_by_status 
     559     * delete all the comments and associated commentinfo records for comments of the given status 
     560     * @param mixed a comment status ID or name 
     561    **/ 
    557562    public static function delete_by_status( $status ) 
    558563    { 
    559         $comments= DB::table( 'comments' ); 
    560         $commentinfo= DB::table( 'commentinfo' ); 
    561         $sql= " 
    562             DELETE {$comments}.*, {$commentinfo}.*  
    563             FROM {$comments}  
    564             LEFT JOIN {$commentinfo} ON {$comments}.id = {$commentinfo}.comment_id  
    565             WHERE {$comments}.status = ?; 
    566         "; 
    567          
    568         DB::query( $sql, array( Comment::status( $status ) ) ); 
     564        if ( ! is_int( $status ) ) { 
     565            $status= Comment::status( $status ); 
     566        } 
     567 
     568        $comment_ids= implode( ',', DB::get_column( 'SELECT id FROM {comments} WHERE status=?', array ( $status ) ) ); 
     569        $results= DB::query( 'DELETE FROM {comments} WHERE id IN (?)', array( $comment_ids ) ); 
     570        $results= DB::query( 'DELETE FROM {commentinfo} WHERE comment_id IN (?)', array( $comment_ids ) ); 
     571 
    569572    } 
    570573} 
    571574?>