/** * Replace a text value where_val with the matching entry IDs for Dynamic Field filters * * @param array $args * @param object $where_field */ private static function prepare_dfe_text(&$args, $where_field) { // Only proceed if we have a non-category dynamic field with a string where_val if ($where_field->type != 'data' || !$args['where_val'] || !is_string($args['where_val']) || isset($where_field->field_options['post_field']) && $where_field->field_options['post_field'] == 'post_category') { return; } $linked_id = FrmProField::get_dynamic_field_entry_id($where_field->field_options['form_select'], $args['where_val'], $args['temp_where_is']); // If text doesn't return any entry IDs, get entry IDs from entry key // Note: Keep for reverse compatibility if (!$linked_id) { $linked_field = FrmField::getOne($where_field->field_options['form_select']); if (!$linked_field) { return; } $filter_args = array(); self::add_group_by($filter_args, $args, 'item_key'); $linked_id = FrmDb::get_col('frm_items', array('form_id' => $linked_field->form_id, 'item_key ' . FrmDb::append_where_is($args['temp_where_is']) => $args['where_val'])); } if (!$linked_id) { return; } //Change $args['where_val'] to linked entry IDs $args['where_val'] = (array) $linked_id; // Don't use old where_val_esc value for filtering unset($args['where_val_esc']); $args['where_val'] = apply_filters('frm_filter_dfe_where_val', $args['where_val'], $args); }
/** * Get the entry ID or category ID to autopopulate a Dynamic field * * @since 2.0.15 * @param object $field * @param string $value * @return int $value */ private static function get_id_for_dynamic_field($field, $value) { if (isset($field->field_options['post_field']) && $field->field_options['post_field'] == 'post_category') { // Category fields $id = FrmProField::get_cat_id_from_text($value); } else { // Non post fields $id = FrmProField::get_dynamic_field_entry_id($field->field_options['form_select'], $value, '='); } return $id; }