/** * Register all of our BadgeOS CPTs * * @since 1.0.0 * @return void */ function badgeos_register_post_types() { global $badgeos; // Register our Achivement Types CPT register_post_type('achievement-type', array('labels' => array('name' => __('Achievement Types', 'badgeos'), 'singular_name' => __('Achievement Type', 'badgeos'), 'add_new' => __('Add New', 'badgeos'), 'add_new_item' => __('Add New Achievement Type', 'badgeos'), 'edit_item' => __('Edit Achievement Type', 'badgeos'), 'new_item' => __('New Achievement Type', 'badgeos'), 'all_items' => __('Achievement Types', 'badgeos'), 'view_item' => __('View Achievement Type', 'badgeos'), 'search_items' => __('Search Achievement Types', 'badgeos'), 'not_found' => __('No achievement types found', 'badgeos'), 'not_found_in_trash' => __('No achievement types found in Trash', 'badgeos'), 'parent_item_colon' => '', 'menu_name' => __('Achievement Types', 'badgeos')), 'public' => false, 'publicly_queryable' => false, 'show_ui' => current_user_can(badgeos_get_manager_capability()), 'show_in_menu' => 'badgeos_badgeos', 'query_var' => false, 'rewrite' => false, 'capability_type' => 'post', 'has_archive' => false, 'hierarchical' => false, 'menu_position' => null, 'supports' => array('title', 'thumbnail', 'page-attributes'))); // Register our Step register_post_type('step', array('labels' => array('name' => __('Steps', 'badgeos'), 'singular_name' => __('Step', 'badgeos'), 'add_new' => __('Add New', 'badgeos'), 'add_new_item' => __('Add New Step', 'badgeos'), 'edit_item' => __('Edit Step', 'badgeos'), 'new_item' => __('New Step', 'badgeos'), 'all_items' => __('Steps', 'badgeos'), 'view_item' => __('View Step', 'badgeos'), 'search_items' => __('Search Steps', 'badgeos'), 'not_found' => __('No steps found', 'badgeos'), 'not_found_in_trash' => __('No steps found in Trash', 'badgeos'), 'parent_item_colon' => '', 'menu_name' => __('Steps', 'badgeos')), 'public' => apply_filters('badgeos_public_steps', false), 'publicly_queryable' => apply_filters('badgeos_public_steps', false), 'show_ui' => current_user_can(badgeos_get_manager_capability()), 'show_in_menu' => apply_filters('badgeos_public_steps', false), 'query_var' => false, 'rewrite' => false, 'capability_type' => 'post', 'has_archive' => apply_filters('badgeos_public_steps', false), 'hierarchical' => false, 'menu_position' => null, 'supports' => array('title'))); badgeos_register_achievement_type('step', 'steps'); // Register Submissions CPT register_post_type('submission', array('labels' => array('name' => __('Submissions', 'badgeos'), 'singular_name' => __('Submission', 'badgeos'), 'add_new' => __('Add New', 'badgeos'), 'add_new_item' => __('Add New Submission', 'badgeos'), 'edit_item' => __('Edit Submission', 'badgeos'), 'new_item' => __('New Submission', 'badgeos'), 'all_items' => __('Submissions', 'badgeos'), 'view_item' => __('View Submission', 'badgeos'), 'search_items' => __('Search Submissions', 'badgeos'), 'not_found' => __('No submissions found', 'badgeos'), 'not_found_in_trash' => __('No submissions found in Trash', 'badgeos'), 'parent_item_colon' => '', 'menu_name' => __('Submissions', 'badgeos')), 'public' => apply_filters('badgeos_public_submissions', false), 'publicly_queryable' => apply_filters('badgeos_public_submissions', false), 'show_ui' => badgeos_user_can_manage_submissions(), 'show_in_menu' => 'badgeos_badgeos', 'show_in_nav_menus' => apply_filters('badgeos_public_submissions', false), 'query_var' => true, 'rewrite' => true, 'capability_type' => 'post', 'has_archive' => apply_filters('badgeos_public_submissions', false), 'hierarchical' => false, 'menu_position' => null, 'supports' => array('title', 'editor', 'author', 'comments'))); // Register Nominations CPT register_post_type('nomination', array('labels' => array('name' => __('Nominations', 'badgeos'), 'singular_name' => __('Nomination', 'badgeos'), 'add_new' => __('Add New', 'badgeos'), 'add_new_item' => __('Add New Nomination', 'badgeos'), 'edit_item' => __('Edit Nomination', 'badgeos'), 'new_item' => __('New Nomination', 'badgeos'), 'all_items' => __('Nominations', 'badgeos'), 'view_item' => __('View Nomination', 'badgeos'), 'search_items' => __('Search Nominations', 'badgeos'), 'not_found' => __('No nominations found', 'badgeos'), 'not_found_in_trash' => __('No nominations found in Trash', 'badgeos'), 'parent_item_colon' => '', 'menu_name' => __('Nominations', 'badgeos')), 'public' => apply_filters('badgeos_public_nominations', false), 'publicly_queryable' => apply_filters('badgeos_public_nominations', false), 'show_ui' => badgeos_user_can_manage_submissions(), 'show_in_menu' => 'badgeos_badgeos', 'show_in_nav_menus' => apply_filters('badgeos_public_nominations', false), 'query_var' => true, 'rewrite' => true, 'capability_type' => 'post', 'has_archive' => apply_filters('badgeos_public_nominations', false), 'hierarchical' => false, 'menu_position' => null, 'supports' => array('title', 'editor', 'author', 'comments'))); // Register Log Entries CPT register_post_type('badgeos-log-entry', array('labels' => array('name' => __('Log Entries', 'badgeos'), 'singular_name' => __('Log Entry', 'badgeos'), 'add_new' => __('Add New', 'badgeos'), 'add_new_item' => __('Add New Log Entry', 'badgeos'), 'edit_item' => __('Edit Log Entry', 'badgeos'), 'new_item' => __('New Log Entry', 'badgeos'), 'all_items' => __('Log Entries', 'badgeos'), 'view_item' => __('View Log Entries', 'badgeos'), 'search_items' => __('Search Log Entries', 'badgeos'), 'not_found' => __('No Log Entries found', 'badgeos'), 'not_found_in_trash' => __('No Log Entries found in Trash', 'badgeos'), 'parent_item_colon' => '', 'menu_name' => __('Log Entries', 'badgeos')), 'public' => false, 'publicly_queryable' => false, 'show_ui' => current_user_can(badgeos_get_manager_capability()), 'show_in_menu' => 'badgeos_badgeos', 'show_in_nav_menus' => false, 'query_var' => true, 'rewrite' => array('slug' => 'log'), 'capability_type' => 'post', 'has_archive' => false, 'hierarchical' => false, 'menu_position' => null, 'supports' => array('title', 'editor', 'author', 'comments'))); }
/** * Render a given submission * * @since 1.1.0 * @param object $submission A submission post object * @param array $args Additional args for content options * @return string Concatenated output */ function badgeos_render_submission($submission = null, $args = array()) { global $post; // If we weren't given a submission, use the current post if (empty($submission)) { $submission = $post; } // Get the connected achievement ID $achievement_id = get_post_meta($submission->ID, '_badgeos_submission_achievement_id', true); $status = get_post_meta($submission->ID, '_badgeos_submission_status', true); $submission_author = get_userdata($submission->post_author); $display_name = is_object($submission_author) ? $submission_author->display_name : ''; // Concatenate our output $output = '<div class="badgeos-submission badgeos-feedback badgeos-feedback-' . $submission->ID . '">'; // Submission Title $output .= '<h2>' . sprintf(__('Submission: "%1$s" (#%2$d)', 'badgeos'), get_the_title($achievement_id), $submission->ID) . '</h2>'; // Submission Meta $output .= '<p class="badgeos-submission-meta">'; $output .= sprintf('<strong class="label">%1$s</strong> <span class="badgeos-feedback-author">%2$s</span><br/>', __('Author:', 'badgeos'), $display_name); $output .= sprintf('<strong class="label">%1$s</strong> <span class="badgeos-feedback-date">%2$s</span><br/>', __('Date:', 'badgeos'), get_the_time('F j, Y h:i a', $submission)); if ($achievement_id != $submission->ID) { $output .= sprintf('<strong class="label">%1$s</strong> <span class="badgeos-feedback-link">%2$s</span><br/>', __('Achievement:', 'badgeos'), '<a href="' . get_permalink($achievement_id) . '">' . get_the_title($achievement_id) . '</a>'); } $output .= sprintf('<strong class="label">%1$s</strong> <span class="badgeos-feedback-status">%2$s</span><br/>', __('Status:', 'badgeos'), ucfirst($status)); $output .= '</p>'; // Submission Content $output .= '<div class="badgeos-submission-content">'; $output .= wpautop($submission->post_content); $output .= '</div>'; // Include any attachments if (isset($args['show_attachments']) && 'false' !== $args['show_attachments']) { $output .= badgeos_get_submission_attachments($submission->ID); } // Approve/Deny Buttons for admins only if (badgeos_user_can_manage_submissions()) { $output .= badgeos_render_feedback_buttons($submission->ID); } // Include comments and comment form if (isset($args['show_comments']) && 'false' !== $args['show_comments']) { $output .= badgeos_get_comments_for_submission($submission->ID); $output .= badgeos_get_comment_form($submission->ID); } $output .= '</div><!-- .badgeos-submission -->'; // Return our filterable output return apply_filters('badgeos_render_submission', $output, $submission); }
/** * Get nominations attached to a specific achievement by a specific user * * @since 1.0.0 * @param integer $achievement_id The achievement's post ID * @param integer $user_id The user's ID * @return string Conatenated output for submission, attachments and comments */ function badgeos_get_user_nominations($user_id = 0, $achievement_id = 0) { global $post; // Setup our empty args array $args = array('post_type' => 'nomination', 'show_attachments' => 'false', 'show_comments' => 'false'); // Setup our author limit if (!empty($user_id)) { // Use the provided user ID $args['meta_query'][] = array('key' => '_badgeos_nominating_user_id', 'value' => absint($user_id)); } else { // If user doesn't have access to settings, // restrict posts to ones they've authored if (!badgeos_user_can_manage_submissions()) { $args['meta_query'][] = array('key' => '_badgeos_nominating_user_id', 'value' => get_current_user_id()); } } // If we were not given an achievement ID, // use the current post's ID $args['achievement_id'] = absint($achievement_id) ? absint($achievement_id) : $post->ID; // Grab our submissions for the current user $submissions = badgeos_get_feedback($args); // Return filterable output return apply_filters('badgeos_get_user_submissions', $submissions, $achievement_id, $user_id); }