public function populate_values($opt, $force_update = false) { $fields = $this->get_fields(); foreach ($fields as $field) { $is_multi = VP_Util_Reflection::is_multiselectable($field); if (array_key_exists($field->get_name(), $opt)) { if ($is_multi and is_array($opt[$field->get_name()])) { $field->set_value($opt[$field->get_name()]); } if (!$is_multi and !is_array($opt[$field->get_name()])) { $field->set_value($opt[$field->get_name()]); } } else { if ($force_update) { if ($is_multi) { $field->set_value(array()); } else { $field->set_value(''); } } } } }
function _enfactor_field($field, $mb, $in_group = false) { $is_multi = VP_Util_Reflection::is_multiselectable($field['type']); if (!$is_multi) { $mb->the_field($field['name']); } else { $mb->the_field($field['name'], WPALCHEMY_FIELD_HINT_CHECKBOX_MULTI); } $field['name'] = $mb->get_the_name(); // create the object $make = VP_Util_Reflection::field_class_from_type($field['type']); $vp_field = call_user_func("{$make}::withArray", $field); // get value from mb $value = $mb->get_the_value(); // get default from array $default = $vp_field->get_default(); // if tocopy always assign default if ($mb->is_parent_multi() and $mb->is_in_multi_last()) { $value = $default; } else { // if value is null and default exist, use default if (is_null($value) and !is_null($default) and empty($this->meta)) { $value = $default; } else { if (VP_Util_Reflection::is_multiselectable($field['type'])) { if (!is_array($value)) { $value = array($value); } } } } $vp_field->set_value($value); if (!$in_group) { $vp_field->add_container_extra_classes(array('vp-meta-single')); } return $vp_field; }
/** * Setter for $_default * * @param mixed $_default default value of the field */ public function set_default($_default) { if (is_array($_default) and !VP_Util_Reflection::is_multiselectable($this)) { $_default = VP_Util_Array::first($_default); } $this->_default = $_default; return $this; }