Example #1
0
function simple_fields_options()
{
    $field_groups = get_option("simple_fields_groups");
    $post_connectors = get_option("simple_fields_post_connectors");
    /*
    	$field_groups = get_option("easy_fields_groups");
    	$post_connectors = get_option("easy_fields_post_connectors");
    	update_option("simple_fields_groups", $field_groups);
    	update_option("simple_fields_post_connectors", $post_connectors);
    	// */
    // for debug purposes, here we can reset the option
    #$field_groups = array(); update_option("simple_fields_groups", $field_groups);
    #$post_connectors = array(); update_option("simple_fields_post_connectors", $post_connectors);
    // first run? make sure field groups is an array
    if (!$field_groups) {
        $field_groups = array();
    }
    if (!$post_connectors) {
        $post_connectors = array();
    }
    // sort them by name
    function simple_fields_uasort($a, $b)
    {
        if ($a["name"] == $b["name"]) {
            return 0;
        }
        return strcasecmp($a["name"], $b["name"]);
    }
    uasort($field_groups, "simple_fields_uasort");
    uasort($post_connectors, "simple_fields_uasort");
    // sometimes we get a empty field group on pos zero.. wierd.. can't find the reason for it right now.. :(
    #if ($field_groups[0] && empty($field_groups[0]["name"])) {
    #	unset($field_groups[0]);
    #}
    ?>
	<div class="wrap">

		<h2><?php 
    echo EASY_FIELDS_NAME;
    ?>
</h2>

		<div class="clear"></div>

		<div class="simple-fields-bonny-plugins-inner-sidebar">
			<p>
				If you like this plugin you are welcome to support the author by donating:
			</p>
			<form action="https://www.paypal.com/cgi-bin/webscr" method="post" style="text-align: center">
				<input type="hidden" name="cmd" value="_s-xclick">
				<input type="hidden" name="encrypted" value="-----BEGIN PKCS7-----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-----END PKCS7-----
				">
				<input type="image" src="https://www.paypalobjects.com/WEBSCR-640-20110306-1/en_US/i/btn/btn_donateCC_LG.gif" border="0" name="submit" alt="PayPal - The safer, easier way to pay online!">
				<img alt="" border="0" src="https://www.paypalobjects.com/WEBSCR-640-20110306-1/en_US/i/scr/pixel.gif" width="1" height="1">
			</form>

			<p style="text-align: center">
				<a href="https://flattr.com/thing/116510/Simple-Fields" target="_blank">
				<img src="http://api.flattr.com/button/flattr-badge-large.png" alt="Flattr this" title="Flattr this" border="0" /></a>
			</p>

			<p>
				You can also show your appreciation 
				by giving the plugin a <a href="http://wordpress.org/extend/plugins/simple-fields/">good rating over at the plugin directory</a>
				or blog or tweet something nice about this plugin.
			</p>

			<h3>Support</h3>
			<p>If you have any problems with this plugins please check out the <a href="http://wordpress.org/tags/simple-fields?forum_id=10">support forum</a>.</p>
			
			<h3>More CMS related plugins</h3>
			<p>These are some more plugins that enhance the CMS functionality of WordPress. Please check them out!</p>
			<ul>
				<li><a href="http://wordpress.org/extend/plugins/cms-tree-page-view/">CMS Tree Page View</a></li>
				<li><a href="http://wordpress.org/extend/plugins/admin-menu-tree-page-view/">Admin Menu Tree Page View</a></li>
				<li><a href="http://wordpress.org/extend/plugins/simple-history/">Simple History</a></li>
			</ul>
			
			
		</div>
	<div class="simple-fields-settings-wrap">

		<?php 
    $action = isset($_GET["action"]) ? $_GET["action"] : null;
    /**
     * save post type defaults
     */
    if ("edit-post-type-defaults-save" == $action) {
        $post_type = $_POST["simple_fields_save-post_type"];
        $post_type_connector = $_POST["simple_fields_save-post_type_connector"];
        $post_type_defaults = (array) get_option("simple_fields_post_type_defaults");
        $post_type_defaults["{$post_type}"] = $post_type_connector;
        update_option("simple_fields_post_type_defaults", $post_type_defaults);
        $simple_fields_did_save_post_type_defaults = true;
        $action = "";
    }
    /**
     * edit post type defaults
     */
    if ("edit-post-type-defaults" == $action) {
        $post_type = $_GET["post-type"];
        global $wp_post_types;
        if (isset($wp_post_types[$post_type])) {
            $selected_post_type = $wp_post_types[$post_type];
            ?>
				<h3><?php 
            echo __('Post type', 'simple-fields') . ' ' . $post_type;
            ?>
</h3>
				
				<form action="<?php 
            echo EASY_FIELDS_FILE;
            ?>
&amp;action=edit-post-type-defaults-save" method="post">
					<table class="form-table">
						<tr>
							<th><?php 
            _e('Default post connector', 'simple-fields');
            ?>
</th>
							<td>
								<?php 
            $arr_post_connectors = simple_fields_get_post_connectors_for_post_type($post_type);
            if ($arr_post_connectors) {
                $selected_post_type_default = simple_fields_get_default_connector_for_post_type($post_type);
                ?>
									<select name="simple_fields_save-post_type_connector">
										<option <?php 
                echo $selected_post_type_default == "__none__" ? " selected='selected' " : "";
                ?>
 value="__none__"><?php 
                _e('No post connector', 'simple-fields');
                ?>
</option>
										<option <?php 
                echo $selected_post_type_default == "__inherit__" ? " selected='selected' " : "";
                ?>
 value="__inherit__"><?php 
                _e('Inherit from parent post', 'simple-fields');
                ?>
</option>
										<?php 
                foreach ($arr_post_connectors as $one_post_connector) {
                    echo "<option " . ($selected_post_type_default == $one_post_connector["id"] ? " selected='selected' " : "") . "value='{$one_post_connector["id"]}'>" . $one_post_connector["name"] . "</option>";
                }
                ?>
									</select>
									<?php 
            } else {
                ?>
<p><?php 
                _e('There are no post connectors for this post type.', 'simple-fields');
                ?>
</p><?php 
            }
            ?>
							</td>
						</tr>
					</table>
					<p class="submit">
						<input class="button-primary" type="submit" value="Save Changes" />
						<input type="hidden" name="simple_fields_save-post_type" value="<?php 
            echo $post_type;
            ?>
" />
						<?php 
            _e('or', 'simple_fields');
            ?>
						<a href="<?php 
            echo EASY_FIELDS_FILE;
            ?>
"><?php 
            _e('cancel', 'simple-fields');
            ?>
</a>
					</p>
				</form>
				<?php 
            #d($selected_post_type);
        }
    }
    /**
     * Delete a field group
     */
    if ("delete-field-group" == $action) {
        $field_group_id = (int) $_GET["group-id"];
        $field_groups[$field_group_id]["deleted"] = true;
        update_option("simple_fields_groups", $field_groups);
        $simple_fields_did_delete = true;
        $action = "";
    }
    /**
     * Delete a post connector
     */
    if ("delete-post-connector" == $action) {
        $post_connector_id = (int) $_GET["connector-id"];
        $post_connectors[$post_connector_id]["deleted"] = 1;
        update_option("simple_fields_post_connectors", $post_connectors);
        $simple_fields_did_delete_post_connector = true;
        $action = "";
    }
    /**
     * save a field group
     * including fields
     */
    if ("edit-field-group-save" == $action) {
        /*
        Array
        (
            [field_group_name] => Unnamed field group 59 changed
            [action] => update
            [page_options] => field_group_name
            [field_group_id] => 59
        )
        		[type_taxonomy_options] => Array
                                (
                                    [enabled_taxonomies] => Array
                                        (
                                            [0] => category
                                            [1] => post_tag
                                            [2] => post_format
                                            [3] => mentions
                                        )
        
                                )
        */
        #echo "<pre>";print_r($_POST);exit;
        if ($_POST) {
            $field_group_id = (int) $_POST["field_group_id"];
            $field_groups[$field_group_id]["name"] = stripslashes($_POST["field_group_name"]);
            $field_groups[$field_group_id]["description"] = stripslashes($_POST["field_group_description"]);
            $field_groups[$field_group_id]["repeatable"] = (bool) isset($_POST["field_group_repeatable"]);
            $field_groups[$field_group_id]["fields"] = (array) stripslashes_deep($_POST["field"]);
            /*
            if just one empty array like this, unset first elm
            happens if no fields have been added (now why would you do such an evil thing?!)
            	            [fields] => Array
            	                (
            	                    [0] => 
            	                )
            */
            if (sizeof($field_groups[$field_group_id]["fields"]) == 1 && empty($field_groups[$field_group_id]["fields"][0])) {
                unset($field_groups[$field_group_id]["fields"][0]);
            }
            // @todo: are these used? options are saved on a per field basis… right?!
            $field_groups[$field_group_id]["type_textarea_options"] = (array) @$_POST["type_textarea_options"];
            $field_groups[$field_group_id]["type_radiobuttons_options"] = (array) @$_POST["type_radiobuttons_options"];
            $field_groups[$field_group_id]["type_taxonomy_options"] = (array) @$_POST["type_taxonomy_options"];
            //$field_groups[$field_group_id]["type_taxonomyterm_options"] = (array) @$_POST["type_taxonomyterm_options"];
            // echo "<pre>fields_groups:"; print_r($field_groups);exit;
            update_option("simple_fields_groups", $field_groups);
            // echo "<pre>";print_r($field_groups);echo "</pre>";
            // we can have changed the options of a field group, so update connectors using this field group
            $post_connectors = (array) simple_fields_get_post_connectors();
            foreach ($post_connectors as $connector_id => $connector_options) {
                if (isset($connector_options["field_groups"][$field_group_id])) {
                    // field group existed, update name
                    $post_connectors[$connector_id]["field_groups"][$field_group_id]["name"] = stripslashes($_POST["field_group_name"]);
                }
            }
            update_option("simple_fields_post_connectors", $post_connectors);
            $simple_fields_did_save = true;
        }
        #$action = "simple-fields-edit-field-groups";
        $action = "";
    }
    /**
     * save a post connector
     */
    if ("edit-post-connector-save" == $action) {
        if ($_POST) {
            //d($_POST);
            #d($post_connectors);
            $connector_id = (int) $_POST["post_connector_id"];
            $post_connectors[$connector_id]["name"] = (string) stripslashes($_POST["post_connector_name"]);
            $post_connectors[$connector_id]["field_groups"] = (array) $_POST["added_fields"];
            $post_connectors[$connector_id]["post_types"] = (array) @$_POST["post_types"];
            $post_connectors[$connector_id]["hide_editor"] = (bool) @$_POST["hide_editor"];
            // a post type can only have one default connector, so make sure only the connector
            // that we are saving now has it; remove it from all others;
            /*
            $post_types_type_default = (array) $_POST["post_types_type_default"];
            foreach ($post_types_type_default as $one_default_post_type) {
            	foreach ($post_connectors as $one_post_connector) {
            		if (in_array($one_default_post_type, $one_post_connector["post_types_type_default"])) {
            			$array_key = array_search($one_default_post_type, $one_post_connector["post_types_type_default"]);
            			if ($array_key !== false) {
            				unset($post_connectors[$one_post_connector["id"]]["post_types_type_default"][$array_key]);
            			}
            		}
            	}
            }
            $post_connectors[$connector_id]["post_types_type_default"] = $post_types_type_default;
            */
            // for some reason I got an empty connector (array key was empty) so check for these and remove
            $post_connectors_tmp = array();
            foreach ($post_connectors as $key => $one_connector) {
                if (!empty($one_connector)) {
                    $post_connectors_tmp[$key] = $one_connector;
                }
            }
            $post_connectors = $post_connectors_tmp;
            update_option("simple_fields_post_connectors", $post_connectors);
            $simple_fields_did_save_connector = true;
        }
        #$action = "simple-fields-edit-connectors";
        $action = "";
    }
    /**
     * edit new or existing post connector
     */
    if ("edit-post-connector" == $action) {
        $connector_id = (int) $_GET["connector-id"];
        $highest_connector_id = 0;
        // if new, save it as unnamed, and then set to edit that
        if ($connector_id == 0) {
            foreach ($post_connectors as $oneConnector) {
                if ($oneConnector["id"] > $highest_connector_id) {
                    $highest_connector_id = $oneConnector["id"];
                }
            }
            $highest_connector_id++;
            $connector_id = $highest_connector_id;
            $post_connectors[$connector_id] = array("id" => $connector_id, "name" => "Unnamed post connector {$connector_id}", "field_groups" => array(), "post_types" => array(), "deleted" => FALSE, "hide_editor" => FALSE);
            update_option("simple_fields_post_connectors", $post_connectors);
        } else {
            // existing post connector
            // set a default value for hide_editor if it does not exist. did not exist until 0.5
            $post_connectors[$connector_id]["hide_editor"] = (bool) @$post_connectors[$connector_id]["hide_editor"];
        }
        $post_connector_in_edit = $post_connectors[$connector_id];
        // echo "<pre>";print_r($post_connector_in_edit);echo "</pre>";
        ?>
			<h3><?php 
        _e('Post Connector details', 'simple-fields');
        ?>
</h3>

			<form method="post" action="<?php 
        echo EASY_FIELDS_FILE;
        ?>
&amp;action=edit-post-connector-save">

				<table class="form-table">
					<tr>
						<th><label><?php 
        _e('Name', 'simple-fields');
        ?>
</label></th>
						<td><input type="text" id="post_connector_name" name="post_connector_name" class="regular-text" value="<?php 
        echo esc_html($post_connector_in_edit["name"]);
        ?>
" /></td>
					</tr>
					<tr>
						<th><?php 
        _e('Field Groups', 'simple-fields');
        ?>
</th>
	
						<td>
							<p>
								<select id="simple-fields-post-connector-add-fields">
									<option value=""><?php 
        _e('Add field group...', 'simple-fields');
        ?>
</option>
									<?php 
        foreach ($field_groups as $one_field_group) {
            if ($one_field_group["deleted"]) {
                continue;
            }
            ?>
<option value='<?php 
            echo $one_field_group["id"];
            ?>
'><?php 
            echo esc_html($one_field_group["name"]);
            ?>
</option><?php 
        }
        ?>
								</select>
							</p>
							<ul id="simple-fields-post-connector-added-fields">
								<?php 
        foreach ($post_connector_in_edit["field_groups"] as $one_post_connector_added_field) {
            if ($one_post_connector_added_field["deleted"]) {
                continue;
            }
            #d($one_post_connector_added_field);
            ?>
									<li>
										<div class='simple-fields-post-connector-addded-fields-handle'></div>
										<div class='simple-fields-post-connector-addded-fields-field-name'><?php 
            echo $one_post_connector_added_field["name"];
            ?>
</div>
										<input type='hidden' name='added_fields[<?php 
            echo $one_post_connector_added_field["id"];
            ?>
][id]' value='<?php 
            echo $one_post_connector_added_field["id"];
            ?>
' />
										<input type='hidden' name='added_fields[<?php 
            echo $one_post_connector_added_field["id"];
            ?>
][name]' value='<?php 
            echo $one_post_connector_added_field["name"];
            ?>
' />
										<input type='hidden' name='added_fields[<?php 
            echo $one_post_connector_added_field["id"];
            ?>
][deleted]' value='0' class="simple-fields-post-connector-added-field-deleted" />
										<div class="simple-fields-post-connector-addded-fields-options">
											<?php 
            _e('Context', 'simple-fields');
            ?>
											<select name='added_fields[<?php 
            echo $one_post_connector_added_field["id"];
            ?>
][context]' class="simple-fields-post-connector-addded-fields-option-context">
												<option <?php 
            echo "normal" == $one_post_connector_added_field["context"] ? " selected='selected' " : "";
            ?>
 value="normal"><?php 
            _e('normal');
            ?>
