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);
}
Example #2
0
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;
}