/**
* Saves the meta box values
*
* @return void
*
* @access public
* @since 1.0
*/
function save_meta_box($post_id, $post_object)
{
global $pagenow;
/* don't save during quick edit */
if ($pagenow == 'admin-ajax.php') {
return $post_id;
}
/* don't save during autosave */
if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) {
return $post_id;
}
/* don't save if viewing a revision */
if ($post_object->post_type == 'revision') {
return $post_id;
}
/* verify nonce */
if (isset($_POST[$this->meta_box['id'] . '_nonce']) && !wp_verify_nonce($_POST[$this->meta_box['id'] . '_nonce'], $this->meta_box['id'])) {
return $post_id;
}
/* check permissions */
if (isset($_POST['post_type']) && 'page' == $_POST['post_type']) {
if (!current_user_can('edit_page', $post_id)) {
return $post_id;
}
} else {
if (!current_user_can('edit_post', $post_id)) {
return $post_id;
}
}
foreach ($this->meta_box['fields'] as $field) {
$old = get_post_meta($post_id, $field['id'], true);
$new = '';
/* there is data to validate */
if (isset($_POST[$field['id']])) {
/* slider and list item */
if (in_array($field['type'], array('list-item', 'slider'))) {
/* required title setting */
$required_setting = array(array('id' => 'title', 'label' => __('Title', 'option-tree'), 'desc' => '', 'std' => '', 'type' => 'text', 'rows' => '', 'class' => 'option-tree-setting-title', 'post_type' => '', 'choices' => array()));
/* get the settings array */
$settings = isset($_POST[$field['id'] . '_settings_array']) ? unserialize(ot_decode($_POST[$field['id'] . '_settings_array'])) : array();
/* settings are empty for some odd ass reason get the defaults */
if (empty($settings)) {
$settings = 'slider' == $field['type'] ? ot_slider_settings($field['id']) : ot_list_item_settings($field['id']);
}
/* merge the two settings array */
$settings = array_merge($required_setting, $settings);
foreach ($_POST[$field['id']] as $k => $setting_array) {
foreach ($settings as $sub_setting) {
/* verify sub setting has a type & value */
if (isset($sub_setting['type']) && isset($_POST[$field['id']][$k][$sub_setting['id']])) {
$_POST[$field['id']][$k][$sub_setting['id']] = ot_validate_setting($_POST[$field['id']][$k][$sub_setting['id']], $sub_setting['type'], $sub_setting['id']);
}
}
}
/* set up new data with validated data */
$new = $_POST[$field['id']];
} else {
/* run through validattion */
$new = ot_validate_setting($_POST[$field['id']], $field['type'], $field['id']);
}
/* insert CSS */
if ($field['type'] == 'css') {
/* insert CSS into dynamic.css */
if ('' !== $new) {
ot_insert_css_with_markers($field['id'], $new, true);
/* remove old CSS from dynamic.css */
} else {
ot_remove_old_css($field['id']);
}
}
}
if ($new && $new !== $old) {
update_post_meta($post_id, $field['id'], $new);
} else {
if ('' == $new && $old) {
delete_post_meta($post_id, $field['id'], $old);
}
}
}
}
请发表评论