public static function get_search_ids($s, $form_id, $args = array()) { global $wpdb; if (empty($s)) { return false; } preg_match_all('/".*?("|$)|((?<=[\\s",+])|^)[^\\s",+]+/', $s, $matches); $search_terms = array_map('trim', $matches[0]); $spaces = ''; $e_ids = $p_search = array(); $search = array('or' => 1); $data_field = FrmProFormsHelper::has_field('data', $form_id, false); foreach ((array) $search_terms as $term) { $p_search[] = array($spaces . $wpdb->posts . '.post_title like' => $term, $spaces . $wpdb->posts . '.post_content like' => $term, 'or' => 1); $search[$spaces . 'meta_value like'] = $term; $spaces .= ' '; // add a space to keep the array keys unique if (is_numeric($term)) { $e_ids[] = (int) $term; } if ($data_field) { $df_form_ids = array(); //search the joined entry too foreach ((array) $data_field as $df) { FrmProFieldsHelper::get_subform_ids($df_form_ids, $df); unset($df); } $data_form_ids = FrmDb::get_col($wpdb->prefix . 'frm_fields', array('id' => $df_form_ids), 'form_id'); unset($df_form_ids); if ($data_form_ids) { $data_entry_ids = FrmEntryMeta::getEntryIds(array('fi.form_id' => $data_form_ids, 'meta_value like' => $term)); if ($data_entry_ids) { if (!isset($search['meta_value'])) { $search['meta_value'] = array(); } $search['meta_value'] = array_merge($search['meta_value'], $data_entry_ids); } } unset($data_form_ids); } } $matching_posts = FrmDb::get_col($wpdb->posts, $p_search, 'ID'); $p_ids = array($search, 'or' => 1); if ($matching_posts) { $post_ids = FrmDb::get_col($wpdb->prefix . 'frm_items', array('post_id' => $matching_posts, 'form_id' => (int) $form_id)); if ($post_ids) { $p_ids['item_id'] = $post_ids; } } if (!empty($e_ids)) { $p_ids['item_id'] = $e_ids; } $query = array('fi.form_id' => $form_id); $query[] = $p_ids; return FrmEntryMeta::getEntryIds($query, '', '', true, $args); }
public static function validate_embedded_form(&$errors, $field, $exclude = array()) { // Check if this section is conditionally hidden before validating the nested fields self::validate_no_input_fields($errors, $field); $subforms = array(); FrmProFieldsHelper::get_subform_ids($subforms, $field); if (empty($subforms)) { return; } $where = array('fi.form_id' => $subforms); if (!empty($exclude)) { $where['fi.type not'] = $exclude; } $subfields = FrmField::getAll($where, 'field_order'); unset($where); foreach ($subfields as $subfield) { if (isset($_POST['item_meta'][$field->id]) && !empty($_POST['item_meta'][$field->id])) { foreach ($_POST['item_meta'][$field->id] as $k => $values) { if (!empty($k) && in_array($k, array('form', 'id'))) { continue; } FrmEntryValidate::validate_field($subfield, $errors, isset($values[$subfield->id]) ? $values[$subfield->id] : '', array('parent_field_id' => $field->id, 'key_pointer' => $k, 'id' => $subfield->id . '-' . $field->id . '-' . $k)); unset($k, $values); } } else { // TODO: do something if nothing was submitted } } }