</option>
												<option <?php 
            echo "advanced" == $one_post_connector_added_field["context"] ? " selected='selected' " : "";
            ?>
 value="advanced"><?php 
            _e('advanced');
            ?>
</option>
												<option <?php 
            echo "side" == $one_post_connector_added_field["context"] ? " selected='selected' " : "";
            ?>
 value="side"><?php 
            _e('side');
            ?>
</option>
											</select>
											
											<?php 
            _e('Priority', 'simple-fields');
            ?>
											<select name='added_fields[<?php 
            echo $one_post_connector_added_field["id"];
            ?>
][priority]' class="simple-fields-post-connector-addded-fields-option-priority">
												<option <?php 
            echo "low" == $one_post_connector_added_field["priority"] ? " selected='selected' " : "";
            ?>
 value="low"><?php 
            _e('low');
            ?>
</option>
												<option <?php 
            echo "high" == $one_post_connector_added_field["priority"] ? " selected='selected' " : "";
            ?>
 value="high"><?php 
            _e('high');
            ?>
</option>
											</select>
										</div>
										<a href='#' class='simple-fields-post-connector-addded-fields-delete'><?php 
            _e('Delete', 'simple-fields');
            ?>
</a>
									</li>
									<?php 
        }
        ?>
							</ul>
						</td>
					</tr>
					
					<tr>
						<th><?php 
        _e('Options', 'simple-fields');
        ?>
