ACADEMIZER_PLUGIN_PATH, 'ajax_url' => admin_url('admin-ajax.php'))); add_meta_box('academizer_reference_meta_box', __('Reference Data', 'academizer'), 'academizer_reference_build_meta_box', 'academizer_reference', 'normal', 'low'); } add_action('add_meta_boxes_academizer_reference', 'academizer_add_reference_meta_boxes'); add_action('save_post_academizer_reference', 'academizer_save_reference_meta_box_data'); add_action('wp_ajax_academizer_ajax_render_bibtex', 'academizer_ajax_render_bibtex'); add_action('wp_ajax_academizer_ajax_query_terms', 'academizer_ajax_query_terms'); function academizer_ajax_query_terms() { $terms = academizer_retrieve_terms($_POST['entry_type']); echo sizeof($terms); } function academizer_ajax_render_bibtex() { $parser = new AcademizerBibtexParser(); $json_string = stripslashes($_POST['bibtex']); $json_obj = json_decode($json_string); if (empty($json_obj)) { wp_die(json_encode(array( 'message' => "Bibtex is invalid.", 'result' => -1))); } $entry_type = $json_obj[0]->entryType; $terms = academizer_retrieve_terms($entry_type); $term = $terms[0]; $term_id = $term->term_id; if (sizeof($term_id) == 0 && empty($_POST['format'])) { wp_die(json_encode(array( 'message' => "Bibtex type: {$entry_type} not found. Please add a Reference Type first.", 'result' => -1))); } if (empty($_POST['format'])) { $format = get_term_meta($term_id, 'academizer_format', true); if (empty($format)) wp_die(json_encode(array( 'message' => "No format specified for {$json_obj[0]->entryType}.", 'result' => -1))); } else $format = $_POST['format']; $options = get_option('academizer_options'); $ref = AcademizerReference::Create( $options['name'], $json_string, $format, $_POST['paper_url'], $_POST['pub_url'] ); wp_die(json_encode(array( 'message' => $parser->parse($ref), 'result' => 1))); } function academizer_reference_build_meta_box($post) { global $pagenow; wp_nonce_field(basename(__FILE__), 'academizer_meta_box_nonce'); $options = get_option('academizer_options'); if (($pagenow == 'post.php') && ($_GET['action'] == 'edit')) { $terms = get_the_terms($post->ID, 'academizer_reftype'); $entry_term = $terms[0]; $ref = AcademizerReference::Create( $options['name'], get_post_meta($post->ID, 'academizer_bibtex_json', true), get_term_meta($entry_term->term_id, 'academizer_format', true), $post->academizer_paper_url, $post->academizer_pub_url ); } else { $ref = new AcademizerReference(); $ref->me_full_name = $options['name']; } ?>

'academizer_reftype', 'hide_empty' => false, 'fields' => 'all', 'count' => 'true', 'meta_value' => $entry_type, ); $term_query = new WP_Term_Query($args); return $term_query->terms; } function academizer_save_reference_meta_box_data($post_id) { $taxonomy = 'academizer_reftype'; // verify taxonomies meta box nonce if (!isset($_POST['academizer_meta_box_nonce']) || !wp_verify_nonce($_POST['academizer_meta_box_nonce'], basename(__FILE__))) { return; } // return if autosave if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) { return; } // Check the user's permissions. if (!current_user_can('edit_post', $post_id)) { return; } if (isset($_REQUEST['bibtex_json'])) { $bibtex_json = stripslashes($_REQUEST['bibtex_json']); if (!empty($bibtex_json)) update_post_meta($post_id, 'academizer_bibtex_json', $bibtex_json); else delete_post_meta($post_id, 'academizer_bibtex_json'); $json_obj = json_decode($bibtex_json); if (!empty($json_obj) && !empty($json_obj[0])) { $terms = academizer_retrieve_terms($json_obj[0]->entryType); wp_set_object_terms($post_id, array($terms[0]->term_id), $taxonomy); } } if (isset ($_REQUEST['paper_url'])) { update_post_meta($post_id, 'academizer_paper_url', esc_url_raw($_POST['paper_url'])); } else delete_post_meta($post_id, 'academizer_paper_url'); if (isset ($_REQUEST['pub_url'])) { update_post_meta($post_id, 'academizer_pub_url', esc_url_raw($_POST['pub_url'])); } else delete_post_meta($post_id, 'academizer_pub_url'); if (isset ($_REQUEST['tags'])) { $tags = $_REQUEST['tags']; $tag_array = explode(',', $tags); $tag_array = array_map('trim', $tag_array); $tag_array = array_unique($tag_array); $tags = implode(', ', $tag_array); update_post_meta($post_id, 'academizer_tags', sanitize_text_field($tags)); } else delete_post_meta($post_id, 'academizer_tags'); }