protected function import_field_sets(&$field_sets, $lookup_criteria = '', $dir = '') { $import = array(); $icon_dest = MASTERPRESS_CONTENT_MENU_ICONS_DIR; $icon_src = $dir.WOOF_DIR_SEP."icons".WOOF_DIR_SEP; if (isset($field_sets) && count($field_sets)) { foreach ($field_sets as $field_set) { // try to find a field set with the same specification // we need to UPDATE these, rather than creating a new ID, so that all relationships still hold $where = "`name` = '".$field_set["name"]."' ".$lookup_criteria; $data = $field_set; unset($data["id"], $data["fields"], $data["parent_id"], $data["description"], $data["templates_permission"], $data["sites"], $data["templates"]); $results = MPM_FieldSet::find( array( "where" => $where ) ); $field_set_insert = true; if (count($results)) { $field_set_insert = false; $field_set_model = $results[0]; } else { $field_set_model = new MPM_FieldSet(); } $field_set_model->set($data, true); if ($field_set_insert) { $field_set_model->insert(); } else { $field_set_model->update(); } $field_set["fields_by_name"] = array(); // install field set icons if (isset($field_set["icon"]) && !is_null($field_set["icon"]) && $field_set["icon"] != "") { $src = $icon_src.$field_set["icon"]; if (file_exists($src)) { copy($src, $icon_dest.$field_set["icon"]); } } // now run through all of the fields inside the set foreach ($field_set["fields"] as $field) { $data = $field; unset($data["id"], $data["description"], $data["parent_id"], $data["allow_multiple"], $data["tooltip_help"], $data["post_types_inherit"], $data["sites"]); // if the field set already existed, we need to look up a field with the same name under that parent // it's very important to UPDATE these, rather than creating a new ID, so that all meta pointers are still correct $field_insert = true; $field_model = new MPM_Field(); if ($field_set_insert) { $where = "`name` = '".$field["name"]."' AND `field_set_id` = ".$field_set_model->id; $results = MPM_Field::find(array( "where" => $where )); if (count($results)) { $field_model = $results[0]; $field_insert = false; } } $field_model->set($data, true); $field_model->field_set_id = $field_set_model->id; if (isset($field["icon"]) && !is_null($field["icon"]) && $field["icon"] != "") { $src = $icon_src.$field["icon"]; if (file_exists($src)) { copy($src, $icon_dest.$field["icon"]); } } if ($field_insert) { $field_model->insert(); } else { $field_model->update(); } $field_set["fields_by_name"][$field["name"]] = $field; } $import[$field_set["name"]] = $field_set; } } return $import; }
public function query_fields($args = array()) { $r = wp_parse_args( array( "where" => "`field_set_id` = '{$this->id}'" ), $args ); return MPM_Field::find( $r ); }