</th>
						<td><input
							 type="checkbox" 
							 <?php 
        echo $post_connector_in_edit["hide_editor"] == TRUE ? " checked='checked' " : "";
        ?>
							 name="hide_editor" 
							 class="" 
							 value="1" />
							 <?php 
        _e('Hide the built in editor', 'simple-fields');
        ?>
						</td>
					</tr>
					
					<tr>
						<th>
							<?php 
        _e('Available for post types', 'simple-fields');
        ?>
						</th>
						<td>
							<table>
								<?php 
        global $wp_post_types;
        $arr_post_types_to_ignore = array("attachment", "revision", "nav_menu_item");
        foreach ($wp_post_types as $one_post_type) {
            if (!in_array($one_post_type->name, $arr_post_types_to_ignore)) {
                ?>
										<tr>
											<td>
												<input <?php 
                echo in_array($one_post_type->name, $post_connector_in_edit["post_types"]) ? " checked='checked' " : "";
                ?>
 type="checkbox" name="post_types[]" value="<?php 
                echo $one_post_type->name;
                ?>
" />
												<?php 
                echo $one_post_type->name;
                ?>
											</td>
											<?php 
                /*
                <!-- <td>
                	<input <?php echo (in_array($one_post_type->name, $post_connector_in_edit["post_types_type_default"]) ? " checked='checked' " : "") ?> type="checkbox" name="post_types_type_default[]" value="<?php echo $one_post_type->name ?>" />
                	Default connector for post type <?php echo $one_post_type->name ?>
                </td> -->
                */
                ?>
										</tr>
										<?php 
            }
        }
        ?>
							</table>
						</td>
					</tr>

				</table>
				<p class="submit">
					<input class="button-primary" type="submit" value="<?php 
        _e('Save Changes', 'simple-fields');
        ?>
