public static function find($args = array()) { $defaults = array( "where" => "`type` = 't'" ); $r = wp_parse_args($args, $defaults); return parent::find($r); }
public static function get_sets() { global $wf, $meow_provider; $object_id = $_REQUEST["object_id"]; $post = $wf->post($object_id); $template = $_REQUEST["template"]; if ($template != "") { // switch the template in the $meow_provider $meow_provider->template_switch = $template; } $info = array(); $info["sets"] = array(); $set_ids = $_REQUEST["set_ids"]; if (isset($_REQUEST["set_ids"])) { foreach ($set_ids as $set_id) { if (trim($set_id) != "") { $is = array(); $set = MPM_FieldSet::find_by_id($set_id); if ($set) { $is["title"] = $set->display_label(); $is["id"] = $set_id; $meow_set = $post->set($set->name); $is["html"] = MPV_Meta::get_set($post, $meow_set); $is["templates"] = MPV_Meta::get_set_templates($post, $set); $info["sets"][] = $is; } } } } unset($meow_provider->template_switch); self::ajax_success($info); }
public function init() { $action = MasterPress::$action; // inform the view what to render in the info panel MasterPress::$view->is_taxonomy_set = true; if ($action == "manage-field-sets" || $action == "create-field-set" || $action == "edit-field-set" || $action == "delete-field-set" || $action == "delete-field") { // inform the view what to render in the info panel MasterPress::$view->parent = MPM_Taxonomy::find_by_id(MasterPress::$parent); } if ($action == "edit-field" || $action == "create-field") { // inform the view what to render in the info panel MasterPress::$view->parent = MPM_FieldSet::find_by_id(MasterPress::$parent); $p = MasterPress::$view->parent; // enqueue dependent scripts for all field types (could improve this in the future) foreach (MPFT::type_keys() as $type) { if ($ftc = MPFT::type_class($type)) { call_user_func( array($ftc, "enqueue") ); } } // enqueue the field type CSS $type = MasterPress::$model->type; MPFT::options_admin_head($type); } if ($action == "create-field-set") { MasterPress::$model->infer_position(); } if ($action == "create-field") { MasterPress::$model->field_set_id = MasterPress::$parent; MasterPress::$model->infer_position(); } }
public static function get_version() { global $wpdb; if (isset($_GET["id"])) { $id = $_GET["id"]; $version = $wpdb->get_row("SELECT * FROM `".MPU::site_table("versions")."` WHERE `version_id` = $id"); if ($version) { $ret = array("value" => MPU::db_decode($version->value)); if (isset($_GET["fetch_template"], $_GET["model_id"])) { $set = MPM_FieldSet::find_by_id($_GET["model_id"]); if ($set) { $template = MPV_Meta::get_preview_set_template($set); $ret["template"] = $template; } } self::ajax_success( $ret ); } else { self::ajax_error(__("The version could not be found", MASTERPRESS_DOMAIN)); } } else { self::ajax_error(__("Cannot fetch version. No version id was supplied", MASTERPRESS_DOMAIN)); } }
public function submit() { global $wpdb; $action = MasterPress::$action; if ($action == "edit") { $template = new MPM_Template(); if ($_POST["supports_type"] == "inherit") { $template->supports = "*"; } else { $template->supports = implode(",", $_POST["supports"]); } $template->visibility = $this->get_visibility_val("post_types"); $template->update(MasterPress::$id); return $template; } else if ($action == "create-field-set" || $action == "edit-field-set") { $field_set = new MPM_TemplateFieldSet(); // consume the post data $field_set->name = $_POST["name"]; $field_set->singular_name = $_POST["singular_name"]; $field_set->disabled = isset($_POST["disabled"]); $field_set->labels = $_POST["labels"]; $field_set->capabilities = self::handle_capabilities(); $field_set->visibility = $_POST["visibility"]; $field_set->allow_multiple = isset($_POST["allow_multiple"]); $field_set->type = "t"; // t = template $field_set->icon = self::handle_icon("icon", "icon_select"); $field_set->position = $_POST["position"]; $field_set->expanded = isset($_POST["expanded"]); $field_set->sidebar = isset($_POST["sidebar"]); $field_set->versions = $_POST["versions"]; $field_set->visibility = $this->get_visibility_val(); if (MPC::is_create()) { $field_set->insert(); } else if (MPC::is_edit()) { $field_set->update(MasterPress::$id); } if ($field_set->is_valid()) { if (MPC::is_edit()) { global $meow_provider; $meow_provider->migrate_field_set_meta($field_set, $_POST["name_original"]); } // we don't attach post types to these. they are implicitly linked to the built-in "page" post type // update other menu positions $op = $_POST["other_position"]; if (isset($op) && is_array($op)) { foreach ($op as $id => $position) { $wpdb->update(MPM::table("field-sets"), array( "position" => $position ), array( "id" => $id ), "%d", "%d" ); } } } return $field_set; } else if ($action == "delete-field-set") { $fg = MPM_FieldSet::find_by_id(MasterPress::$id); if ($fg) { $field_data_action = $_POST["field_data"]; if ($field_data_action == "delete") { $fg->delete_meta(); } } $fg->delete(); return true; } else if ($action == "delete-field") { $f = MPM_Field::find_by_id(MasterPress::$id); if ($f) { $field_data_action = $_POST["field_data"]; if ($field_data_action == "delete") { $f->delete_meta(); } } $f->delete(); return true; } else if ($action == "create-field" || $action == "edit-field") { // FIELD OPERATIONS (NOT FIELD GROUPS!) $field = new MPM_Field(); // consume the post data $field->field_set_id = $_POST["parent"]; $field->name = $_POST["name"]; $field->disabled = isset($_POST["disabled"]); $field->required = isset($_POST["required"]); $field->summary_options = $_POST["summary_options"]; $field->labels = $_POST["labels"]; $field->icon = self::handle_icon("icon", "icon_select"); $field->type = $_POST["type"]; $field->type_options = $_POST["type_options"]; $field->position = $_POST["position"]; $field->visibility = $this->get_visibility_val(); $field->capabilities = self::handle_capabilities(); if (MPC::is_create()) { $field->insert(); } else if (MPC::is_edit()) { $field->update(MasterPress::$id); } if ($field->is_valid()) { if (MPC::is_edit()) { global $meow_provider; $meow_provider->migrate_field_meta($field, $_POST["name_original"]); } // update other menu positions $op = $_POST["other_position"]; if (isset($op) && is_array($op)) { foreach ($op as $id => $position) { $wpdb->update(MPM::table("fields"), array( "position" => $position ), array( "id" => $id ), "%d", "%d" ); } } } return $field; } return false; }
public function submit() { global $wpdb, $wf; $action = MasterPress::$action; if ($action == "create") { $role_id = $_POST["name"]; if ($role_id == "") { MPV::err(__("A role name must be provided", MASTERPRESS_DOMAIN) ); return false; } // check that there isn't a role of this name already $role = $wf->role($role_id); if ($role && !is_woof_silent($role)) { MPV::err( sprintf( __("Sorry a role named %s already exists. Please choose another name", MASTERPRESS_DOMAIN), $role_id ) ); return false; } // all okay, save the role if (isset($_POST["display_name"]) && trim($_POST["display_name"]) != "") { $display_name = $_POST["display_name"]; } else { $display_name = WOOF_Inflector::titleize($role_id); } $caps = array_keys($_POST["cap"]); foreach ($_POST["new_caps"] as $cap) { if (trim($cap) != "") { $norm = WOOF_Inflector::underscore($cap); if (!in_array($norm, $_POST["all_caps"])) { $caps[] = $norm; } } } add_role($role_id, $display_name, array_fill_keys($caps, true) ); return true; } else if ($action == "edit") { $role_id = MasterPress::$id; $wf_role = $wf->role($role_id); if (!is_woof_silent($wf_role)) { $role = get_role($wf_role->id()); $all_caps = explode(",", $_POST["all_caps"]); $selected_caps = array_keys($_POST["cap"]); $role_caps = array_keys($role->capabilities); $add_caps = array_diff($selected_caps, $role_caps); $remove_caps = array_diff($all_caps, $selected_caps); foreach ($remove_caps as $cap) { if ($role->has_cap($cap)) { $role->remove_cap($cap); } } foreach ($_POST["new_caps"] as $cap) { if (trim($cap) != "") { $norm = WOOF_Inflector::underscore($cap); if (!in_array($norm, $all_caps)) { $add_caps[] = $norm; } } } foreach ($add_caps as $cap) { if (!$role->has_cap($cap)) { $role->add_cap($cap); } } } return true; } else if ($action == "create-field-set" || $action == "edit-field-set") { $field_set = new MPM_RoleFieldSet(); // consume the post data $field_set->name = $_POST["name"]; $field_set->singular_name = $_POST["singular_name"]; $field_set->disabled = isset($_POST["disabled"]); $field_set->labels = $_POST["labels"]; $field_set->visibility = $_POST["visibility"]; $field_set->capabilities = self::handle_capabilities(); $field_set->allow_multiple = isset($_POST["allow_multiple"]); $field_set->type = "r"; // r = role $field_set->icon = self::handle_icon("icon", "icon_select"); $field_set->position = $_POST["position"]; $field_set->expanded = isset($_POST["expanded"]); $field_set->sidebar = false; $field_set->visibility = $this->get_visibility_val("sites,roles"); if (MPC::is_create()) { $field_set->insert(); } else if (MPC::is_edit()) { $field_set->update(MasterPress::$id); } if ($field_set->is_valid()) { if (MPC::is_edit()) { global $meow_provider; $meow_provider->migrate_field_set_meta($field_set, $_POST["name_original"]); } // we don't attach post types to these. they are implicitly linked to the built-in "page" post type // update other menu positions $op = $_POST["other_position"]; if (isset($op) && is_array($op)) { foreach ($op as $id => $position) { $wpdb->update(MPM::table("field-sets"), array( "position" => $position ), array( "id" => $id ), "%d", "%d" ); } } } return $field_set; } else if ($action == "delete-field-set") { $fg = MPM_FieldSet::find_by_id(MasterPress::$id); if ($fg) { $field_data_action = $_POST["field_data"]; if ($field_data_action == "delete") { $fg->delete_meta(); } } $fg->delete(); return true; } else if ($action == "delete-field") { $f = MPM_Field::find_by_id(MasterPress::$id); if ($f) { $field_data_action = $_POST["field_data"]; if ($field_data_action == "delete") { $f->delete_meta(); } } $f->delete(); return true; } else if ($action == "create-field" || $action == "edit-field") { // FIELD OPERATIONS (NOT FIELD GROUPS!) $field = new MPM_Field(); // consume the post data $field->field_set_id = $_POST["parent"]; $field->name = $_POST["name"]; $field->disabled = isset($_POST["disabled"]); $field->required = isset($_POST["required"]); $field->summary_options = $_POST["summary_options"]; $field->labels = $_POST["labels"]; $field->icon = self::handle_icon("icon", "icon_select"); $field->type = $_POST["type"]; $field->type_options = $_POST["type_options"]; $field->position = $_POST["position"]; $field->visibility = $this->get_visibility_val(); $field->capabilities = self::handle_capabilities(); if (MPC::is_create()) { $field->insert(); } else if (MPC::is_edit()) { $field->update(MasterPress::$id); } if ($field->is_valid()) { if (MPC::is_edit()) { global $meow_provider; $meow_provider->migrate_field_meta($field, $_POST["name_original"]); } // update other menu positions $op = $_POST["other_position"]; if (isset($op) && is_array($op)) { foreach ($op as $id => $position) { $wpdb->update(MPM::table("fields"), array( "position" => $position ), array( "id" => $id ), "%d", "%d" ); } } } return $field; } return false; }
public function field_set() { if (!$this->_field_set) { $this->_field_set = MPM_FieldSet::find_by_id( $this->field_set_id ); } return $this->_field_set; }
protected function export_rep($export) { global $wf; // create the associative array representation $rep = array( "created" => date("c"), "masterpress_version" => MasterPress::$version, "icons" => array() ); $types = array(); if (isset($export["post_types"])) { $rep["post_types"] = array(); foreach (array_keys($export["post_types"]) as $post_type_name) { $post_type = MPM_PostType::find_by_name($post_type_name); $r = $post_type->rep(); $rep["post_types"][] = $r; self::add_icon($rep["icons"], $r, "menu_icon"); if (isset($r["field_sets"])) { foreach ($r["field_sets"] as $set) { self::add_icon($rep["icons"], $set); foreach ($set["fields"] as $field) { self::add_icon($rep["icons"], $field); $types[$field["type"]] = true; } } } } } if (isset($export["taxonomies"])) { $rep["taxonomies"] = array(); foreach (array_keys($export["taxonomies"]) as $tax_name) { $tax = MPM_Taxonomy::find_by_name($tax_name); $r = $tax->rep(); $rep["taxonomies"][] = $r; self::add_icon($rep["icons"], $r, "title_icon"); if (isset($r["field_sets"])) { foreach ($r["field_sets"] as $set) { self::add_icon($rep["icons"], $set); foreach ($set["fields"] as $field) { self::add_icon($rep["icons"], $field); $types[$field["type"]] = true; } } } } } if (isset($export["shared_field_sets"])) { $rep["shared_field_sets"] = array(); foreach (array_keys($export["shared_field_sets"]) as $id) { $set = MPM_FieldSet::find_by_id($id); $r = $set->rep(); self::add_icon($rep["icons"], $r); $rep["shared_field_sets"][] = $r; if (isset($r["fields"])) { foreach ($r["fields"] as $field) { self::add_icon($rep["icons"], $field); $types[$field["type"]] = true; } } } } if (isset($export["site_field_sets"])) { $rep["site_field_sets"] = array(); foreach (array_keys($export["site_field_sets"]) as $id) { $set = MPM_FieldSet::find_by_id($id); $r = $set->rep(); $rep["site_field_sets"][] = $r; self::add_icon($rep["icons"], $r); if (isset($r["fields"])) { foreach ($r["fields"] as $field) { self::add_icon($rep["icons"], $field); $types[$field["type"]] = true; } } } } if (isset($export["templates"])) { $rep["templates"] = array(); foreach (array_keys($export["templates"]) as $template) { $template = MPM_Template::find_by_id($template); $r = $template->rep(); $rep["templates"][] = $r; if (isset($r["field_sets"])) { foreach ($r["field_sets"] as $set) { self::add_icon($rep["icons"], $set); foreach ($set["fields"] as $field) { self::add_icon($rep["icons"], $field); $types[$field["type"]] = true; } } } } } if (isset($export["roles"])) { $rep["roles"] = array(); foreach (array_keys($export["roles"]) as $role) { $wr = $wf->role($role); $rr = array("id" => $role, "name" => $wr->name, "capabilities" => $wr->capabilities, "field_sets" => array()); foreach (MPM_RoleFieldSet::find_by_role($role, "id ASC") as $set) { $r = $set->rep(); self::add_icon($rep["icons"], $r); if (isset($r["fields"])) { foreach ($r["fields"] as $field) { $types[$field["type"]] = true; self::add_icon($rep["icons"], $field); } } $rr["field_sets"][] = $r; } $rep["roles"][] = $rr; } } $rep["field_types"] = array_keys($types); return $rep; }
public function submit() { global $wpdb; $action = MasterPress::$action; if ($action == "create" || $action == "edit") { $builtin = $_POST["_builtin"] == "true"; $external = $_POST["_external"] == "true"; if ($builtin) { $post_type = MPM_PostType::find_by_name($_POST["name"]); $post_type->supports = implode(",", $_POST["supports"]); $post_type->disabled = isset($_POST["disabled"]); $post_type->visibility = $this->get_visibility_val("sites"); $post_type->columns = $_POST["columns"]; $post_type->labels = $_POST["labels"]; $post_type->menu_icon = self::handle_icon("menu_icon", "menu_icon_select"); if ($_POST["name"] == "page" && $post_type->menu_icon == "") { $post_type->menu_icon = "menu-icon-pages.png"; // restore default icon } if ($_POST["name"] == "post" && $post_type->menu_icon == "") { $post_type->menu_icon = "menu-icon-posts.png"; // restore default icon } if ($action == "edit") { $post_type->update(MasterPress::$id); } } else if ($external) { $post_type = MPM_PostType::find_by_name($_POST["name"]); $post_type->columns = $_POST["columns"]; $post_type->menu_icon = self::handle_icon("menu_icon", "menu_icon_select"); if ($action == "edit") { $post_type->update(MasterPress::$id); } } else { $post_type = new MPM_PostType(true); // consume the post data $post_type->name = $_POST["name"]; $post_type->plural_name = $_POST["plural_name"]; $post_type->disabled = isset($_POST["disabled"]); $post_type->labels = $_POST["labels"]; $post_type->description = $_POST["description"]; $post_type->publicly_queryable = isset($_POST["publicly_queryable"]); $post_type->exclude_from_search = isset($_POST["exclude_from_search"]); $post_type->show_ui = isset($_POST["show_ui"]); $post_type->show_in_menu = isset($_POST["show_in_menu"]); $post_type->hierarchical = isset($_POST["hierarchical"]); $post_type->menu_position = $_POST["menu_position"]; $post_type->menu_sub_position = $_POST["menu_sub_position"]; $post_type->menu_icon = self::handle_icon("menu_icon", "menu_icon_select"); $post_type->manage_sort_order = $_POST["manage_sort_order"]; $cap_type = $_POST["capability_type"]; if ($cap_type == "specific") { $post_type->capability_type = $_POST["name"]; } else if ($cap_type == "custom" && trim($_POST["capability_type_custom_value"]) != "") { $post_type->capability_type = $_POST["capability_type_custom_value"]; } else { $post_type->capability_type = $cap_type; } $post_type->capabilities = MPC::post_val("capabilities"); $post_type->map_meta_cap = isset($_POST["map_meta_cap"]); $post_type->hierarchical = isset($_POST["hierarchical"]); $post_type->supports = MPC::post_implode_val("supports"); $post_type->permalink_epmask = $_POST["permalink_epmask"]; $post_type->has_archive = isset($_POST["has_archive"]); $post_type->visibility = $this->get_visibility_val("sites,post_types"); $post_type->show_in_menu = isset($_POST["show_in_menu"]); $rewrite = array( "slug" => $_POST["rewrite"]["slug"], "with_front" => isset($_POST["rewrite"]["with_front"]), "feeds" => isset($_POST["rewrite"]["feeds"]) ); $post_type->rewrite = $rewrite; $post_type->query_var = $_POST["query_var"]; $post_type->can_export = isset($_POST["can_export"]); $post_type->show_in_nav_menus = isset($_POST["show_in_nav_menus"]); $post_type->_builtin = false; $post_type->_external = $_POST["_external"] == "true"; $post_type->columns = $_POST["columns"]; if ($action == "create") { $post_type->insert(); } else if ($action == "edit") { $post_type->update(MasterPress::$id); if ($post_type->is_valid()) { global $meow_provider; $meow_provider->migrate_post_type($post_type, $_POST["name_original"]); } } } if ($post_type->is_valid() && !$external) { // auto-generate a sprite icon MPU::create_icon_sprite($post_type->menu_icon, "", true); // attach any taxonomies and shared field sets $post_type->unlink_taxonomies(); if (MPC::post_val("taxonomies") != "" && count(MPC::post_val("taxonomies"))) { $post_type->link_taxonomies( MPM_Taxonomy::find_by_name_in( $_POST["taxonomies"] ) ); } // update the menu positions of other post types $omp = MPC::post_val("other_menu_position"); $omsp = MPC::post_val("other_menu_sub_position"); if (isset($omp) && is_array($omp)) { foreach ($omp as $name => $position) { $wpdb->update(MPM::table("post-types"), array( "menu_position" => $position, "menu_sub_position" => $omsp[$name] ), array( "name" => $name ), "%d", "%s" ); } } MasterPress::flag_for_rewrite(); } return $post_type; } else if ($action == "delete") { $pt = MPM_PostType::find_by_id(MasterPress::$id); $pt->delete( array( "posts" => $_POST["posts"], "posts_reassign_type" => $_POST["posts_reassign_type"], "field_sets" => $_POST["field_sets"], "field_data" => $_POST["field_data"] ) ); MasterPress::flag_for_rewrite(); return true; } else if ($action == "create-field-set" || $action == "edit-field-set") { $field_set = new MPM_FieldSet(); // consume the post data $field_set->name = $_POST["name"]; $field_set->singular_name = $_POST["singular_name"]; $field_set->disabled = isset($_POST["disabled"]); $field_set->labels = $_POST["labels"]; $field_set->allow_multiple = isset($_POST["allow_multiple"]); $field_set->visibility = $_POST["visibility"]; $field_set->capabilities = self::handle_capabilities(); $field_set->type = "p"; // p = shared $field_set->position = $_POST["position"]; $field_set->icon = self::handle_icon("icon", "icon_select"); $field_set->expanded = isset($_POST["expanded"]); $field_set->sidebar = isset($_POST["sidebar"]); $field_set->versions = $_POST["versions"]; $field_set->visibility = $this->get_visibility_val("sites,templates,post_types"); $post_type = MPM_PostType::find_by_id(MasterPress::$parent); // inform the validation of the post type $field_set->meta("post_type", $post_type); if (MPC::is_create()) { $field_set->insert(); } else if (MPC::is_edit()) { $field_set->update(MasterPress::$id); } if ($field_set->is_valid()) { if (MPC::is_edit()) { global $meow_provider; $meow_provider->migrate_field_set_meta($field_set, $_POST["name_original"]); } // update other menu positions if (isset($_POST["other_position"])) { $op = $_POST["other_position"]; if (isset($op) && is_array($op)) { foreach ($op as $id => $position) { $wpdb->update(MPM::table("field-sets"), array( "position" => $position ), array( "id" => $id ), "%d", "%d" ); } } } } return $field_set; } else if ($action == "delete-field-set") { $fg = MPM_FieldSet::find_by_id(MasterPress::$id); if ($fg) { $field_data_action = $_POST["field_data"]; if ($field_data_action == "delete") { $fg->delete_meta(); } } $fg->delete(); return true; } else if ($action == "delete-field") { $f = MPM_Field::find_by_id(MasterPress::$id); if ($f) { $field_data_action = $_POST["field_data"]; if ($field_data_action == "delete") { $f->delete_meta(); } } $f->delete(); return true; } else if ($action == "create-field" || $action == "edit-field") { // FIELD OPERATIONS (NOT FIELD GROUPS!) $field = new MPM_Field(); // consume the post data $field->field_set_id = $_POST["parent"]; $field->name = $_POST["name"]; $field->disabled = isset($_POST["disabled"]); $field->summary_options = $_POST["summary_options"]; $field->required = isset($_POST["required"]); $field->labels = $_POST["labels"]; $field->type = $_POST["type"]; $field->icon = self::handle_icon("icon", "icon_select"); if (isset($_POST["type_options"])) { $field->type_options = $_POST["type_options"]; } $field->position = $_POST["position"]; $field->visibility = $this->get_visibility_val("sites,templates,post_types"); $field->capabilities = self::handle_capabilities(); $fg = MPM_FieldSet::find_by_id($_POST["parent"]); if (MPC::is_create()) { $field->insert(); } else if (MPC::is_edit()) { $field->update(MasterPress::$id); } if ($field->is_valid()) { // update other menu positions if (MPC::is_edit()) { global $meow_provider; $meow_provider->migrate_field_meta($field, $_POST["name_original"]); } if (isset($_POST["other_position"])) { $op = $_POST["other_position"]; if (isset($op) && is_array($op)) { foreach ($op as $id => $position) { $wpdb->update(MPM::table("fields"), array( "position" => $position ), array( "id" => $id ), "%d", "%d" ); } } } } return $field; } return false; }
public function delete() { global $wpdb; $wpdb->query("DELETE FROM ".MPU::table("fields")." WHERE field_set_id = ".$this->id); parent::delete(); }
public function grid() { MPC::incl("post-types"); MPV::incl("fields"); MPV::incl("post-types"); $info = MasterPress::$view; $parent = $info->parent; $has_actions = MasterPress::current_user_can("edit_post_type_field_sets,delete_post_type_field_sets,edit_post_type_fields,delete_post_type_fields"); $can_edit = MasterPress::current_user_can("edit_post_type_field_sets"); $can_delete = MasterPress::current_user_can("delete_post_type_field_sets"); $can_create = MasterPress::current_user_can("create_post_type_field_sets"); $can_create_fields = MasterPress::current_user_can("create_post_type_fields"); $can_edit_fields = MasterPress::current_user_can("edit_post_type_fields"); $can_delete_fields = MasterPress::current_user_can("delete_post_type_fields"); $less = ($can_create_fields) ? 1 : 0; $colspan = ( $has_actions ? 4 : 3 ) - $less; ?> <div class="title-info-panel"> <div class="title-info-panel-lt"> <?php if (get_class($parent) == "MPM_PostType") : ?> <h3 class="post-type"><i class="mp-icon mp-icon-post-type mp-icon-post-type-<?php echo $parent->name ?>"></i><span class="label"><?php echo MPV_PostTypes::__s() ?>:</span><span class="value"> <?php echo $parent->display_label() ?></span></h3> <input id="post_type_name" type="hidden" value="<?php echo $parent->name ?>" /> <?php endif; ?> </div> </div> <?php MPV::messages(); ?> <?php $field_sets = MPM_FieldSet::find_by_post_type($parent, "name ASC"); ?> <?php MPV::field_set_icon_styles($field_sets); ?> <?php foreach ($field_sets as $field_set) { if (MPC::is_deleting($field_set->id, "delete-field-set")) { $this->confirm_delete($field_set); } else { foreach ($field_set->fields() as $field) { if (MPC::is_deleting($field->id, "delete-field")) { $this->confirm_delete_field($field); } } } } ?> <?php if (count($field_sets)) : ?> <table cellspacing="0" class="grid grid-field-sets"> <thead> <tr> <th class="first type"><i class="types"></i><span><?php _e("Type", MASTERPRESS_DOMAIN) ?></span></th> <th class="label"><i class="label-string"></i><span><?php _e("Label", MASTERPRESS_DOMAIN) ?></span></th> <th class="front-end-name <?php echo $has_actions ? "" : "last" ?>"><i class="script-php"></i><span><?php _e("Front End Name", MASTERPRESS_DOMAIN) ?></span></th> <?php if ($has_actions) : ?> <th class="actions last"><i class="buttons"></i><span><?php _e("Actions", MASTERPRESS_DOMAIN) ?></span></th> <?php endif; ?> </tr> </thead> <tbody> <?php $fg_count = 0; ?> <?php foreach ($field_sets as $field_set) : $fg_count++; ?> <?php $display = $field_set->display_label(); ?> <?php $display_td = $display; if ($field_set->icon != "") { $display_td = WOOF_HTML::tag("span", array("class" => "with-icon field-set-".$field_set->id), $display); } ?> <?php $deleting_class = MPC::is_deleting($field_set->id, "delete-field-set") ? 'deleting' : ''; $editable_class = $can_edit ? " editable " : ""; $meta = $can_edit ? "{ href: '".MasterPress::admin_url("post-types", "edit-field-set", array("id" => $field_set->id, "parent" => MasterPress::$parent) )."' }" : ""; ?> <?php $disabled = $field_set->disabled ? "disabled" : ""; $title = $field_set->disabled ? ' title="'.__("this field set is disabled", MASTERPRESS_DOMAIN).'" ' : ""; ?> <?php if (!$field_set->in_current_site()) { $disabled = "disabled"; $title = ' title="'.__("field set is not currently available in this site (multi-site setting)", MASTERPRESS_DOMAIN).'" '; } ?> <tr <?php echo $title ?> class="<?php echo $disabled ?> <?php echo $editable_class.$deleting_class ?> <?php echo MPV::updated_class("edit-field-set,create-field-set", $field_set->id) ?> <?php echo $meta ?>"> <?php if ($field_set->allow_multiple) : ?> <th class="first type icon"><i class="metabox-add-remove-large" title="<?php _e("Field Set (Multiple Items)", MASTERPRESS_DOMAIN) ?>"></i></th> <?php else : ?> <th class="first type icon"><i class="metabox-large" title="<?php _e("Field Set", MASTERPRESS_DOMAIN) ?>"></i></th> <?php endif; ?> <th class="label"><strong><?php echo $display_td ?></strong></th> <th class="front-end-name <?php echo $has_actions ? "" : "last" ?>"><span class="tt"><?php echo $field_set->display_name() ?></span></th> <?php if ($has_actions) : ?> <th class="actions last"> <div> <?php if (MPC::is_deleting($field_set->id, "delete-field-set")) : ?> <span class="confirm-action"> </span> <?php else: ?> <?php if ($can_edit) : ?> <?php echo MPV::action_button("post-types", "edit-field-set", self::__edit(), array("id" => $field_set->id, "parent" => MasterPress::$parent), array("class" => "button button-edit") ); ?> <?php endif; ?> <?php if ($can_delete) : ?> <?php echo MPV::action_button("post-types", "delete-field-set", self::__delete(), array("id" => $field_set->id, "parent" => MasterPress::$parent), array("class" => "button button-delete") ); ?> <?php endif; ?> <?php endif; ?> </div> </th> <?php endif; // has_actions ?> </tr> <?php $count = 0; $fields = $field_set->fields(); ?> <?php foreach ($fields as $field) : $count++; $first = $count == 1 ? 'first' : ''; $disabled = $field_set->disabled || $field->disabled ? "disabled" : ""; $title = ($field_set->disabled || $field->disabled) ? ' title="'.__("this field is disabled", MASTERPRESS_DOMAIN).'" ' : ""; ?> <?php if (!$field_set->in_current_site() || !$field->in_current_site()) { $disabled = "disabled"; $title = ' title="'.__("field is not currently available in this site (multi-site setting)", MASTERPRESS_DOMAIN).'" '; } ?> <?php $deleting_class = MPC::is_deleting($field_set->id, "delete-field-set") || MPC::is_deleting($field->id, "delete-field") ? 'deleting' : ''; $editable_class = $can_edit_fields ? " editable " : ""; $meta = $can_edit ? "{ href: '".MasterPress::admin_url("post-types", "edit-field", array("id" => $field->id, "gparent" => $_GET["parent"], "parent" => $field_set->id) )."' }" : ""; ?> <?php if ($type_class = MPFT::type_class($field->type)) : ?> <tr <?php echo $title ?> class="sub <?php echo $editable_class.$deleting_class ?> <?php echo $disabled ?> <?php echo $first ?> <?php echo $count % 2 == 0 ? "even" : "" ?> <?php echo MPV::updated_class("edit-field,create-field", $field->id) ?> <?php echo $meta ?>"> <td class="type icon first" title="<?php echo call_user_func( array($type_class, "__s") ) ?>"><span class="mp-icon mp-icon-field-type-<?php echo $field->type ?>"></span></td> <td class="label"><strong><?php echo $field->display_label() ?></strong></td> <td class="front-end-name <?php echo $has_actions ? "" : "last" ?>"><span class="tt"><span class="arrow">-> </span><?php echo $field->display_name() ?></span></td> <?php if ($has_actions) : ?> <td class="actions last"> <div> <?php if (MPC::is_deleting($field->id, "delete-field")) : ?> <span class="confirm-action"> </span> <?php else: ?> <?php if ($can_edit_fields) : ?> <?php echo MPV::action_button("post-types", "edit-field", self::__edit(), array("id" => $field->id, "gparent" => $_GET["parent"], "parent" => $field_set->id), array("class" => "button button-edit") ); ?> <?php endif; ?> <?php if ($can_delete_fields) : ?> <?php echo MPV::action_button("post-types", "delete-field", self::__delete(), array("id" => $field->id, "gparent" => $_GET["parent"], "parent" => $parent->id), array("class" => "button button-delete") ); ?> <?php endif; ?> <?php endif; ?> </div> </td> <?php endif; // has_actions ?> </tr> <?php else: ?> <!-- TODO - TYPE CLASS DOESN'T EXIST --> <?php endif; ?> <?php endforeach; ?> <tr class="summary <?php echo $can_create_fields ? "editable" : "" ?>"> <?php if (count($fields)) : ?> <td colspan="<?php echo $colspan ?>" class="first <?php echo $can_create_fields ? "" : "last" ?>"><?php printf( __( "%s contains %s", MASTERPRESS_DOMAIN ), $display, MPU::__items( $field_set->field_count(), __("%d custom field", MASTERPRESS_DOMAIN), __("%d custom fields", MASTERPRESS_DOMAIN) ) ) ?></td> <?php else: ?> <td colspan="<?php echo $colspan ?>" class="hl first last"><span><?php printf( __( "<strong>%s</strong> is not yet active as it contains <em>no custom fields</em>. Click here to create one", MASTERPRESS_DOMAIN ), $display ); ?></span></td> <?php endif; ?> <?php if ($can_create_fields) : ?> <td class="last actions <?php echo count($fields) ? "" : "hl" ?>"> <?php echo MPV::action_button("post-types", "create-field", self::__create(MPV_Fields::__s()), array("gparent" => $_GET["parent"], "parent" => $field_set->id), array("class" => "button create-field") ); ?> </td> <?php endif; // can_create_fields ?> </tr> <tr class="gap <?php if ($fg_count == count($field_sets)) { echo "gap-last"; } ?>"> <td colspan="4"> </td> </tr> <?php endforeach; ?> </tbody> </table> <?php if ($can_create) : ?> <div class="grid-foot-controls"> <?php echo MPV::action_button("post-types", "create-field-set", MPV::__create( MPV_FieldSets::__s() ), array("parent" => $parent->id ) ); ?> </div> <?php endif; ?> <?php else: ?> <?php if ($can_create) : ?> <a href="<?php echo MasterPress::admin_url("post-types", "create-field-set", array("parent" => MasterPress::$parent)) ?>" class="no-items-create"> <i class="plus-circle"></i> <span><?php printf( __( "The <strong>%s</strong> post type currently has <em>no field sets</em>. Click here to create one.", MASTERPRESS_DOMAIN ), $parent->display_label() ); ?></span> </a> <?php endif; ?> <?php endif; ?> <?php } // end grid()
public function post_type_field_sets($post_type_name, $template_name = "", $orderby = "position ASC") { global $wf; if (is_null($template_name)) { $template_name = ""; } $args = array($post_type_name, $template_name, $orderby); if (is_null($ret = $this->property_cache_args("post_type_field_sets", $args ))) { $this->field_types = array(); global $wpdb; $field_sets_table = MPM::table("field-sets"); $fields_table = MPM::table("fields"); $select_list = $this->assigned_select_list(); $sql = " SELECT $select_list FROM $field_sets_table s INNER JOIN $fields_table f ON s.id = f.`field_set_id` WHERE (s.type = 'p' OR s.type = 's') AND ".MPM::visibility_rlike("post_types", $post_type_name, "s.")." AND ".MPM::visibility_rlike("post_types", $post_type_name, "f."); if ($template_name != "") { // filter by template too $sql .= " AND ".MPM::visibility_rlike("templates", $template_name, "s.")." AND ".MPM::visibility_rlike("templates", $template_name, "f."); } $sql .= " AND f.disabled = 0 AND s.disabled = 0 ORDER BY set_type, set_position, field_position; "; $field_sets = array(); $fields_by_set = array(); $results = $wpdb->get_results($sql); if ($template_name != "") { $template_results = $this->template_field_sets($template_name); if ($template_results && count($template_results)) { $results = array_merge($results, $template_results); } } foreach ($results as $result) { $set_name = $result->set_name; $set_type = $result->set_type; $use_set = true; $use_field = true; if (isset($field_sets[$set_name])) { if ($set_type == $field_sets[$set_name]["type"]) { $use_set = false; // we already have this set recorded } if ($set_type == 't' && in_array($field_sets[$set_name]["type"], array('s','p'))) { // clear any existing fields already set $fields_by_set[$set_name] = null; } if ($set_type == 's' && $field_sets[$set_name]["type"] == 'p') { // the existing set is a post type field set, which holds greater specificity than this shared set, so don't use this set or field $use_set = false; $use_field = false; } if (in_array($set_type, array('p','s')) && $field_sets[$set_name]["type"] == 't') { // the existing set is a template field set, which holds greater specificity than this shared or post type set, so don't use this set's info $use_set = false; $use_field = false; } } if ($use_set) { $field_sets[$set_name] = $this->set_data_from_result($result); } // now record the field too if ($use_field) { if (!in_array($result->field_type, $this->field_types)) { $this->field_types[] = $result->field_type; } $fields_by_set[$set_name][$result->field_name] = $this->field_data_from_result($result); } } // endforeach $field_set_models = array(); foreach ($field_sets as $field_set) { if ($field_set["type"] == "s") { $field_set_model = new MPM_SharedFieldSet(); } else { $field_set_model = new MPM_FieldSet(); } $field_set_model->set_from_row($field_set); $field_models = array(); $fields = $fields_by_set[$field_set["name"]]; if (is_array($fields) && count($fields)) { foreach ($fields as $field) { $field_model = new MPM_Field(); $field_model->set_from_row($field); if ($field_model->in_current_site()) { $field_models[$field["name"]] = $field_model; } } $field_set_model->set_fields($field_models); } if ($field_set_model->in_current_site()) { $field_set_models[$field_set_model->name] = $field_set_model; } } $ret = $this->property_cache_args("post_type_field_sets", $args, $field_set_models ); } return $ret; }
public function validate_name($op) { if ($this->name != "") { // check there isn't already a field set with this name $post_type = $this->meta("post_type"); if ($this->name != "") { $extra_check = ""; if ($op != "insert") { $extra_check = " AND fg.id <> ".$this->id." "; } } // check if a field set already exists specific to this post type if ($post_type) { $sql = "SELECT * FROM ".MPU::table("field-sets")." fg WHERE type = 'p' AND fg.name = '{$this->name}' AND ".MPM::visibility_rlike("post_types", $post_type->name).$extra_check; $result = MPM_FieldSet::get_model("field-set", $sql ); } if (isset($result) && $result) { $this->err(sprintf(__("Sorry, a field set named <em>%s</em> already exists for post type <em>%s</em>. Please enter another name.", MASTERPRESS_DOMAIN), $this->name, $post_type->name), "name"); } } }