Horriblesubs/fansub/meta.php

155 lines
5.5 KiB
PHP

<?php
if(!function_exists('add_filter')) exit;
function fansub_meta_table_registered($type) {
return _get_meta_table($type);
}
function fansub_meta_box_post_attribute($post_types) {
global $pagenow;
if('post-new.php' == $pagenow || 'post.php' == $pagenow) {
$post_type = fansub_get_current_post_type();
if(is_array($post_type)) {
$post_type = current($post_type);
}
if(empty($post_type)) {
$post_type = 'post';
}
$post_type = fansub_uppercase_first_char_only($post_type);
$meta_id = $post_type . '_attributes';
$meta_id = fansub_sanitize_id($meta_id);
$meta = new FANSUB_Meta('post');
$meta->set_post_types($post_types);
$meta->set_id($meta_id);
$meta->set_title($post_type . ' Attributes');
$meta->set_context('side');
$meta->set_priority('core');
$meta->init();
}
}
function fansub_meta_box_side_image($args = array()) {
global $pagenow;
if('post-new.php' == $pagenow || 'post.php' == $pagenow) {
$id = fansub_get_value_by_key($args, 'id', 'secondary_image_box');
$title = fansub_get_value_by_key($args, 'title', __('Secondary Image', 'fansub'));
$post_types = fansub_get_value_by_key($args, 'post_type');
if('all' == $post_types) {
$post_types = array();
$types = get_post_types(array('public' => true), 'objects');
fansub_exclude_special_post_types($types);
foreach($types as $key => $object_type) {
$post_types[] = $key;
}
}
$post_types = fansub_sanitize_array($post_types);
$field_id = fansub_get_value_by_key($args, 'field_id', 'secondary_image');
if(!fansub_array_has_value($post_types)) {
return;
}
$meta = new FANSUB_Meta('post');
$meta->set_post_types($post_types);
$meta->set_id($id);
$meta->set_title($title);
$meta->set_context('side');
$meta->set_priority('low');
$field_args = array('id' => $field_id, 'field_callback' => 'fansub_field_media_upload_simple');
$field_name = fansub_get_value_by_key($args, 'field_name', $field_id);
$field_args['name'] = $field_name;
$meta->add_field($field_args);
$meta->init();
}
}
function fansub_meta_box_page_additional_information() {
global $pagenow;
if('post-new.php' == $pagenow || 'post.php' == $pagenow) {
$meta = new FANSUB_Meta('post');
$meta->set_title(__('Additional Information', 'fansub'));
$meta->set_id('page_additional_information');
$meta->set_post_types(array('page'));
$meta->add_field(array('id' => 'different_title', 'label' => __('Different title:', 'fansub')));
$meta->add_field(array('id' => 'sidebar', 'label' => __('Sidebar', 'fansub'), 'field_callback' => 'fansub_field_select_sidebar'));
$meta->init();
}
}
function fansub_meta_box_google_maps($args = array()) {
global $pagenow;
if('post-new.php' == $pagenow || 'post.php' == $pagenow) {
$post_id = fansub_get_value_by_key($_REQUEST, 'post');
$id = fansub_get_value_by_key($args, 'id', 'google_maps_box');
$title = fansub_get_value_by_key($args, 'title', __('Maps', 'fansub'));
$post_types = fansub_get_value_by_key($args, 'post_types', array('post'));
$meta = new FANSUB_Meta('post');
$meta->set_title($title);
$meta->set_id($id);
$meta->set_post_types($post_types);
$map_args = array('id' => 'maps_content', 'label' => '', 'field_callback' => 'fansub_field_google_maps', 'names' => array('google_maps'));
if(fansub_id_number_valid($post_id)) {
$google_maps = fansub_get_post_meta('google_maps', $post_id);
$google_maps = fansub_json_string_to_array($google_maps);
$map_args['lat'] = fansub_get_value_by_key($google_maps, 'lat');
$map_args['long'] = fansub_get_value_by_key($google_maps, 'lng');
}
$meta->add_field($map_args);
//$meta->add_field(array('id' => 'google_maps', 'label' => '', 'field_callback' => 'fansub_field_input_hidden'));
$meta->init();
}
}
function fansub_meta_box_editor($args = array()) {
global $pagenow;
if('post-new.php' == $pagenow || 'post.php' == $pagenow) {
$post_type = fansub_get_value_by_key($args, 'post_type');
if(!is_array($post_type)) {
$post_type = array($post_type);
}
$box_title = fansub_get_value_by_key($args, 'title', __('Additional Information', 'fansub'));
$current_type = fansub_get_current_post_type();
if(is_array($current_type)) {
$current_type = current($current_type);
}
$box_id = fansub_get_value_by_key($args, 'id');
if(empty($box_id)) {
$box_id = fansub_sanitize_id($box_title);
if(empty($box_id)) {
return;
}
}
if(!empty($current_type)) {
$box_id = $current_type . '_' . $box_id;
}
$field_args = fansub_get_value_by_key($args, 'field_args', array());
$field_args = fansub_sanitize_array($field_args);
$field_args['field_callback'] = 'fansub_field_editor';
$field_args['label'] = '';
$field_id = fansub_get_value_by_key($args, 'field_id', fansub_get_value_by_key($field_args, 'field_id'));
$field_name = fansub_get_value_by_key($args, 'field_name', fansub_get_value_by_key($field_args, 'field_name'));
fansub_transmit_id_and_name($field_id, $field_name);
if(empty($field_id)) {
return;
}
$field_args['id'] = $field_id;
$field_args['name'] = $field_name;
$meta = new FANSUB_Meta('post');
$meta->set_title($box_title);
$meta->set_id($box_id);
$meta->set_post_types($post_type);
$meta->add_field($field_args);
$meta->init();
}
}
function fansub_meta_box_editor_gallery($args = array()) {
$defaults = array(
'title' => __('Gallery', 'fansub'),
'field_id' => 'image_gallery',
'field_name' => 'gallery',
'field_args' => array(
'teeny' => true,
'toolbar' => false
)
);
$args = wp_parse_args($args, $defaults);
fansub_meta_box_editor($args);
}