/** * @since 2.0.8 */ private static function format_field_results(&$results) { if (is_array($results)) { foreach ($results as $r_key => $result) { FrmAppHelper::set_cache($result->id, $result, 'frm_field'); FrmAppHelper::set_cache($result->field_key, $result, 'frm_field'); $results[$r_key]->field_options = maybe_unserialize($result->field_options); $results[$r_key]->options = maybe_unserialize($result->options); $results[$r_key]->default_value = maybe_unserialize($result->default_value); unset($r_key, $result); } } else { if ($results) { FrmAppHelper::set_cache($results->id, $results, 'frm_field'); FrmAppHelper::set_cache($results->field_key, $results, 'frm_field'); self::prepare_options($results); } } }
public static function search_entry_metas($search, $field_id = '', $operator) { $cache_key = 'search_' . maybe_serialize($search) . $field_id . $operator; $results = wp_cache_get($cache_key, 'frm_entry'); if (false !== $results) { return $results; } global $wpdb; if (is_array($search)) { $where = ''; foreach ($search as $field => $value) { if ($value <= 0 || !in_array($field, array('year', 'month', 'day'))) { continue; } switch ($field) { case 'year': $value = '%' . $value; break; case 'month': $value .= '%'; break; case 'day': $value = '%' . $value . '%'; } $where .= $wpdb->prepare(' meta_value ' . $operator . ' %s and', $value); } $where .= $wpdb->prepare(' field_id=%d', $field_id); $query = 'SELECT DISTINCT item_id FROM ' . $wpdb->prefix . 'frm_item_metas' . FrmAppHelper::prepend_and_or_where(' WHERE ', $where); } else { if ($operator == 'LIKE') { $search = '%' . $search . '%'; } $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); } $results = $wpdb->get_col($query, 0); FrmAppHelper::set_cache($cache_key, $results, 'frm_entry'); return $results; }
/** * @return int count of forms */ public static function &get_count() { global $wpdb; $cache_key = 'frm_form_counts'; $counts = wp_cache_get($cache_key, 'frm_form'); if (false !== $counts) { return $counts; } $results = (array) FrmDb::get_results('frm_forms', array('or' => 1, 'parent_form_id' => null, 'parent_form_id <' => 0), 'status, is_template'); $statuses = array('published', 'draft', 'template', 'trash'); $counts = array_fill_keys($statuses, 0); foreach ($results as $row) { if ('trash' != $row->status) { if ($row->is_template) { $counts['template']++; } else { $counts['published']++; } } else { $counts['trash']++; } if ('draft' == $row->status) { $counts['draft']++; } unset($row); } $counts = (object) $counts; FrmAppHelper::set_cache($cache_key, $counts, 'frm_form'); return $counts; }
public static function getAll($where, $order_by = '', $limit = '', $meta = false, $inc_form = true) { global $wpdb; $limit = FrmAppHelper::esc_limit($limit); $cache_key = maybe_serialize($where) . $order_by . $limit . $inc_form; $entries = wp_cache_get($cache_key, 'frm_entry'); if (false === $entries) { $fields = 'it.id, it.item_key, it.name, it.ip, it.form_id, it.post_id, it.user_id, it.parent_item_id, it.updated_by, it.created_at, it.updated_at, it.is_draft'; $table = $wpdb->prefix . 'frm_items it '; if ($inc_form) { $fields = 'it.*, fr.name as form_name,fr.form_key as form_key'; $table .= 'LEFT OUTER JOIN ' . $wpdb->prefix . 'frm_forms fr ON it.form_id=fr.id '; } if (preg_match('/ meta_([0-9]+)/', $order_by, $order_matches)) { // sort by a requested field $field_id = (int) $order_matches[1]; $fields .= ', (SELECT meta_value FROM ' . $wpdb->prefix . 'frm_item_metas WHERE field_id = ' . $field_id . ' AND item_id = it.id) as meta_' . $field_id; unset($order_matches, $field_id); } // prepare the query $query = 'SELECT ' . $fields . ' FROM ' . $table . FrmAppHelper::prepend_and_or_where(' WHERE ', $where) . $order_by . $limit; $entries = $wpdb->get_results($query, OBJECT_K); unset($query); FrmAppHelper::set_cache($cache_key, $entries, 'frm_entry'); } if (!$meta || !$entries) { return stripslashes_deep($entries); } unset($meta); if (!is_array($where) && preg_match('/^it\\.form_id=\\d+$/', $where)) { $where = array('it.form_id' => substr($where, 11)); } $meta_where = array('field_id !' => 0); if ($limit == '' && is_array($where) && count($where) == 1 && isset($where['it.form_id'])) { $meta_where['fi.form_id'] = $where['it.form_id']; } else { $meta_where['item_id'] = array_keys($entries); } $metas = FrmDb::get_results($wpdb->prefix . 'frm_item_metas it LEFT OUTER JOIN ' . $wpdb->prefix . 'frm_fields fi ON (it.field_id = fi.id)', $meta_where, 'item_id, meta_value, field_id, field_key, form_id'); unset($meta_where); if (!$metas) { return stripslashes_deep($entries); } foreach ($metas as $m_key => $meta_val) { if (!isset($entries[$meta_val->item_id])) { continue; } if (!isset($entries[$meta_val->item_id]->metas)) { $entries[$meta_val->item_id]->metas = array(); } $entries[$meta_val->item_id]->metas[$meta_val->field_id] = maybe_unserialize($meta_val->meta_value); unset($m_key, $meta_val); } if (!FrmAppHelper::prevent_caching()) { foreach ($entries as $entry) { FrmAppHelper::set_cache($entry->id, $entry, 'frm_entry'); unset($entry); } } return stripslashes_deep($entries); }