public static function create($values) { global $wpdb; self::sanitize_entry_post($values); $values = apply_filters('frm_pre_create_entry', $values); if (!isset($values['item_key'])) { $values['item_key'] = ''; } $item_name = self::get_new_entry_name($values, $values['item_key']); $new_values = array('item_key' => FrmAppHelper::get_unique_key($values['item_key'], $wpdb->prefix . 'frm_items', 'item_key'), 'name' => FrmAppHelper::truncate($item_name, 255, 1, ''), 'ip' => FrmAppHelper::get_ip_address(), 'is_draft' => isset($values['frm_saving_draft']) && $values['frm_saving_draft'] == 1 || isset($values['is_draft']) && $values['is_draft'] == 1 ? 1 : 0, 'form_id' => isset($values['form_id']) ? (int) $values['form_id'] : null, 'post_id' => isset($values['post_id']) ? (int) $values['post_id'] : 0, 'parent_item_id' => isset($values['parent_item_id']) ? (int) $values['parent_item_id'] : 0, 'created_at' => isset($values['created_at']) ? $values['created_at'] : current_time('mysql', 1), 'updated_at' => isset($values['updated_at']) ? $values['updated_at'] : (isset($values['created_at']) ? $values['created_at'] : current_time('mysql', 1))); if (is_array($new_values['name'])) { $new_values['name'] = reset($new_values['name']); } if (isset($values['description']) && !empty($values['description'])) { $new_values['description'] = maybe_serialize($values['description']); } else { $new_values['description'] = serialize(array('browser' => FrmAppHelper::get_server_value('HTTP_USER_AGENT'), 'referrer' => FrmAppHelper::get_server_value('HTTP_REFERER'))); } //if(isset($values['id']) and is_numeric($values['id'])) // $new_values['id'] = $values['id']; if (isset($values['frm_user_id']) && (is_numeric($values['frm_user_id']) || FrmAppHelper::is_admin())) { $new_values['user_id'] = $values['frm_user_id']; } else { $user_ID = get_current_user_id(); $new_values['user_id'] = $user_ID ? $user_ID : 0; } $new_values['updated_by'] = isset($values['updated_by']) ? $values['updated_by'] : $new_values['user_id']; // don't create duplicate entry if (self::is_duplicate($new_values, $values)) { return false; } $query_results = $wpdb->insert($wpdb->prefix . 'frm_items', $new_values); if (!$query_results) { return false; } $entry_id = $wpdb->insert_id; global $frm_vars; if (!isset($frm_vars['saved_entries'])) { $frm_vars['saved_entries'] = array(); } $frm_vars['saved_entries'][] = (int) $entry_id; if (isset($values['item_meta'])) { FrmEntryMeta::update_entry_metas($entry_id, $values['item_meta']); } self::clear_cache(); // this is a child entry $is_child = isset($values['parent_form_id']) && isset($values['parent_nonce']) && !empty($values['parent_form_id']) && wp_verify_nonce($values['parent_nonce'], 'parent'); do_action('frm_after_create_entry', $entry_id, $new_values['form_id'], compact('is_child')); do_action('frm_after_create_entry_' . $new_values['form_id'], $entry_id, compact('is_child')); return $entry_id; }
/** * Prepare the new values for inserting into the database * * @since 2.0.16 * @param array $values * @return array $new_values */ private static function package_entry_data(&$values) { global $wpdb; if (!isset($values['item_key'])) { $values['item_key'] = ''; } $item_name = self::get_new_entry_name($values, $values['item_key']); $new_values = array('item_key' => FrmAppHelper::get_unique_key($values['item_key'], $wpdb->prefix . 'frm_items', 'item_key'), 'name' => FrmAppHelper::truncate($item_name, 255, 1, ''), 'ip' => FrmAppHelper::get_ip_address(), 'is_draft' => self::get_is_draft_value($values), 'form_id' => self::get_form_id($values), 'post_id' => self::get_post_id($values), 'parent_item_id' => self::get_parent_item_id($values), 'created_at' => self::get_created_at($values), 'updated_at' => self::get_updated_at($values), 'description' => self::get_entry_description($values), 'user_id' => self::get_entry_user_id($values)); if (is_array($new_values['name'])) { $new_values['name'] = reset($new_values['name']); } $new_values['updated_by'] = isset($values['updated_by']) ? $values['updated_by'] : $new_values['user_id']; return $new_values; }
/** * Get entry object for frm_field_value shortcode * Uses user_id, entry, or ip atts to fetch the entry * * @since 2.0.13 * @param object $field * @param array $atts * @return boolean|object $entry */ private static function get_frm_field_value_entry($field, &$atts) { $query = array('form_id' => $field->form_id); if ($atts['user_id']) { // make sure we are not getting entries for logged-out users $query['user_id'] = (int) FrmAppHelper::get_user_id_param($atts['user_id']); $query['user_id !'] = 0; } if ($atts['entry']) { if (!is_numeric($atts['entry'])) { $atts['entry'] = FrmAppHelper::simple_get($atts['entry'], 'sanitize_title', $atts['entry']); } if (empty($atts['entry'])) { return; } if (is_numeric($atts['entry'])) { $query[] = array('or' => 1, 'id' => $atts['entry'], 'parent_item_id' => $atts['entry']); } else { $query[] = array('item_key' => $atts['entry']); } } if ($atts['ip']) { $query['ip'] = $atts['ip'] == true ? FrmAppHelper::get_ip_address() : $atts['ip']; } $entry = FrmDb::get_row('frm_items', $query, 'post_id, id', array('order_by' => 'created_at DESC')); return $entry; }
/** * @since 2.0 * @param string $content */ private static function parse_akismet_array(&$datas, $content) { $datas['blog'] = FrmAppHelper::site_url(); $datas['user_ip'] = preg_replace('/[^0-9., ]/', '', FrmAppHelper::get_ip_address()); $datas['user_agent'] = FrmAppHelper::get_server_value('HTTP_USER_AGENT'); $datas['referrer'] = isset($_SERVER['HTTP_REFERER']) ? FrmAppHelper::get_server_value('HTTP_REFERER') : false; $datas['comment_type'] = 'formidable'; $datas['comment_content'] = $content; if ($permalink = get_permalink()) { $datas['permalink'] = $permalink; } foreach ($_SERVER as $key => $value) { if (!in_array($key, array('HTTP_COOKIE', 'HTTP_COOKIE2', 'PHP_AUTH_PW')) && is_string($value)) { $datas[$key] = wp_strip_all_tags($value); } else { $datas[$key] = ''; } unset($key, $value); } }
/** * @since 2.0.8 * @return boolean */ public static function user_can_submit_form($form) { $admin_entry = FrmAppHelper::is_admin(); $can_submit = true; if ($form->options['single_entry_type'] == 'cookie' && isset($_COOKIE['frm_form' . $form->id . '_' . COOKIEHASH])) { $can_submit = $admin_entry ? true : false; } else { if ($form->options['single_entry_type'] == 'ip') { if (!$admin_entry) { $prev_entry = FrmEntry::getAll(array('it.form_id' => $form->id, 'it.ip' => FrmAppHelper::get_ip_address()), '', 1); if ($prev_entry) { $can_submit = false; } } } else { if (($form->options['single_entry_type'] == 'user' || isset($form->options['save_draft']) && $form->options['save_draft'] == 1) && !$form->editable) { $user_ID = get_current_user_id(); if ($user_ID) { $meta = FrmProEntriesHelper::check_for_user_entry($user_ID, $form, $form->options['single_entry_type'] != 'user'); if ($meta) { $can_submit = false; } } } } } return $can_submit; }