| @@ -42,11 +42,11 @@ | ||
| 42 | 42 | return $id; |
| 43 | 43 | } |
| 44 | 44 | |
| 45 | 45 | /** |
| 46 | - * @param int $entry_id | |
| 47 | - * @param int $field_id | |
| 48 | - * @param string $meta_key deprecated | |
| 46 | + * @param int $entry_id | |
| 47 | + * @param int $field_id | |
| 48 | + * @param string $meta_key Deprecated. | |
| 49 | 49 | * @param array|string $meta_value |
| 50 | 50 | * |
| 51 | 51 | * @return bool|false|int |
| 52 | 52 | */ |
| @@ -139,9 +139,9 @@ | ||
| 139 | 139 | } else { |
| 140 | 140 | // if value does not exist, then create it |
| 141 | 141 | self::add_entry_meta( $entry_id, $field_id, '', $meta_value ); |
| 142 | 142 | } |
| 143 | - } | |
| 143 | + }//end foreach | |
| 144 | 144 | |
| 145 | 145 | if ( empty( $prev_values ) ) { |
| 146 | 146 | return; |
| 147 | 147 | } |
| @@ -274,10 +274,13 @@ | ||
| 274 | 274 | return wp_unslash( $values ); |
| 275 | 275 | } |
| 276 | 276 | |
| 277 | 277 | /** |
| 278 | - * @param string $order | |
| 279 | - * @param string $limit | |
| 278 | + * @param string|int $field_id | |
| 279 | + * @param string $order | |
| 280 | + * @param string $limit | |
| 281 | + * @param array $args | |
| 282 | + * @param array $query | |
| 280 | 283 | */ |
| 281 | 284 | private static function meta_field_query( $field_id, $order, $limit, $args, array &$query ) { |
| 282 | 285 | global $wpdb; |
| 283 | 286 | $query[] = 'SELECT'; |
| @@ -362,10 +365,10 @@ | ||
| 362 | 365 | } |
| 363 | 366 | |
| 364 | 367 | /** |
| 365 | 368 | * @param string|array $where |
| 366 | - * @param string $order_by | |
| 367 | - * @param string $limit | |
| 369 | + * @param string $order_by | |
| 370 | + * @param string $limit | |
| 368 | 371 | */ |
| 369 | 372 | private static function get_ids_query( $where, $order_by, $limit, $unique, $args, array &$query ) { |
| 370 | 373 | global $wpdb; |
| 371 | 374 | $query[] = 'SELECT'; |
| @@ -392,11 +395,31 @@ | ||
| 392 | 395 | $query[] = 'INNER JOIN ' . $wpdb->prefix . 'frm_items e ON (e.id=it.item_id)'; |
| 393 | 396 | if ( is_array( $where ) ) { |
| 394 | 397 | if ( ! $args['is_draft'] ) { |
| 395 | 398 | $where['e.is_draft'] = 0; |
| 396 | - } elseif ( $args['is_draft'] == 1 ) { | |
| 397 | - $where['e.is_draft'] = 1; | |
| 398 | - } | |
| 399 | + } elseif ( is_numeric( $args['is_draft'] ) ) { | |
| 400 | + if ( class_exists( 'FrmAbandonmentHooksController', false ) ) { | |
| 401 | + $where['e.is_draft'] = absint( $args['is_draft'] ); | |
| 402 | + } else { | |
| 403 | + $where['e.is_draft'] = 1; | |
| 404 | + } | |
| 405 | + } elseif ( 'both' === $args['is_draft'] && class_exists( 'FrmAbandonmentHooksController', false ) ) { | |
| 406 | + $where['e.is_draft'] = array( 0, 1 ); | |
| 407 | + } elseif ( false !== strpos( $args['is_draft'], ',' ) ) { | |
| 408 | + $is_draft = array_reduce( | |
| 409 | + explode( ',', $args['is_draft'] ), | |
| 410 | + function( $total, $current ) { | |
| 411 | + if ( is_numeric( $current ) ) { | |
| 412 | + $total[] = absint( $current ); | |
| 413 | + } | |
| 414 | + return $total; | |
| 415 | + }, | |
| 416 | + array() | |
| 417 | + ); | |
| 418 | + if ( $is_draft ) { | |
| 419 | + $where['e.is_draft'] = $is_draft; | |
| 420 | + } | |
| 421 | + }//end if | |
| 399 | 422 | |
| 400 | 423 | if ( ! empty( $args['user_id'] ) ) { |
| 401 | 424 | $where['e.user_id'] = $args['user_id']; |
| 402 | 425 | } |
| @@ -406,9 +429,9 @@ | ||
| 406 | 429 | $query[] = ' GROUP BY ' . sanitize_text_field( $args['group_by'] ); |
| 407 | 430 | } |
| 408 | 431 | |
| 409 | 432 | return; |
| 410 | - } | |
| 433 | + }//end if | |
| 411 | 434 | |
| 412 | 435 | $draft_where = ''; |
| 413 | 436 | $user_where = ''; |
| 414 | 437 | if ( ! $args['is_draft'] ) { |
| @@ -468,9 +491,9 @@ | ||
| 468 | 491 | if ( $operator == 'LIKE' ) { |
| 469 | 492 | $search = '%' . $search . '%'; |
| 470 | 493 | } |
| 471 | 494 | $query = $wpdb->prepare( "SELECT DISTINCT item_id FROM {$wpdb->prefix}frm_item_metas WHERE meta_value {$operator} %s and field_id = %d", $search, $field_id ); // phpcs:ignore WordPress.DB.PreparedSQL.NotPrepared, WordPress.DB.PreparedSQL.InterpolatedNotPrepared |
| 472 | - } | |
| 495 | + }//end if | |
| 473 | 496 | |
| 474 | 497 | $results = $wpdb->get_col( $query, 0 ); // phpcs:ignore WordPress.DB.PreparedSQL.NotPrepared |
| 475 | 498 | FrmDb::set_cache( $cache_key, $results, 'frm_entry' ); |
| 476 | 499 | |