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);
         if (!FrmAppHelper::prevent_caching()) {
             wp_cache_set($cache_key, $entries, 'frm_entry', 300);
         }
     }
     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) {
             wp_cache_set($entry->id, $entry, 'frm_entry');
             unset($entry);
         }
     }
     return stripslashes_deep($entries);
 }
Exemple #2
0
 public static function getAll($where = array(), $order_by = '', $limit = '', $blog_id = false)
 {
     $cache_key = maybe_serialize($where) . $order_by . 'l' . $limit . 'b' . $blog_id;
     if (self::$use_cache) {
         // make sure old cache doesn't get saved as a transient
         $results = wp_cache_get($cache_key, 'frm_field');
         if (false !== $results) {
             return stripslashes_deep($results);
         }
     }
     global $wpdb;
     if ($blog_id && is_multisite()) {
         global $wpmuBaseTablePrefix;
         if ($wpmuBaseTablePrefix) {
             $prefix = $wpmuBaseTablePrefix . $blog_id . '_';
         } else {
             $prefix = $wpdb->get_blog_prefix($blog_id);
         }
         $table_name = $prefix . 'frm_fields';
         $form_table_name = $prefix . 'frm_forms';
     } else {
         $table_name = $wpdb->prefix . 'frm_fields';
         $form_table_name = $wpdb->prefix . 'frm_forms';
     }
     if (!empty($order_by) && strpos($order_by, 'ORDER BY') === false) {
         $order_by = ' ORDER BY ' . $order_by;
     }
     $limit = FrmAppHelper::esc_limit($limit);
     $query = "SELECT fi.*, fr.name as form_name  FROM {$table_name} fi LEFT OUTER JOIN {$form_table_name} fr ON fi.form_id=fr.id";
     $query_type = $limit == ' LIMIT 1' || $limit == 1 ? 'row' : 'results';
     if (is_array($where)) {
         if (isset($where['fi.form_id']) && count($where) == 1) {
             // add sub fields to query
             $form_id = $where['fi.form_id'];
             $where[] = array('or' => 1, 'fi.form_id' => $form_id, 'fr.parent_form_id' => $form_id);
             unset($where['fi.form_id']);
         }
         $results = FrmDb::get_var($table_name . ' fi LEFT OUTER JOIN ' . $form_table_name . ' fr ON fi.form_id=fr.id', $where, 'fi.*, fr.name as form_name', array('order_by' => $order_by, 'limit' => $limit), '', $query_type);
     } else {
         // if the query is not an array, then it has already been prepared
         $query .= FrmAppHelper::prepend_and_or_where(' WHERE ', $where) . $order_by . $limit;
         $function_name = $query_type == 'row' ? 'get_row' : 'get_results';
         $results = $wpdb->{$function_name}($query);
     }
     unset($where);
     self::format_field_results($results);
     wp_cache_set($cache_key, $results, 'frm_field', 300);
     return stripslashes_deep($results);
 }
Exemple #3
0
 private static function convert_options_to_array(&$args, $order_by = '', $limit = '')
 {
     if (!is_array($args)) {
         $args = array('order_by' => $args);
     }
     if (!empty($order_by)) {
         $args['order_by'] = $order_by;
     }
     if (!empty($limit)) {
         $args['limit'] = $limit;
     }
     $temp_args = $args;
     foreach ($temp_args as $k => $v) {
         if ($v == '') {
             unset($args[$k]);
             continue;
         }
         if ($k == 'limit') {
             $args[$k] = FrmAppHelper::esc_limit($v);
         }
         $db_name = strtoupper(str_replace('_', ' ', $k));
         if (strpos($v, $db_name) === false) {
             $args[$k] = $db_name . ' ' . $v;
         }
     }
     // Make sure LIMIT is the last argument
     if (isset($args['order_by']) && isset($args['limit'])) {
         $temp_limit = $args['limit'];
         unset($args['limit']);
         $args['limit'] = $temp_limit;
     }
 }
Exemple #4
0
 /**
  * @return object|array of objects
  */
 public static function getAll($where = array(), $order_by = '', $limit = '')
 {
     if (is_array($where) && !empty($where)) {
         $results = FrmDb::get_results('frm_forms', $where, '*', array('order_by' => $order_by, 'limit' => $limit));
     } else {
         global $wpdb;
         // the query has already been prepared if this is not an array
         $query = 'SELECT * FROM ' . $wpdb->prefix . 'frm_forms' . FrmAppHelper::prepend_and_or_where(' WHERE ', $where) . FrmAppHelper::esc_order($order_by) . FrmAppHelper::esc_limit($limit);
         $results = $wpdb->get_results($query);
     }
     if ($results) {
         foreach ($results as $result) {
             wp_cache_set($result->id, $result, 'frm_form');
             $result->options = maybe_unserialize($result->options);
         }
     }
     if ($limit == ' LIMIT 1' || $limit == 1) {
         // return the first form object if we are only getting one form
         $results = reset($results);
     }
     return stripslashes_deep($results);
 }