<?php

add_action("plugins_loaded", "init_simple_fields_field_minimalexample");
function init_simple_fields_field_minimalexample()
{
    class simple_fields_field_minimalexample extends simple_fields_field
    {
        public $key = "minimalexample", $name = "Minimalistic example field";
        function __construct()
        {
            parent::__construct();
        }
        function options_output($existing_vals)
        {
            return sprintf('
				<p>
					<label>Default name</label>
					<span class="description">Enter a name that will be shown as default</span>
					<input type="text" name="%1$s" value="%2$s">
				</p>', $this->get_options_name("textDefaultName"), isset($existing_vals["textDefaultName"]) ? esc_attr($existing_vals["textDefaultName"]) : "");
        }
        function edit_output($saved_values, $options)
        {
            return sprintf('<input type="text" name="%1$s" value="%2$s">', $this->get_options_name("name"), empty($saved_values["name"]) ? esc_attr($options["textDefaultName"]) : esc_attr($saved_values["name"]));
        }
    }
    simple_fields::register_field_type("simple_fields_field_minimalexample");
}
         * Add Extended Return Values and then return the values
         */
        function return_values($values = null, $parsed_options_for_this_field = null)
        {
            // @todo: what if no value?
            $arr_extended = array();
            foreach ($values as $key => $one_value) {
                $one_value_unix = strtotime($one_value);
                // Detect full date or just time
                if (preg_match('!^\\d{4}-\\d{2}-\\d{2}$!', $one_value)) {
                    // echo "date"; [saved_date_time] => 1970-01-01
                    $arr_extended = array("type" => "date", "date_unixtime" => $one_value_unix, "ISO_8601" => date("Y-m-d", $one_value_unix), "RFC_2822" => date("r", $one_value_unix), "Y-m-d" => date("Y-m-d", $one_value_unix), "date_format" => date_i18n(get_option('date_format'), $one_value_unix));
                } else {
                    if (preg_match('!^\\d{4}-\\d{2}-\\d{2} \\d{2}:\\d{2}$!', $one_value)) {
                        // [saved_date_time] => 1970-01-01 01:00
                        $arr_extended = array("type" => "datetime", "date_unixtime" => $one_value_unix, "ISO_8601" => date("Y-m-d H:i", $one_value_unix), "RFC_2822" => date("r", $one_value_unix), "Y-m-d" => date("Y-m-d", $one_value_unix), "Y-m-d H:i" => date("Y-m-d H:i", $one_value_unix), "date_format" => date_i18n(get_option('date_format'), $one_value_unix), "date_time_format" => date_i18n(get_option('date_format') . " " . get_option('time_format'), $one_value_unix));
                    } else {
                        if (preg_match('!^\\d{2}:\\d{2}$!', $one_value)) {
                            // [saved_date_time] => 01:00
                            $arr_extended = array("type" => "time", "ISO_8601" => date("H:i", $one_value_unix), "time_format" => date_i18n(get_option('time_format'), $one_value_unix));
                        }
                    }
                }
                $values[$key] = $arr_extended;
            }
            return $values;
        }
    }
    // end class
    simple_fields::register_field_type("simple_fields_field_date_v2");
}
         * This is the output a regular user will see
         */
        function edit_output($saved_values, $options)
        {
            // name tex. date: simple_fields_fieldgroups[3][1][new0]
            // name denna: simple_fields_fieldgroups[3][2][new0][option1]
            // alltså ett steg till = bra för vi kan lagra fler saker med mindre problem. hej hopp.
            $output = "";
            $output .= sprintf('
					<input type="text" name="%1$s" id="%2$s" value="%3$s"><br>
					<input type="text" name="%4$s" id="%5$s" value="%6$s">
				', $this->get_options_name("option1"), $this->get_options_id("option1"), esc_attr(@$saved_values["option1"]), $this->get_options_name("option2"), $this->get_options_id("option2"), esc_attr(@$saved_values["option2"]));
            return $output;
        }
        /**
         * Before the values are returned
         */
        function return_values($values)
        {
            foreach ($values as &$one_field) {
                foreach ($one_field as $one_field_key => &$one_field_value) {
                    if ($one_field_key == "option1") {
                        $one_field_value = $one_field_value . " with some text always appended by class return method";
                    }
                }
            }
            return $values;
        }
    }
    simple_fields::register_field_type("simple_fields_field_example");
}
            // Generate the src for a static map for each map, for each image size
            // https://developers.google.com/maps/documentation/staticmaps/
            $static_map_base = "http://maps.googleapis.com/maps/api/staticmap?sensor=false";
            foreach ($values as $key => $val) {
                $arr_static_maps = array();
                foreach ($arr_sizes as $size_key => $size_vals) {
                    $markers = "";
                    if ($options["static_maps_marker_show"]) {
                        $markers = "";
                        $markers .= "size:" . $options["static_maps_marker_size"];
                        $markers .= "|";
                        $markers .= "color:" . $options["static_maps_marker_color"];
                        $markers .= "|";
                        $markers .= $val["lat"] . "," . $val["lng"];
                    }
                    $static_map = add_query_arg(array("center" => $val["lat"] . "," . $val["lng"], "zoom" => $options["static_maps_zoom"], "size" => $size_vals["width"] . "x" . $size_vals["height"], "scale" => $options["static_maps_scale"], "maptype" => $options["static_maps_maptype"], "markers" => $markers), $static_map_base);
                    $arr_static_maps[$size_key] = $static_map;
                    // echo "<p>$size_key:<br><img src='$static_map'></p>";
                }
                $values[$key]["static_maps"] = $arr_static_maps;
                // If address_components exists, decode the json to array
                if (isset($values[$key]["address_components"]) && $values[$key]["address_components"]) {
                    $values[$key]["address_components"] = json_decode($values[$key]["address_components"]);
                }
            }
            return $values;
        }
    }
    // class
    simple_fields::register_field_type("simple_fields_field_googlemaps");
}
        function options_output($existing_vals = array())
        {
            return sprintf('
			<div class="simple-fields-field-group-one-field-row-col-first">
				<p>
					<label>%1$s</label>
				</p>
			</div>
			<div class="simple-fields-field-group-one-field-row-col-second">
				<p>
					<select name="%2$s">
						<option %6$s value="line">%4$s</option>
						<option %5$s value="white_space">%3$s</option>
					</select>
				</p>
				<!-- <p>					
					<span class="description">%7$s</span>
				</p>-->
			</div>
				', _x("Appearance", "Divider field type", "simple-fields"), $this->get_options_name("appearance"), _x("White space", "Divider field type", "simple-fields"), _x("Line", "Divider field type", "simple-fields"), isset($existing_vals["appearance"]) && $existing_vals["appearance"] == "white_space" ? " selected " : "", isset($existing_vals["appearance"]) && $existing_vals["appearance"] == "line" ? " selected " : "", _x("Select the look of the divider", "Divider field type", "simple-fields"));
        }
        function edit_output($saved_values, $options)
        {
            $output = sprintf('<div class="%1$s"></div>', $this->get_class_name($options["appearance"]));
            #sf_d($options);
            return $output;
            //return sprintf('<input type="text" name="%1$s" value="%2$s">', $this->get_options_name("name"), empty($saved_values["name"]) ? esc_attr($options["textDefaultName"]) : esc_attr($saved_values["name"]));
        }
    }
    simple_fields::register_field_type("simple_fields_field_divider");
}