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; }
/** * Used when switching the action for a bulk action * @since 2.0 */ public static function remove_get_action() { if (!isset($_GET)) { return; } $new_action = isset($_GET['action']) ? sanitize_text_field($_GET['action']) : (isset($_GET['action2']) ? sanitize_text_field($_GET['action2']) : ''); if (!empty($new_action)) { $_SERVER['REQUEST_URI'] = str_replace('&action=' . $new_action, '', FrmAppHelper::get_server_value('REQUEST_URI')); } }
/** * Get the description value for a new entry * * @since 2.0.16 * @param array $values * @return string */ private static function get_entry_description($values) { if (isset($values['description']) && !empty($values['description'])) { $description = maybe_serialize($values['description']); } else { $description = serialize(array('browser' => FrmAppHelper::get_server_value('HTTP_USER_AGENT'), 'referrer' => FrmAppHelper::get_server_value('HTTP_REFERER'))); } return $description; }
/** * @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); } }
/** * Format individual email fields * * @since 2.0 * @param array $atts pass by reference * @param string $f (to, from, reply_to, etc) * @param string $val value saved in field * @param int $key if in array, this will be set */ private static function format_single_field(&$atts, $f, $val, $key = false) { $val = trim($val); // If just a plain email is used if (is_email($val)) { // add sender's name if not included in $from if ($f == 'from') { $part_2 = $atts[$f]; $part_1 = $atts['from_name'] ? $atts['from_name'] : wp_specialchars_decode(FrmAppHelper::site_name(), ENT_QUOTES); } else { return; } } else { $parts = explode(' ', $val); $part_2 = end($parts); // If inputted correcly, $part_2 should be an email if (is_email($part_2)) { $part_1 = trim(str_replace($part_2, '', $val)); } else { if (in_array($f, array('from', 'reply_to'))) { // In case someone just puts a name in the From or Reply To field $part_1 = $val; $part_2 = get_option('admin_email'); } else { // In case someone just puts a name in any other email field if (false !== $key) { unset($atts[$f][$key]); return; } $atts[$f] = ''; return; } } } // if sending the email from a yahoo address, change it to the WordPress default if ($f == 'from' && strpos($part_2, '@yahoo.com')) { // Get the site domain and get rid of www. $sitename = strtolower(FrmAppHelper::get_server_value('SERVER_NAME')); if (substr($sitename, 0, 4) == 'www.') { $sitename = substr($sitename, 4); } $part_2 = 'wordpress@' . $sitename; } // Set up formatted value $final_val = '"' . str_replace('"', '', $part_1) . '" <' . $part_2 . '>'; // If value is an array if (false !== $key) { $atts[$f][$key] = $final_val; return; } $atts[$f] = $final_val; }
/** * Print column headers, accounting for hidden and sortable columns. * * @since 2.0.18 * @access public * * @staticvar int $cb_counter * * @param bool $with_id Whether to set the id attribute or not */ public function print_column_headers($with_id = true) { list($columns, $hidden, $sortable, $primary) = $this->get_column_info(); $current_url = set_url_scheme('http://' . FrmAppHelper::get_server_value('HTTP_HOST') . FrmAppHelper::get_server_value('REQUEST_URI')); $current_url = remove_query_arg('paged', $current_url); if (isset($_GET['orderby'])) { $current_orderby = sanitize_text_field($_GET['orderby']); } else { $current_orderby = ''; } if (isset($_GET['order']) && 'desc' == $_GET['order']) { $current_order = 'desc'; } else { $current_order = 'asc'; } if (!empty($columns['cb'])) { static $cb_counter = 1; $columns['cb'] = '<label class="screen-reader-text" for="cb-select-all-' . $cb_counter . '">' . __('Select All') . '</label>' . '<input id="cb-select-all-' . esc_attr($cb_counter) . '" type="checkbox" />'; $cb_counter++; } foreach ($columns as $column_key => $column_display_name) { $class = array('manage-column', "column-{$column_key}"); if (in_array($column_key, $hidden)) { $class[] = 'hidden'; } if ('cb' == $column_key) { $class[] = 'check-column'; } else { if (in_array($column_key, array('posts', 'comments', 'links'))) { $class[] = 'num'; } } if ($column_key === $primary) { $class[] = 'column-primary'; } if (isset($sortable[$column_key])) { list($orderby, $desc_first) = $sortable[$column_key]; if ($current_orderby == $orderby) { $order = 'asc' == $current_order ? 'desc' : 'asc'; $class[] = 'sorted'; $class[] = $current_order; } else { $order = $desc_first ? 'desc' : 'asc'; $class[] = 'sortable'; $class[] = $desc_first ? 'asc' : 'desc'; } $column_display_name = '<a href="' . esc_url(add_query_arg(compact('orderby', 'order'), $current_url)) . '"><span>' . $column_display_name . '</span><span class="sorting-indicator"></span></a>'; } $tag = 'cb' === $column_key ? 'td' : 'th'; $scope = 'th' === $tag ? 'scope="col"' : ''; $id = $with_id ? "id='" . esc_attr($column_key) . "'" : ''; if (!empty($class)) { $class = "class='" . join(' ', $class) . "'"; } echo "<{$tag} {$scope} {$id} {$class}>{$column_display_name}</{$tag}>"; } }
public static function insert_form_popup() { $page = basename(FrmAppHelper::get_server_value('PHP_SELF')); if (!in_array($page, array('post.php', 'page.php', 'page-new.php', 'post-new.php'))) { return; } FrmAppHelper::load_admin_wide_js(); $shortcodes = array('formidable' => array('name' => __('Form', 'formidable'), 'label' => __('Insert a Form', 'formidable'))); $shortcodes = apply_filters('frm_popup_shortcodes', $shortcodes); include FrmAppHelper::plugin_path() . '/classes/views/frm-forms/insert_form_popup.php'; }
/** * @since 2.0.8 */ private static function get_other_shortcode_values($args) { $atts = shortcode_parse_atts(stripslashes($args['matches'][3][$args['match_key']])); if (isset($atts['return_array'])) { $args['allow_array'] = $atts['return_array']; } $args['shortcode_atts'] = $atts; switch ($args['shortcode']) { case 'user_meta': if (isset($atts['key'])) { $new_value = FrmProAppHelper::get_current_user_value($atts['key'], false); } break; case 'post_meta': if (isset($atts['key'])) { $new_value = FrmProAppHelper::get_current_post_value($atts['key']); } break; case 'get': $new_value = self::do_get_shortcode($args); break; case 'auto_id': $new_value = self::do_auto_id_shortcode($args); break; case 'server': if (isset($atts['param'])) { $new_value = FrmAppHelper::get_server_value($atts['param']); } break; case 'date': $new_value = FrmProAppHelper::get_date(isset($atts['format']) ? $atts['format'] : ''); break; case 'time': $new_value = FrmProAppHelper::get_time($atts); break; default: $new_value = self::check_posted_item_meta($args['matches'][0][$args['match_key']], $args['shortcode'], $atts, $args['allow_array']); break; } return $new_value; }
private static function entry_link_href($entry, $atts) { $args = array($atts['param_name'] => 'key' == $atts['param_value'] ? $entry->item_key : $entry->id); if ($atts['edit']) { $args['frm_action'] = 'edit'; } if ($atts['link_type'] == 'scroll') { $link = '#' . $entry->item_key; } else { if ($atts['link_type'] == 'admin') { $link = add_query_arg($args, FrmAppHelper::get_server_value('REQUEST_URI')); } else { $link = add_query_arg($args, $atts['permalink']); } } return $link; }
/** * @covers FrmAppHelper::remove_get_action */ function test_remove_get_action() { $_GET['action'] = 'bulk_trash'; $start_url = $_SERVER['REQUEST_URI'] = admin_url('admin.php?page=formidable&action=bulk_trash'); FrmAppHelper::remove_get_action(); $new_url = FrmAppHelper::get_server_value('REQUEST_URI'); $this->assertNotEquals($new_url, $start_url); }