public static function update_post_meta($meta_vars, $post_id)
 {
     // prepare the meta vars
     list($meta_key_value, $multi_repeated, $files) = self::prepare_meta_fields($meta_vars);
     // set featured image if there's any
     if (isset($_POST['wpuf_files']['featured_image'])) {
         $attachment_id = $_POST['wpuf_files']['featured_image'][0];
         wpuf_associate_attachment($attachment_id, $post_id);
         set_post_thumbnail($post_id, $attachment_id);
         $file_data = isset($_POST['wpuf_files_data'][$attachment_id]) ? $_POST['wpuf_files_data'][$attachment_id] : false;
         if ($file_data) {
             wp_update_post(array('ID' => $attachment_id, 'post_title' => $file_data['title'], 'post_content' => $file_data['desc'], 'post_excerpt' => $file_data['caption']));
             update_post_meta($attachment_id, '_wp_attachment_image_alt', $file_data['title']);
         }
     }
     // save all custom fields
     foreach ($meta_key_value as $meta_key => $meta_value) {
         update_post_meta($post_id, $meta_key, $meta_value);
     }
     // save any multicolumn repeatable fields
     foreach ($multi_repeated as $repeat_key => $repeat_value) {
         // first, delete any previous repeatable fields
         delete_post_meta($post_id, $repeat_key);
         // now add them
         foreach ($repeat_value as $repeat_field) {
             add_post_meta($post_id, $repeat_key, $repeat_field);
         }
     }
     // save any files attached
     foreach ($files as $file_input) {
         // delete any previous value
         delete_post_meta($post_id, $file_input['name']);
         foreach ($file_input['value'] as $attachment_id) {
             wpuf_associate_attachment($attachment_id, $post_id);
             add_post_meta($post_id, $file_input['name'], $attachment_id);
             // file title, caption, desc update
             $file_data = isset($_POST['wpuf_files_data'][$attachment_id]) ? $_POST['wpuf_files_data'][$attachment_id] : false;
             if ($file_data) {
                 wp_update_post(array('ID' => $attachment_id, 'post_title' => $file_data['title'], 'post_content' => $file_data['desc'], 'post_excerpt' => $file_data['caption']));
                 update_post_meta($attachment_id, '_wp_attachment_image_alt', $file_data['title']);
             }
         }
     }
 }
 public static function update_post_meta($meta_vars, $post_id)
 {
     // prepare the meta vars
     list($meta_key_value, $multi_repeated, $files) = self::prepare_meta_fields($meta_vars);
     // set featured image if there's any
     if (isset($_POST['wpuf_files']['featured_image'])) {
         $attachment_id = $_POST['wpuf_files']['featured_image'][0];
         wpuf_associate_attachment($attachment_id, $post_id);
         set_post_thumbnail($post_id, $attachment_id);
     }
     // save all custom fields
     foreach ($meta_key_value as $meta_key => $meta_value) {
         update_post_meta($post_id, $meta_key, $meta_value);
     }
     // save any multicolumn repeatable fields
     foreach ($multi_repeated as $repeat_key => $repeat_value) {
         // first, delete any previous repeatable fields
         delete_post_meta($post_id, $repeat_key);
         // now add them
         foreach ($repeat_value as $repeat_field) {
             add_post_meta($post_id, $repeat_key, $repeat_field);
         }
     }
     // save any files attached
     foreach ($files as $file_input) {
         // delete any previous value
         delete_post_meta($post_id, $file_input['name']);
         foreach ($file_input['value'] as $attachment_id) {
             wpuf_associate_attachment($attachment_id, $post_id);
             add_post_meta($post_id, $file_input['name'], $attachment_id);
         }
     }
 }