function get_max($field) { _deprecated_function(__FUNCTION__, '1.07.05', 'FrmProEntryMetaHelper::get_max'); return FrmProEntryMetaHelper::get_max($field); }
/** * @since 2.0.8 */ private static function do_auto_id_shortcode($args) { $last_entry = FrmProEntryMetaHelper::get_max($args['field']); if (!$last_entry && isset($args['shortcode_atts']['start'])) { $new_value = absint($args['shortcode_atts']['start']); } else { $new_value = absint($last_entry) + 1; } return $new_value; }
public static function get_default_value($value, $field, $dynamic_default = true, $return_array = false) { if (is_array(maybe_unserialize($value))) { return $value; } if ($field and $dynamic_default) { $field->field_options = maybe_unserialize($field->field_options); if (isset($field->field_options['dyn_default_value']) and !empty($field->field_options['dyn_default_value'])) { $prev_val = $value; $value = $field->field_options['dyn_default_value']; } } preg_match_all("/\\[(date|time|email|login|display_name|first_name|last_name|user_meta|user_id|post_meta|post_id|post_title|post_author_email|ip|server|auto_id|siteurl|sitename|get|get-(.?))\\b(.*?)(?:(\\/))?\\]/s", $value, $matches, PREG_PATTERN_ORDER); if (!isset($matches[0])) { return do_shortcode($value); } foreach ($matches[0] as $match_key => $val) { switch ($val) { case '[date]': global $frmpro_settings; $new_value = date_i18n($frmpro_settings->date_format, strtotime(current_time('mysql'))); break; case '[time]': $new_value = date('H:i:s', strtotime(current_time('mysql'))); break; case '[email]': global $current_user; $new_value = isset($current_user->user_email) ? $current_user->user_email : ''; break; case '[login]': global $current_user; $new_value = isset($current_user->user_login) ? $current_user->user_login : ''; break; case '[display_name]': global $current_user; $new_value = isset($current_user->display_name) ? $current_user->display_name : ''; break; case '[first_name]': global $current_user; $new_value = isset($current_user->user_firstname) ? $current_user->user_firstname : ''; break; case '[last_name]': global $current_user; $new_value = isset($current_user->user_lastname) ? $current_user->user_lastname : ''; break; case '[post_id]': global $post; if ($post) { $new_value = $post->ID; } break; case '[post_title]': global $post; if ($post) { $new_value = $post->post_title; } break; case '[post_author_email]': $new_value = get_the_author_meta('user_email'); break; case '[user_id]': $user_ID = get_current_user_id(); $new_value = $user_ID ? $user_ID : ''; break; case '[ip]': $new_value = $_SERVER['REMOTE_ADDR']; break; case '[siteurl]': $new_value = FrmAppHelper::site_url(); break; case '[frmurl]': $new_value = FrmAppHelper::plugin_url(); break; case '[sitename]': $new_value = get_option('blogname'); break; default: $atts = shortcode_parse_atts(stripslashes($matches[3][$match_key])); if (isset($atts['return_array'])) { $return_array = $atts['return_array']; } $shortcode = $matches[1][$match_key]; if (preg_match("/\\[get-(.?)\\b(.*?)?\\]/s", $val)) { $param = str_replace('[get-', '', $val); if (preg_match("/\\[/s", $param)) { $val .= ']'; } else { $param = trim($param, ']'); } //only if is doesn't create an imbalanced [] $new_value = FrmAppHelper::get_param($param); if (is_array($new_value) and !$return_array) { $new_value = implode(', ', $new_value); } } else { switch ($shortcode) { case 'get': $new_value = ''; if (isset($atts['param'])) { if (strpos($atts['param'], '[')) { $atts['param'] = str_replace('[', '[', $atts['param']); $atts['param'] = str_replace(']', ']', $atts['param']); } $new_value = FrmAppHelper::get_param($atts['param'], false); if (!$new_value) { global $wp_query; if (isset($wp_query->query_vars[$atts['param']])) { $new_value = $wp_query->query_vars[$atts['param']]; } } if (!$new_value and isset($atts['default'])) { $new_value = $atts['default']; } else { if (!$new_value and isset($prev_val)) { $new_value = $prev_val; } } } if (is_array($new_value) and !$return_array) { $new_value = implode(', ', $new_value); } break; case 'auto_id': $last_entry = FrmProEntryMetaHelper::get_max($field); if (!$last_entry and isset($atts['start'])) { $new_value = (int) $atts['start']; } if (!isset($new_value)) { $new_value = $last_entry + 1; } break; case 'user_meta': if (isset($atts['key'])) { global $current_user; $new_value = isset($current_user->{$atts['key']}) ? $current_user->{$atts['key']} : ''; if (is_array($new_value)) { $new_value = implode(', ', $new_value); } } break; case 'post_meta': if (isset($atts['key'])) { global $post; if ($post) { if (isset($post->{$atts['key']})) { $post_meta = $post->{$atts['key']}; } else { $post_meta = get_post_meta($post->ID, $atts['key'], true); } if ($post_meta) { $new_value = $post_meta; } } } break; case 'server': if (isset($atts['param'])) { $new_value = isset($_SERVER[$atts['param']]) ? $_SERVER[$atts['param']] : ''; } break; default: //check for posted item_meta if (is_numeric($shortcode) and isset($_REQUEST) and isset($_REQUEST['item_meta'])) { $new_value = FrmAppHelper::get_param('item_meta[' . $shortcode . ']', false, 'post'); if (!$new_value and isset($atts['default'])) { $new_value = $atts['default']; } if (is_array($new_value) and !$return_array) { $new_value = implode(', ', $new_value); } } else { //don't replace this if it's a shortcode that still needs to be processed $new_value = $val; } break; } } } if (!isset($new_value)) { $new_value = ''; } if (is_array($new_value)) { if (count($new_value) === 1) { $new_value = reset($new_value); } $value = $new_value; } else { $value = str_replace($val, $new_value, $value); } unset($new_value); } unset($matches); preg_match_all("/\\[(\\d*)\\b(.*?)(?:(\\/))?\\]/s", $value, $matches, PREG_PATTERN_ORDER); if (isset($matches[0])) { foreach ($matches[0] as $match_key => $val) { $shortcode = $matches[1][$match_key]; if (is_numeric($shortcode) and isset($_REQUEST) and isset($_REQUEST['item_meta'])) { $new_value = FrmAppHelper::get_param('item_meta[' . $shortcode . ']', false, 'post'); if (!$new_value and isset($atts['default'])) { $new_value = $atts['default']; } if (is_array($new_value) and !$return_array) { $new_value = implode(', ', $new_value); } if (is_array($new_value)) { $value = $new_value; } else { $value = str_replace($val, $new_value, $value); } } } } global $frm_vars; $frm_vars['skip_shortcode'] = true; $value = do_shortcode($value); //If checkbox, multi-select dropdown, or checkbox data from entries field and default value has a comma if ($return_array && $field && ($field->type == 'data' && $field->field_options['data_type'] == 'checkbox' || $field->type == 'checkbox' || $field->type == 'select' && $field->field_options['multiple'] == 1) && !is_array($value) && strpos($value, ',') !== false) { //If the default value does not match any options OR if data from entries field (never would have commas in values), explode to array if ($field->type == 'data' || !in_array($value, $field->options)) { $value = explode(',', $value); } } $frm_vars['skip_shortcode'] = false; return $value; }