" />
					<input type="hidden" name="action" value="update" />
					<!-- <input type="hidden" name="page_options" value="field_group_name" /> -->
					<input type="hidden" name="post_connector_id" value="<?php 
        echo $post_connector_in_edit["id"];
        ?>
" />
					or 
					<a href="<?php 
        echo EASY_FIELDS_FILE;
        ?>
"><?php 
        _e('cancel', 'simple-fields');
        ?>
</a>
				</p>
				<p class="simple-fields-post-connector-delete">
					<a href="<?php 
        echo EASY_FIELDS_FILE;
        ?>
&amp;action=delete-post-connector&amp;connector-id=<?php 
        echo $post_connector_in_edit["id"];
        ?>
"><?php 
        _e('Delete');
        ?>
</a>
				</p>

			</form>
			<?php 
    }
    /**
     * edit new or existing group
     */
    if ("edit-field-group" == $action) {
        $field_group_id = (int) $_GET["group-id"];
        $highest_field_id = 0;
        // if new, save it as unnamed, and then set to edit that
        if ($field_group_id == 0) {
            $highest_id = 0;
            foreach ($field_groups as $oneGroup) {
                if ($oneGroup["id"] > $highest_id) {
                    $highest_id = $oneGroup["id"];
                }
            }
            $highest_id++;
            $field_group_id = $highest_id;
            $field_groups[$field_group_id] = array("id" => $field_group_id, "name" => "Unnamed field group {$field_group_id}", "repeatable" => false, "fields" => array(), "deleted" => false);
            update_option("simple_fields_groups", $field_groups);
        } else {
            // existing field group
            // get highest group and field id
            foreach ($field_groups[$field_group_id]["fields"] as $one_field) {
                if ($one_field["id"] > $highest_field_id) {
                    $highest_field_id = $one_field["id"];
                }
            }
        }
        $field_group_in_edit = $field_groups[$field_group_id];
        ?>
			<form method="post" action="<?php 
        echo EASY_FIELDS_FILE;
        ?>
&amp;action=edit-field-group-save">
				<?php 
        #settings_fields('simple_fields_options');
        ?>
	            <h3><?php 
        _e('Field group details', 'simple-fields');
        ?>
</h3>
	            <table class="form-table">
	            	<tr>
	            		<th><label for="field_group_name"><?php 
        _e('Name', 'simple-fields');
        ?>
</label></th>
	            		<td>
	            			<input type="text" name="field_group_name" id="field_group_name" class="regular-text" value="<?php 
        echo esc_html($field_group_in_edit["name"]);
        ?>
" />
	            			
							<br />
	            			<label for="field_group_description">
								<?php 
        _e('Description', 'simple-fields');
        ?>
								<input type="text" name="field_group_description" id="field_group_description" class="regular-text" value="<?php 
        echo esc_html($field_group_in_edit["description"]);
        ?>
" />
							</label>

	            			<br />	
	            			<label for="field_group_repeatable">
								<input type="checkbox" <?php 
        echo $field_group_in_edit["repeatable"] == true ? "checked='checked'" : "";
        ?>
 value="1" id="field_group_repeatable" name="field_group_repeatable" />
								<?php 
        _e('Repeatable', 'simple-fields');
        ?>
							</label>
								
	            		</td>
	            	</tr>
	            	<tr>
	            		<th><?php 
        _e('Fields', 'simple-fields');
        ?>
</th>
	            		<td>
	            			<div id="simple-fields-field-group-existing-fields">
	            				<ul class='simple-fields-edit-field-groups-added-fields'>
									<?php 
        foreach ($field_group_in_edit["fields"] as $oneField) {
            if (!$oneField["deleted"]) {
                echo simple_fields_field_group_add_field_template($oneField["id"], $field_group_in_edit);
            }
        }
        ?>
	            				</ul>
	            			</div>
	            			<p><a href="#" id="simple-fields-field-group-add-field">+ <?php 
        _e('Add field', 'simple-fields');
        ?>
</a></p>
	            		</td>
	            	</tr>			
				</table>

				<p class="submit">
					<input class="button-primary" type="submit" value="<?php 
        _e('Save Changes', 'simple-fields');
        ?>
" />
					<input type="hidden" name="action" value="update" />
					<input type="hidden" name="page_options" value="field_group_name" />
					<input type="hidden" name="field_group_id" value="<?php 
        echo $field_group_in_edit["id"];
        ?>
" />
					<?php 
        _e('or', 'simple-fields');
        ?>
 
					<a href="<?php 
        echo EASY_FIELDS_FILE;
        ?>
"><?php 
        _e('cancel', 'simple-fields');
        ?>
</a>
				</p>
				<p class="simple-fields-field-group-delete">
					<a href="<?php 
        echo EASY_FIELDS_FILE;
        ?>
&amp;action=delete-field-group&amp;group-id=<?php 
        echo $field_group_in_edit["id"];
        ?>
"><?php 
        _e('Delete', 'simple-fields');
        ?>
</a>
				</p>
				
			</form>
	
			<script type="text/javascript">
				var simple_fields_highest_field_id = <?php 
        echo (int) $highest_field_id;
        ?>
;
			</script>
	
			<?php 
    }
    // view debug information
    if ("simple-fields-view-debug-info" == $action) {
        echo "<h3>Post Connectors</h3>\n";
        echo "<p>Called with function <code>simple_fields_get_post_connectors()</code>";
        echo "<pre>";
        print_r(simple_fields_get_post_connectors());
        echo "</pre>";
        echo "<hr />";
        echo "<h3>Field Groups</h3>\n";
        echo "<p>Called with function <code>simple_fields_get_field_groups()</code>";
        echo "<pre>";
        print_r(simple_fields_get_field_groups());
        echo "</pre>";
    }
    // overview, if no action
    if (!$action) {
        /**
         * view post connectors
         */
        $post_connector_count = 0;
        foreach ($post_connectors as $onePostConnector) {
            if (!$onePostConnector["deleted"]) {
                $post_connector_count++;
            }
        }
        /**
         * view existing field groups
         */
        ?>
			<div class="simple-fields-edit-field-groups">

				<h3><?php 
        _e('Field groups', 'simple-fields');
        ?>
</h3>

				<?php 
        if (isset($simple_fields_did_save) && $simple_fields_did_save) {
            ?>
<div id="message" class="updated"><p><?php 
            _e('Field group saved', 'simple-fields');
            ?>
</p></div><?php 
        } elseif (isset($simple_fields_did_delete) && $simple_fields_did_delete) {
            ?>
<div id="message" class="updated"><p><?php 
            _e('Field group deleted', 'simple-fields');
            ?>
</p></div><?php 
        } elseif (isset($simple_fields_did_delete_post_connector) && $simple_fields_did_delete_post_connector) {
            ?>
<div id="message" class="updated"><p><?php 
            _e('Post connector deleted', 'simple-fields');
            ?>
</p></div><?php 
        } elseif (isset($simple_fields_did_save_post_type_defaults) && $simple_fields_did_save_post_type_defaults) {
            ?>
<div id="message" class="updated"><p><?php 
            _e('Post type defaults saved', 'simple-fields');
            ?>
</p></div><?php 
        }
        $field_group_count = 0;
        foreach ($field_groups as $oneFieldGroup) {
            if (!$oneFieldGroup["deleted"]) {
                $field_group_count++;
            }
        }
        if ($field_groups == $field_group_count) {
            echo "<p>" . __('No field groups yet.', 'simple-fields') . "</p>";
        } else {
            echo "<ul class=''>";
            foreach ($field_groups as $oneFieldGroup) {
                if (!$oneFieldGroup["deleted"]) {
                    echo "<li><a href='" . EASY_FIELDS_FILE . "&amp;action=edit-field-group&amp;group-id={$oneFieldGroup['id']}'>{$oneFieldGroup['name']}</a></li>";
                }
            }
            echo "</ul>";
        }
        echo "<p><a class='button' href='" . EASY_FIELDS_FILE . "&amp;action=edit-field-group&amp;group-id=0'>+ " . __('New field group', 'simple-fields') . "</a></p>";
        ?>
			</div>
		
		
			<div class="simple-fields-edit-post-connectors">

				<h3><?php 
        _e('Post Connectors', 'simple-fields');
        ?>
</h3>

				<?php 
        if (isset($simple_fields_did_save_connector) && $simple_fields_did_save_connector) {
            ?>
<div id="message" class="updated"><p><?php 
            _e('Post connector saved', 'simple-fields');
            ?>
</p></div><?php 
        }
        if ($post_connector_count) {
            ?>
<ul><?php 
            foreach ($post_connectors as $one_post_connector) {
                if ($one_post_connector["deleted"]) {
                    continue;
                }
                ?>
							<li>
								<a href="<?php 
                echo EASY_FIELDS_FILE;
                ?>
&amp;action=edit-post-connector&amp;connector-id=<?php 
                echo $one_post_connector["id"];
                ?>
"><?php 
                echo $one_post_connector["name"];
                ?>
</a>
							</li>
							<?php 
            }
            ?>
</ul><?php 
        } else {
            ?>
					<!-- <p>No post connectors</p> -->
					<?php 
        }
        ?>
				<p>
					<a href="<?php 
        echo EASY_FIELDS_FILE;
        ?>
&amp;action=edit-post-connector&amp;connector-id=0" class="button">+ <?php 
        _e('New post connector', 'simple-fields');
        ?>
</a>
				</p>
				
			</div>

			<div class="easy-fields-post-type-defaults">
				<h3><?php 
        _e('Post type defaults', 'simple-fields');
        ?>
</h3>
				<?php 
        #$post_types = get_post_types();
        #d($post_types);
        ?>
				<ul>
					<?php 
        $post_types = get_post_types();
        $arr_post_types_to_ignore = array("attachment", "revision", "nav_menu_item");
        foreach ($post_types as $one_post_type) {
            $one_post_type_info = get_post_type_object($one_post_type);
            #d($one_post_type_info);
            if (!in_array($one_post_type, $arr_post_types_to_ignore)) {
                ?>
<li>
								<a href="<?php 
                echo EASY_FIELDS_FILE;
                ?>
&amp;action=edit-post-type-defaults&amp;post-type=<?php 
                echo $one_post_type;
                ?>
"><?php 
                echo $one_post_type_info->label;
                ?>
</a>
							</li><?php 
            }
        }
        ?>
				</ul>
			</div>	
			
			<div class="simple-fields-debug">
				<h3><?php 
        echo __('Debug', 'simple-fields');
        ?>
</h3>
				<ul>
					<li><a href='<?php 
        echo EASY_FIELDS_FILE;
        ?>
&amp;action=simple-fields-view-debug-info'><?php 
        echo __('View debug information', 'simple-fields');
        ?>
</a></li>
				</ul>
			</div>
			
			<?php 
    }
    // end simple_fields_options
    ?>
		</div>
	</div>	

	<?php 
}
Example #2
0
/**
 * fetch all information about the field group that a post has
 * returns connector structure, field groups, fields, and values
 * well.. everything! it's really funky.
 * return @array a really fat one!
 */
