function jobman_display_apply($jobid, $cat = NULL) { global $si_image_captcha; get_currentuserinfo(); $options = get_option('jobman_options'); $content = ''; $data = get_posts('post_type=jobman_app_form&numberposts=-1'); if (count($data) > 0) { $page = $data[0]; } else { $page = new stdClass(); $page->post_author = 1; $page->post_date = time(); $page->post_type = 'page'; $page->post_status = 'published'; } if (array_key_exists('jobman-apply', $_REQUEST)) { if (isset($si_image_captcha) && $options['plugins']['sicaptcha']) { $fake_comment = array('comment_type' => 'comment'); // No need to check return - will wp_die() if CAPTCHA failed $si_image_captcha->si_captcha_comment_post($fake_comment); } $err = jobman_store_application($jobid, $cat); switch ($err) { case -1: // No error, stored properly $msg = $options['text']['application_acceptance']; break; case -2: // Recent application form same job $msg = __('It seems you recently applied for this job. If you would like to add further information to your application, please contact us directly.', 'jobman'); break; default: if (is_array($err)) { $msg = __('There was an error uploading your application. Please contact us directly, and quote the information below:', 'jobman'); foreach ($err as $e) { $msg .= '<div class="jobman-error">' . esc_html($e->get_error_message()) . '</div>'; } } else { // Failed filter rules $msg = $options['fields'][$err]['error']; if (NULL == $msg || '' == $msg) { $msg = __("Thank you for your application. While your application doesn't fit our current requirements, please contact us directly to see if we have other positions available.", 'jobman'); } } break; } $page->post_title = __('Job Application', 'jobman'); $page->post_content .= "<div class='jobman-message'>{$msg}</div>"; return array($page); } if ($options['user_registration'] && ($options['loginform_apply'] || $options['user_registration_required'])) { $content .= jobman_display_login(); } if ($options['user_registration'] && $options['user_registration_required'] && !is_user_logged_in()) { // Skip the application form if the user hasn't registered yet, and we're enforcing registration. $pleaseregister = '<p>' . __('Before completing your application, please login using the form above, or register using the form below.', 'jobman') . '</p>'; $content .= apply_filters('jobman_pleaseregister_html', $pleaseregister); $reg = jobman_display_register(); $content .= $reg[0]->post_content; $page->post_content = $content; return array($page); } if ($jobid > 0) { $job = get_post($jobid); } else { $job = NULL; } $cat_arr = array(); if (NULL != $job) { $page->post_title = __('Job Application', 'jobman') . ': ' . $job->post_title; $foundjob = true; $jobid = $job->ID; $categories = wp_get_object_terms($job->ID, 'jobman_category'); if (count($categories) > 0) { foreach ($categories as $category) { $cat_arr[] = $category->slug; } } } else { $page->post_title = __('Job Application', 'jobman'); $foundjob = false; $jobid = -1; if (NULL != $cat) { $data = get_term_by('slug', $cat, 'jobman_category'); if (isset($data->slug)) { $cat_arr[] = $data->slug; } } } $content .= '<form action="" enctype="multipart/form-data" onsubmit="return jobman_apply_filter()" method="post">'; $content .= '<input type="hidden" name="jobman-apply" value="1" />'; $content .= '<input type="hidden" name="jobman-jobid" value="' . $jobid . '" />'; $content .= '<input type="hidden" name="jobman-categoryid" value="' . implode(',', $cat_arr) . '" />'; if (array_key_exists('jobman-joblist', $_REQUEST)) { $content .= '<input type="hidden" name="jobman-joblist" value="' . implode(',', $_REQUEST['jobman-joblist']) . '" />'; } if (empty($options['templates']['application_form'])) { $gencat = NULL; if (!empty($cat_arr)) { $gencat = $cat_arr[0]; } $content .= jobman_display_apply_generated($foundjob, $job, $gencat); } else { global $jobman_app_field_shortcodes, $jobman_app_shortcodes, $jobman_shortcode_job, $jobman_shortcode_categories; $jobman_shortcode_job = $job; $jobman_shortcode_categories = $cat_arr; jobman_add_app_field_shortcodes($jobman_app_field_shortcodes); jobman_add_app_shortcodes($jobman_app_shortcodes); $content .= do_shortcode($options['templates']['application_form']); jobman_remove_shortcodes(array_merge($jobman_app_field_shortcodes, $jobman_app_shortcodes)); } $content .= '</form>'; $content .= '<div id="jobman-map" style="width: 1px; height: 1px; display: none;"></div>'; $page->post_content = $content; return array($page); }
function jobman_display_jobs($posts) { global $wp_query, $wpdb, $jobman_displaying, $jobman_finishedpage, $sitepress, $wp_rewrite; if ($jobman_finishedpage || $jobman_displaying) { return $posts; } // Hack to fix Mystique theme CSS if (array_key_exists('mystique', $wp_query->query_vars) && 'css' == $wp_query->query_vars['mystique']) { return $posts; } $options = get_option('jobman_options'); $post = NULL; $displaycat = false; if (array_key_exists('jobman_data', $wp_query->query_vars) && !array_key_exists('jobman_page', $wp_query->query_vars)) { if (term_exists($wp_query->query_vars['jobman_data'], 'jobman_category')) { $wp_query->query_vars['jcat'] = $wp_query->query_vars['jobman_data']; } else { $sql = "SELECT * FROM {$wpdb->posts} WHERE post_type='jobman_job' AND post_name=%s;"; $sql = $wpdb->prepare($sql, $wp_query->query_vars['jobman_data']); $data = $wpdb->get_results($sql, OBJECT); if (count($data) > 0) { $wp_query->query_vars['page_id'] = $data[0]->ID; } else { return $posts; } } } if (!array_key_exists('jcat', $wp_query->query_vars)) { if (isset($wp_query->query_vars['jobman_root_id'])) { $post = get_post($wp_query->query_vars['jobman_root_id']); } else { if (isset($wp_query->query_vars['page_id'])) { $post = get_post($wp_query->query_vars['page_id']); } } if ($post == NULL || !isset($wp_query->query_vars['jobman_page']) && $post->ID != $options['main_page'] && !in_array($post->post_type, array('jobman_job', 'jobman_app_form', 'jobman_register'))) { return $posts; } } // We're going to be displaying a Job Manager page. $jobman_displaying = true; $wp_query->is_home = false; remove_filter('the_content', 'wpautop'); // Hack to kill WPML on Job Manager pages. Need to add proper support later. if (defined('ICL_SITEPRESS_VERSION') && !empty($sitepress)) { remove_filter('posts_join', array($sitepress, 'posts_join_filter')); remove_filter('posts_where', array($sitepress, 'posts_where_filter')); } if (NULL != $post) { $postmeta = get_post_custom($post->ID); $postcats = wp_get_object_terms($post->ID, 'jobman_category'); $postdata = array(); foreach ($postmeta as $key => $value) { if (is_array($value)) { $postdata[$key] = $value[0]; } else { $postdata[$key] = $value; } } } if (array_key_exists('jobman_register', $wp_query->query_vars)) { jobman_register(); } else { if (array_key_exists('jobman_username', $wp_query->query_vars)) { jobman_login(); } } global $jobman_data; $jobman_data = ''; if (array_key_exists('jobman_data', $wp_query->query_vars)) { $jobman_data = $wp_query->query_vars['jobman_data']; } else { if (array_key_exists('j', $wp_query->query_vars)) { $jobman_data = $wp_query->query_vars['j']; } else { if (array_key_exists('c', $wp_query->query_vars)) { $jobman_data = $wp_query->query_vars['c']; } } } if (array_key_exists('jcat', $wp_query->query_vars)) { // We're looking at a category $cat = get_term_by('slug', $wp_query->query_vars['jcat'], 'jobman_category'); $posts = jobman_display_jobs_list($cat->term_id); if (count($posts) > 0) { $posts[0]->post_content = $options['text']['category_before'] . $posts[0]->post_content . $options['text']['category_after']; } } else { if (isset($wp_query->query_vars['jobman_page']) || NULL != $post && in_array($post->post_type, array('jobman_job', 'jobman_app_form', 'jobman_register'))) { if (NULL == $post || !in_array($post->post_type, array('jobman_job', 'jobman_app_form', 'jobman_register'))) { $sql = "SELECT * FROM {$wpdb->posts} WHERE (post_type='jobman_job' OR post_type='jobman_app_form' OR post_type='jobman_register') AND post_name=%s;"; $sql = $wpdb->prepare($sql, $wp_query->query_vars['jobman_page']); $data = $wpdb->get_results($sql, OBJECT); } else { $data = array($post); } if (count($data) > 0) { $post = $data[0]; $postmeta = get_post_custom($post->ID); $postcats = wp_get_object_terms($post->ID, 'jobman_category'); $postdata = array(); foreach ($postmeta as $key => $value) { if (is_array($value)) { $postdata[$key] = $value[0]; } else { $postdata[$key] = $value; } } if ('jobman_job' == $post->post_type) { // We're looking at a job $posts = jobman_display_job($post->ID); if (count($posts) > 0) { $posts[0]->post_content = $options['text']['job_before'] . $posts[0]->post_content . $options['text']['job_after']; } } else { if ('jobman_app_form' == $post->post_type) { // We're looking at an application form $jobid = (int) $jobman_data; if ('' == $jobman_data) { $posts = jobman_display_apply(-1); } else { if ($jobid > 0) { $posts = jobman_display_apply($jobid); } else { $posts = jobman_display_apply(-1, $jobman_data); } } if (count($posts) > 0) { $posts[0]->post_content = $options['text']['apply_before'] . $posts[0]->post_content . $options['text']['apply_after']; } } else { if ('jobman_register' == $post->post_type) { // Looking for the registration form if (is_user_logged_in()) { wp_redirect(get_page_link($options['main_page'])); exit; } else { $posts = jobman_display_register(); if (count($posts) > 0) { $posts[0]->post_content = $options['text']['registration_before'] . $posts[0]->post_content . $options['text']['registration_after']; } } } else { $posts = array(); } } } } else { $posts = array(); } } else { if (NULL != $post && $post->ID == $options['main_page']) { // We're looking at the main job list page $posts = jobman_display_jobs_list('all'); if (count($posts) > 0) { $posts[0]->post_content = $options['text']['main_before'] . $posts[0]->post_content . $options['text']['main_after']; } } else { $posts = array(); } } } if (!empty($posts)) { $wp_query->queried_object = $posts[0]; $wp_query->queried_object_id = $posts[0]->ID; $wp_query->is_page = true; $wp_query->is_singular = true; } $hidepromo = $options['promo_link']; if (get_option('smb_consulting')) { $hidepromo = true; } if (!$hidepromo && count($posts) > 0) { $posts[0]->post_content .= '<p class="jobmanpromo">' . sprintf(__('This job listing was created using <a href="%s" title="%s">Job Manager</a> for WordPress, by <a href="%s">Tom Townsend</a>.', 'jobman'), 'http://www.wp-jobmanager.com/', __('The ORIGINAL Job Manager plugin', 'jobman'), 'https://profiles.wordpress.org/smb-dev/') . '</p>'; } $jobman_finishedpage = true; return $posts; }