function duplicate($module_id = '', $unit_id = '') { global $wpdb; if ($module_id == '') { $module_id = $this->id; } /* Duplicate course and change some data */ $new_module = Unit_Module::get_module($module_id); $old_module_id = $new_module->ID; unset($new_module->ID); unset($new_module->guid); $new_module->post_author = get_current_user_id(); $new_module->post_status = 'publish'; $new_module->post_parent = $unit_id; $new_module_id = wp_insert_post($new_module); /* * Duplicate module post meta */ if (!empty($new_module_id)) { $post_metas = get_post_meta($old_module_id); foreach ($post_metas as $key => $meta_value) { $value = array_pop($meta_value); $value = maybe_unserialize($value); update_post_meta($new_module_id, $key, $value); } } // Set input module meta if (isset($post_metas)) { $input_module_types = self::get_input_module_types(); $module_type = $post_metas['module_type']; if (in_array($module_type, $input_module_types)) { $module_id = $new_module_id; $module_meta = array('mandatory_answer' => isset($post_metas['mandatory_answer']) ? $post_metas['mandatory_answer'] : false, 'gradable_answer' => isset($post_metas['gradable_answer']) ? $post_metas['gradable_answer'] : false, 'minimum_grade_required' => isset($post_metas['minimum_grade_required']) ? $post_metas['minimum_grade_required'] : false, 'limit_attempts' => isset($post_metas['limit_attempts']) ? $post_metas['limit_attempts'] : false, 'limit_attempts_value' => isset($post_metas['limit_attempts_value']) ? $post_metas['limit_attempts_value'] : false); Unit::update_input_module_meta($unit_id, $module_id, $module_meta); } } }