_x('Schools', 'post type general name', 'admission-app-manager'), 'singular_name' => _x('School', 'post type singular name', 'admission-app-manager'), 'menu_name' => _x('Schools', 'admin menu', 'admission-app-manager'), 'name_admin_bar' => _x('School', 'add new on admin bar', 'admission-app-manager'), 'add_new' => _x('Add New', 'school', 'admission-app-manager'), 'add_new_item' => __('Add New School', 'admission-app-manager'), 'new_item' => __('New School', 'admission-app-manager'), 'edit_item' => __('Edit School', 'admission-app-manager'), 'view_item' => __('View School', 'admission-app-manager'), 'all_items' => __('All Schools', 'admission-app-manager'), 'search_items' => __('Search Schools', 'admission-app-manager'), 'parent_item_colon' => __('Parent Schools:', 'admission-app-manager'), 'not_found' => __('No Schools found.', 'admission-app-manager'), 'not_found_in_trash' => __('No Schools found in Trash.', 'admission-app-manager') ); $args = array( 'labels' => $labels, 'public' => true, 'publicly_queryable' => true, 'show_ui' => true, 'show_in_menu' => true, 'query_var' => true, 'rewrite' => array('slug' => 'school'), 'capability_type' => 'post', 'has_archive' => true, 'hierarchical' => false, 'supports' => array('title'), 'menu_icon' => 'dashicons-building' ); register_post_type('school', $args); } /** * Setup application custom post type */ public function init_combination() { $labels = array( 'name' => _x('Application Requirements', 'post type general name', 'admission-app-manager'), 'singular_name' => _x('Application Requirement', 'post type singular name', 'admission-app-manager'), 'menu_name' => _x('Application Requirements', 'admin menu', 'admission-app-manager'), 'name_admin_bar' => _x('Application Requirement', 'add new on admin bar', 'admission-app-manager'), 'add_new' => _x('Add New', 'Application Requirement', 'admission-app-manager'), 'add_new_item' => __('Add New Application Requirement', 'admission-app-manager'), 'new_item' => __('New Application Requirement', 'admission-app-manager'), 'edit_item' => __('Edit Application Requirement', 'admission-app-manager'), 'view_item' => __('View Application Requirement', 'admission-app-manager'), 'all_items' => __('All Application Requirements', 'admission-app-manager'), 'search_items' => __('Search Application Requirements', 'admission-app-manager'), 'parent_item_colon' => __('Parent Application Requirements:', 'admission-app-manager'), 'not_found' => __('No Application Requirements found.', 'admission-app-manager'), 'not_found_in_trash' => __('No Application Requirements found in Trash.', 'admission-app-manager') ); $args = array( 'labels' => $labels, 'public' => true, 'publicly_queryable' => true, 'show_ui' => true, 'show_in_menu' => true, 'query_var' => true, 'rewrite' => array('slug' => 'combination'), 'capability_type' => 'post', 'has_archive' => true, 'hierarchical' => false, 'supports' => array('title'), 'menu_icon' => 'dashicons-networking' ); register_post_type('combination', $args); } public function init_application() { $labels = array( 'name' => _x('Applications', 'post type general name', 'admission-app-manager'), 'singular_name' => _x('Application', 'post type singular name', 'admission-app-manager'), 'menu_name' => _x('Applications', 'admin menu', 'admission-app-manager'), 'name_admin_bar' => _x('Application', 'add new on admin bar', 'admission-app-manager'), 'add_new' => _x('Add New', 'Application', 'admission-app-manager'), 'add_new_item' => __('Add New Application', 'admission-app-manager'), 'new_item' => __('New Application', 'admission-app-manager'), 'edit_item' => __('Edit Application', 'admission-app-manager'), 'view_item' => __('View Application', 'admission-app-manager'), 'all_items' => __('All Applications', 'admission-app-manager'), 'search_items' => __('Search Applications', 'admission-app-manager'), 'parent_item_colon' => __('Parent Applications:', 'admission-app-manager'), 'not_found' => __('No Applications found.', 'admission-app-manager'), 'not_found_in_trash' => __('No Applications found in Trash.', 'admission-app-manager') ); $args = array( 'labels' => $labels, 'public' => false, 'publicly_queryable' => false, 'show_ui' => true, 'show_in_menu' => true, 'query_var' => true, 'rewrite' => array('slug' => 'application'), 'capability_type' => array('aam_application', 'aam_applications'), 'map_meta_cap' => true, 'has_archive' => false, 'hierarchical' => false, 'supports' => array('title'), 'menu_icon' => 'dashicons-clipboard' ); register_post_type('application', $args); } public function init_step() { $labels = array( 'name' => _x('Steps', 'post type general name', 'admission-app-manager'), 'singular_name' => _x('Step', 'post type singular name', 'admission-app-manager'), 'menu_name' => _x('Steps', 'admin menu', 'admission-app-manager'), 'name_admin_bar' => _x('Step', 'add new on admin bar', 'admission-app-manager'), 'add_new' => _x('Add New', 'Step', 'admission-app-manager'), 'add_new_item' => __('Add New Step', 'admission-app-manager'), 'new_item' => __('New Step', 'admission-app-manager'), 'edit_item' => __('Edit Step', 'admission-app-manager'), 'view_item' => __('View Step', 'admission-app-manager'), 'all_items' => __('All Steps', 'admission-app-manager'), 'search_items' => __('Search Steps', 'admission-app-manager'), 'parent_item_colon' => __('Parent Steps:', 'admission-app-manager'), 'not_found' => __('No Steps found.', 'admission-app-manager'), 'not_found_in_trash' => __('No Steps found in Trash.', 'admission-app-manager') ); $args = array( 'labels' => $labels, 'public' => false, 'publicly_queryable' => false, 'show_ui' => true, 'show_in_menu' => true, 'query_var' => true, 'rewrite' => array('slug' => 'step'), 'capability_type' => 'post', 'has_archive' => false, 'hierarchical' => false, 'supports' => array('title'), 'menu_icon' => 'dashicons-performance' ); register_post_type('step', $args); } public function init_type() { $labels = array( 'name' => _x('Document Types', 'post type general name', 'admission-app-manager'), 'singular_name' => _x('Document Type', 'post type singular name', 'admission-app-manager'), 'menu_name' => _x('Document Types', 'admin menu', 'admission-app-manager'), 'name_admin_bar' => _x('Document Type', 'add new on admin bar', 'admission-app-manager'), 'add_new' => _x('Add New', 'Document Type', 'admission-app-manager'), 'add_new_item' => __('Add New Document Type', 'admission-app-manager'), 'new_item' => __('New Document Type', 'admission-app-manager'), 'edit_item' => __('Edit Document Type', 'admission-app-manager'), 'view_item' => __('View Document Type', 'admission-app-manager'), 'all_items' => __('All Document Types', 'admission-app-manager'), 'search_items' => __('Search Document Types', 'admission-app-manager'), 'parent_item_colon' => __('Parent Document Types:', 'admission-app-manager'), 'not_found' => __('No Document Types found.', 'admission-app-manager'), 'not_found_in_trash' => __('No Document Types found in Trash.', 'admission-app-manager') ); $args = array( 'labels' => $labels, 'public' => false, 'publicly_queryable' => false, 'show_ui' => true, 'show_in_menu' => true, 'query_var' => true, 'rewrite' => array('slug' => 'type'), 'capability_type' => 'post', 'has_archive' => false, 'hierarchical' => false, 'supports' => array('title'), 'menu_icon' => 'dashicons-media-text' ); register_post_type('type', $args); } /** * Init document custom post type */ public function init_document() { $labels = array( 'name' => _x('Documents', 'post type general name', 'admission-app-manager'), 'singular_name' => _x('Document', 'post type singular name', 'admission-app-manager'), 'menu_name' => _x('Documents', 'admin menu', 'admission-app-manager'), 'name_admin_bar' => _x('Document', 'add new on admin bar', 'admission-app-manager'), 'add_new' => _x('Add New', 'Document', 'admission-app-manager'), 'add_new_item' => __('Add New Document', 'admission-app-manager'), 'new_item' => __('New Document', 'admission-app-manager'), 'edit_item' => __('Edit Document', 'admission-app-manager'), 'view_item' => __('View Document', 'admission-app-manager'), 'all_items' => __('All Documents', 'admission-app-manager'), 'search_items' => __('Search Documents', 'admission-app-manager'), 'parent_item_colon' => __('Parent Documents:', 'admission-app-manager'), 'not_found' => __('No Documents found.', 'admission-app-manager'), 'not_found_in_trash' => __('No Documents found in Trash.', 'admission-app-manager') ); $args = array( 'labels' => $labels, 'public' => false, 'publicly_queryable' => false, 'show_ui' => true, 'show_in_menu' => false, 'query_var' => true, 'rewrite' => array('slug' => 'document'), 'capability_type' => array('aam_application', 'aam_applications'), 'has_archive' => false, 'hierarchical' => false, 'supports' => array('title') ); register_post_type('document', $args); } /** * Remove "Add New" buttons on document post type */ function disable_new_documents_buttons() { global $submenu; unset($submenu['edit.php?post_type=document'][10]); if ( (isset($_GET['post_type']) && $_GET['post_type'] == 'document') || (isset($_GET['post']) && get_post_type($_GET['post']) == 'document') ) { echo ''; } } /** * Redirect to documents on document save * * @param $location * @param $post_id * * @return string|void */ function publish_document_redirect($location, $post_id) { $post_type = get_post_type($post_id); if ($post_type == 'document') { $document_id = get_post_meta($post_id, '_aam_document_document_id', true); $step_id = get_post_meta($post_id, '_aam_document_step_id', true); $application_id = get_post_meta($post_id, '_aam_document_application_id', true); $location = admin_url('admin.php?page=aam&application_id=' . $application_id . '&document_id=' . $document_id . '&step_id=' . $step_id); } return $location; } /** * Send notification on document save * * @param $post_id */ public function send_notification($post_id, $post, $update) { if (is_admin()) send_notification($post_id); } /** * When saving application also update applications helper table * * @param $post_id */ public function edit_application($post_id, $post, $update) { global $wpdb; $post_type = get_post_type($post_id); if ('application' == $post_type) { $prompt_docs = array(); $app_table = $wpdb->prefix . 'aam_applications'; $app_combination = get_post_meta($post_id, '_aam_application_combination', true); if ($app_combination && isset($app_combination['combination'])) { $documents = get_post_meta($app_combination['combination'], '_aam_combination_documents', true); if ($documents) { foreach ($documents as $dk => $document) { if (isset($document['type'])) { $steps = get_post_meta($document['type'], '_aam_type_steps', true); if ($steps) { foreach ($steps as $sk => $step) { if ($step['name']) { $item_id = $wpdb->get_var( $wpdb->prepare( "SELECT id FROM $app_table WHERE application_id = %d AND document_id = %s AND step_id = %s", $post_id, $document['slug'], $step['slug'] ) ); if (!$item_id) { $wpdb->insert( $app_table, array( 'name' => $step['name'], 'application_id' => $post_id, 'document_id' => $document['slug'], 'document_type' => (int)$document['type'], 'step_id' => $step['slug'], 'prompt' => $document['prompt'], 'required' => $document['required'] == 'on', 'document_weight' => $document['weight'], 'step_weight' => $step['weight'], 'step_days' => $step['days'], 'step_max_days' => $step['max_days'], 'step_min_days' => $step['min_days'], 'sort' => $dk . '.' . $sk, 'parent_id' => (isset($step['parent']) && $step['parent'] != 0 ? $steps[$step['parent'] - 1]['slug'] : NULL) ) ); } else { $wpdb->update( $app_table, array( 'name' => $step['name'], 'prompt' => $document['prompt'], 'required' => (isset($document['required']) && $document['required'] == 'on'), 'document_weight' => $document['weight'], 'step_weight' => $step['weight'], 'step_days' => $step['days'], 'step_max_days' => $step['max_days'], 'step_min_days' => $step['min_days'], 'sort' => $dk . '.' . $sk, 'parent_id' => ((isset($step['parent']) && $step['parent']) != 0 ? $steps[$step['parent'] - 1]['slug'] : NULL) ), array( 'application_id' => $post_id, 'document_id' => $document['slug'], 'document_type' => (int)$document['type'], 'step_id' => $step['slug'], ) ); } } } } //check weather we send prompts for this document type to client on application save $send_prompt = get_post_meta($document['type'], '_aam_type_send', true); if ($send_prompt == 'on') { if (!isset($prompts[$document['type']])) { $prompt_docs[$document['type']] = array(); } $prompt_docs[$document['type']][] = $document['prompt']; } } } $helper = new ApplicationHelper($post_id); $helper->calc_deadlines(true); } } } } /** * Create auto posts with list of prompts for each document type * * @param $post_id * @param $post * @param $update */ public function edit_combination($post_id, $post, $update) { if ($post->post_type == 'combination') { if ( get_post_meta( $post_id, '_aam_combination_settings_make_posts', true ) === 'on' ) { $documents = get_post_meta( $post_id, '_aam_combination_documents', true ); $school_id = get_post_meta( $post_id, '_aam_combination_school', true ); $program = get_post_meta( $post_id, '_aam_combination_program', true ); $intakes = wp_get_post_terms( $post_id, 'intake'); $school = get_post( $school_id ); $intake = get_term( $intakes[0], 'intake' ); $sorted = array(); if ( $documents ) { foreach ( $documents as $document ) { if ( ! isset( $sorted[ $document['type'] ] ) ) { $sorted[ $document['type'] ] = array(); } $sorted[ $document['type'] ][] = $document; } foreach ( $sorted as $type => $items ) { $document_type = get_post( $type ); $title = $school->post_title . ' ' . $program . ' ' . $intake->name . ' ' . $document_type->post_title; $author = $post->post_author; $content = ''; if ( $items ) { $content .= '
$message