add_post_type('video'); $meta->set_id('fansub_video_information'); $meta->set_title('Video Information'); $meta->set_use_media_upload(true); $meta->add_field(array('id' => 'video_url', 'label' => 'Video URL:')); //$meta->init(); $meta = new FANSUB_Meta('post'); $meta->add_post_type('episode'); $meta->add_post_type('batch'); $meta->set_id('post_information'); $meta->set_title('Extra Information'); $meta->set_use_media_upload(true); $meta->add_field(array('id' => 'custom_qualities', 'label' => 'Custom qualities:')); $meta->add_field(array('id' => 'custom_servers', 'label' => 'Custom servers:')); $value = ''; if ('post.php' == $pagenow) { $post_id = fansub_get_method_value('post', 'get'); if (fansub_id_number_valid($post_id)) { $shortlink = get_post_meta($post_id, 'shortlink', true); if (empty($shortlink)) { $shortlink = md5(wp_get_shortlink($post_id)); update_post_meta($post_id, 'shortlink', $shortlink); } if (!empty($shortlink)) { $shortlink = home_url('/go/' . $shortlink); $value = $shortlink; } } } $args = array( 'id' => 'go_shortlink', 'readonly' => true, 'value' => $value, 'attributes' => array( 'readonly' => 'readonly', 'autocomplete' => 'off' ), 'label' => 'Shortlink:' ); $meta->add_field($args); $meta->init(); add_action('fansub_post_meta_box_field', 'fansub_kntl_meta_box_field'); add_action('save_post', 'fansub_kntl_save_post_meta'); $post_id = null; if ('post.php' == $pagenow) { $post_id = fansub_get_method_value('post', 'get'); } $qs = fansub_ph_get_qualities_and_servers($post_id); $qualities = $qs['qualities']; $servers = $qs['servers']; foreach ($qualities as $quality) { $meta_id = 'quality_' . $quality; $meta_id = fansub_sanitize_id($meta_id); $post_meta = new FANSUB_Meta('post'); $post_meta->set_id($meta_id); $field_name = $meta_id . '_file_name'; $post_meta->add_field(array('name' => $field_name, 'label' => 'File Name [' . $quality . ']')); foreach ($servers as $server) { $field_name = $meta_id . '_' . $server; $field_name = fansub_sanitize_id($field_name); $post_meta->add_field(array('name' => $field_name, 'label' => fansub_uppercase_first_char($server))); } $post_meta->set_title($quality); $post_meta->set_post_types(array('episode', 'batch')); $post_meta->init(); } } function fansub_kntl_meta_box_field($meta) { if (!is_object($meta)) { return; } global $post; $meta_id = $post->post_type . '_attributes'; $meta_id = fansub_sanitize_id($meta_id); $animation_type = fansub_kntl_get_post_type(); if ($meta->get_id() == $meta_id) { $post_type = $post->post_type; if ('episode' == $post_type || 'video' == $post_type) { $query = fansub_query(array('post_type' => fansub_kntl_get_post_type(), 'posts_per_page' => -1)); $all_option = ''; $selected = get_post_meta($post->ID, $animation_type, true); foreach ($query->posts as $qpost) { $all_option .= fansub_field_get_option(array('value' => $qpost->ID, 'text' => $qpost->post_title, 'selected' => $selected)); } $args = array( 'id' => $animation_type, 'name' => $animation_type, 'all_option' => $all_option, 'value' => $selected, 'class' => 'widefat', 'label' => fansub_uppercase_first_char_only(fansub_kntl_get_post_type_label_singular_name()) . ':', 'placeholder' => __('Choose parent post', 'fansub') ); fansub_field_select_chosen($args); if ('video' == $post_type) { $only_member = get_post_meta($post->ID, 'only_member', true); $args = array( 'id' => 'only_member', 'name' => 'only_member', 'value' => $only_member, 'label' => __('Disable for guest?', 'fansub') ); fansub_field_input_checkbox($args); } } elseif ('batch' == $post_type) { $query = fansub_query(array('post_type' => fansub_kntl_get_post_type(), 'posts_per_page' => -1)); $all_option = ''; $selected = get_post_meta($post->ID, $animation_type, true); foreach ($query->posts as $qpost) { $all_option .= fansub_field_get_option(array('value' => $qpost->ID, 'text' => $qpost->post_title, 'selected' => $selected)); } $args = array( 'id' => $animation_type, 'name' => $animation_type, 'all_option' => $all_option, 'value' => $selected, 'class' => 'widefat', 'label' => fansub_uppercase_first_char_only(fansub_kntl_get_post_type_label_singular_name()) . ':', 'placeholder' => __('Choose parent post', 'fansub') ); fansub_field_select_chosen($args); $query = fansub_query(array('post_type' => 'episode', 'posts_per_page' => -1)); $all_option = ''; $selected = get_post_meta($post->ID, 'episode', true); foreach ($query->posts as $qpost) { $all_option .= fansub_field_get_option(array('value' => $qpost->ID, 'text' => $qpost->post_title, 'selected' => $selected)); } $args = array( 'id' => 'episode', 'name' => 'episode', 'all_option' => $all_option, 'value' => $selected, 'class' => 'widefat', 'label' => 'Episode:', 'placeholder' => __('Choose parent post', 'fansub') ); fansub_field_select_chosen($args); $value = get_post_meta($post->ID, 'suffix', true); $args = array( 'id' => 'suffix', 'name' => 'suffix', 'value' => $value, 'label' => 'Suffix:' ); fansub_field_input($args); } $post_types = fansub_ph_get_auto_facebook_post_types(); if (in_array($post->post_type, $post_types)) { $value = get_post_meta($post->ID, 'auto_facebook', true); $args = array( 'id' => 'auto_facebook', 'name' => 'auto_facebook', 'value' => $value, 'label' => 'Auto publish to Facebook?', 'default' => 1 ); fansub_field_input_checkbox($args); } } } function fansub_kntl_save_post_meta($post_id) { if (!fansub_can_save_post($post_id)) { return; } $animation_type = fansub_kntl_get_post_type(); $post = get_post($post_id); $post_title = $post->post_title; $title_parts = fansub_kntl_convert_post_title_to_parts($post_title); array_shift($title_parts); $title_parts = array_map('trim', $title_parts); $post_type = fansub_get_current_post_type(); $suffix = isset($_POST['suffix']) ? $_POST['suffix'] : ''; update_post_meta($post_id, 'suffix', $suffix); if ('episode' == $post_type || 'video' == $post_type) { $animation = isset($_POST[$animation_type]) ? $_POST[$animation_type] : ''; update_post_meta($post_id, $animation_type, $animation); if (is_numeric($animation) && $animation > 0) { $episodes = get_post_meta($animation, 'episodes', true); $episodes = fansub_sanitize_array($episodes); if (!in_array($post_id, $episodes)) { $episodes[] = $post_id; } update_post_meta($animation, 'episodes', $episodes); } $title_count = array_pop($title_parts); update_post_meta($post_id, 'episode', $title_count); if ('video' == $post_type) { $only_member = fansub_checkbox_post_data_value($_POST, 'only_member'); update_post_meta($post_id, 'only_member', $only_member); } } elseif ('batch' == $post_type) { $episode = isset($_POST['episode']) ? $_POST['episode'] : ''; update_post_meta($post_id, 'episode', $episode); if (fansub_id_number_valid($episode)) { $batches = get_post_meta($episode, 'batches', true); $batches = fansub_sanitize_array($batches); if (!in_array($post_id, $batches)) { $batches[] = $post_id; } update_post_meta($episode, 'batches', $batches); } $animation = isset($_POST[$animation_type]) ? $_POST[$animation_type] : ''; update_post_meta($post_id, $animation_type, $animation); if (fansub_id_number_valid($animation)) { $batches = get_post_meta($animation, 'batches', true); $batches = fansub_sanitize_array($batches); if (!in_array($post_id, $batches)) { $batches[] = $post_id; } update_post_meta($animation, 'batches', $batches); } $title_count = array_pop($title_parts); $title_count = array_pop($title_parts); update_post_meta($post_id, 'batch', $title_count); } $qs = fansub_ph_get_qualities_and_servers($post_id); $qualities = $qs['qualities']; $servers = $qs['servers']; foreach ($qualities as $quality) { $meta_id = 'quality_' . $quality; $meta_id = fansub_sanitize_id($meta_id); $field_name = $meta_id . '_file_name'; if (isset($_POST[$field_name])) { update_post_meta($post_id, $field_name, $_POST[$field_name]); } foreach ($servers as $server) { $field_name = $meta_id . '_' . $server; $field_name = fansub_sanitize_id($field_name); if (isset($_POST[$field_name])) { update_post_meta($post_id, $field_name . '_encrypted', $_POST[$field_name]); } } } }