function simple_fields_get_all_fields_and_values_for_post($post_id)
{
    $post = get_post($post_id);
    $connector_to_use = simple_fields_get_selected_connector_for_post($post);
    $existing_post_connectors = simple_fields_get_post_connectors();
    $field_groups = get_option("simple_fields_groups");
    $selected_post_connector = $existing_post_connectors[$connector_to_use];
    if ($selected_post_connector == null) {
        return false;
    }
    foreach ($selected_post_connector["field_groups"] as $one_field_group) {
        // one_field_group = name, deleted, context, priority, id
        // now get all fields for that fieldgroup and join them together
        $selected_post_connector["field_groups"][$one_field_group["id"]] = array_merge($selected_post_connector["field_groups"][$one_field_group["id"]], $field_groups[$one_field_group["id"]]);
        // loop through all fields within this field group
        // now find out how many times this field group has been added
        // can be zero, 1 and several (if field group is repeatable)
        $num_added_field_groups = 0;
        while (get_post_meta($post_id, "_simple_fields_fieldGroupID_{$one_field_group["id"]}_fieldID_added_numInSet_{$num_added_field_groups}", true)) {
            $num_added_field_groups++;
        }
        // now fetch the stored values, one field at a time
        for ($num_in_set = 0; $num_in_set < $num_added_field_groups; $num_in_set++) {
            // fetch value for each field
            foreach ($selected_post_connector["field_groups"][$one_field_group["id"]]["fields"] as $one_field_id => $one_field_value) {
                $custom_field_key = "_simple_fields_fieldGroupID_{$one_field_group["id"]}_fieldID_{$one_field_id}_numInSet_{$num_in_set}";
                $saved_value = get_post_meta($post_id, $custom_field_key, true);
                // empty string if does not exist
                $selected_post_connector["field_groups"][$one_field_group["id"]]["fields"][$one_field_id]["saved_values"][$num_in_set] = $saved_value;
                $selected_post_connector["field_groups"][$one_field_group["id"]]["fields"][$one_field_id]["meta_keys"][$num_in_set] = $custom_field_key;
            }
        }
    }
    return $selected_post_connector;
}