wpdb->prepare( '%"%d"%', $user_id ); $query = $this->wpdb->prepare( "SELECT p.ID FROM {$this->tb_posts} as p INNER join {$this->tb_postmeta} pm on p.ID = pm.post_id INNER join {$this->tb_lp_order_items} as oi on p.ID = oi.order_id WHERE post_type = %s AND pm.meta_key = %s AND (pm.meta_value = %s OR pm.meta_value LIKE '%s') AND oi.item_id = %d ORDER BY p.ID DESC LIMIT 1 ", LP_ORDER_CPT, '_user_id', $user_id, $user_id_str, $course_id ); $order_id = $this->wpdb->get_var( $query ); LP_Cache::cache_load_first( 'set', $key_cache, $order_id ); return $order_id; } /** * Get order_item_ids by order_id * * @param int $order_id * @author tungnx * @since 4.1.4 * @version 1.0.0 * @return array */ public function get_order_item_ids( int $order_id ): array { $query = $this->wpdb->prepare( "SELECT order_item_id FROM $this->tb_lp_order_items WHERE order_id = %d ", $order_id ); return $this->wpdb->get_col( $query ); } /** * Delete row IN order_item_ids * * @param LP_Order_Filter $filter * @author tungnx * @since 4.1.4 * @version 1.0.0 * @return bool|int * @throws Exception */ public function delete_order_item( LP_Order_Filter $filter ) { // Check valid user. if ( ! current_user_can( 'administrator' ) ) { throw new Exception( __( 'Invalid user!', 'learnpress' ) ); } if ( empty( $filter->order_item_ids ) ) { return 1; } $where = 'WHERE 1=1 '; $where .= $this->wpdb->prepare( 'AND order_item_id IN(' . LP_Helper::db_format_array( $filter->order_item_ids, '%d' ) . ')', $filter->order_item_ids ); return $this->wpdb->query( "DELETE FROM {$this->tb_lp_order_items} {$where} " ); } /** * Delete row IN order_item_ids * * @param LP_Order_Filter $filter * @author tungnx * @since 4.1.4 * @version 1.0.0 * @return bool|int * @throws Exception */ public function delete_order_itemmeta( LP_Order_Filter $filter ) { // Check valid user. if ( ! current_user_can( 'administrator' ) ) { throw new Exception( __( 'Invalid user!', 'learnpress' ) ); } if ( empty( $filter->order_item_ids ) ) { return 1; } $where = 'WHERE 1=1 '; $where .= $this->wpdb->prepare( 'AND learnpress_order_item_id IN(' . LP_Helper::db_format_array( $filter->order_item_ids, '%d' ) . ')', $filter->order_item_ids ); return $this->wpdb->query( "DELETE FROM {$this->tb_lp_order_itemmeta} {$where} " ); } public function get_items( LP_Filter $filter, int $order_id = 0 , int &$total_rows = 0 ) { $filter->collection = $this->tb_lp_order_items; $filter->collection_alias = 'oi'; $filter->where[] = $this->wpdb->prepare( 'AND oi.order_id=%d', $order_id ); $filter->field_count = 'oi.order_item_id'; return $this->execute( $filter, $total_rows ); } }