/files/data/wordpress/wp-content/plugins/wpjobads/wpjobads.php
PHP | 2646 lines | 2304 code | 280 blank | 62 comment | 259 complexity | 02345246f6b44fa0a0da98fe51a61e48 MD5 | raw file
Possible License(s): Apache-2.0
Large files files are truncated, but you can click here to view the full file
- <?php
- /*
- Plugin Name: WPJobAds
- Plugin URI: http://www.wpjobads.com
- Description: Self-managed job board. Instant Payment via PayPal.
- Author: WPJobAds.com
- Version: 1.2.3
- License: Commercial
- Author URI: http://www.wpjobads.com
- */
- ###############################################################################
- # WPJobAds version 1.2.3 #
- # Copyright © 2008 - 2009 WPJobAds.com All Rights Reserved. #
- # This file may not be redistributed in whole or significant part. #
- # #
- # The complete EULA can be found along with this file. Alternatively, #
- # it can be viewed online at http://www.wpjobads.com/license #
- # #
- # Info : info@wpjobads.com #
- # Support : support@wpjobads.com #
- ###############################################################################
- error_reporting(E_ALL & E_WARNING);
- // ----------------------------------------------------------------------------
- // Global constants
- // {{{ GLOBALS
- define('WPJOBADS_VERSION', '1.2.3');
- define('WPJOBADS_RELEASE_DATE', '2009-03-23');
- define('WPJOBADS_UPDATE_URL', 'http://www.wpjobads.com/download');
- define('WPJOBADS_CHECK_UPDATE_URL', 'http://www.wpjobads.com/update-check');
- define('WPJOBADS_CHECK_UPDATE_PERIOD', 43200);
- define('WPJOBADS_FORCE_CHECK_UPDATE', true);
- define('WPJOBADS_JOB', 'wpjobads_job');
- define('WPJOBADS_CATEGORY', 'wpjobads_category');
- define('WPJOBADS_TITLE_SEPARATOR', ' » ');
- define('WPJOBADS_ADMIN_JOB_ENTRIES', 20);
- define('WPJOBADS_SEND_EMAIL', true);
- define('WPJOBADS_WRITE_LOG', true);
- // }}}
- // ----------------------------------------------------------------------------
- // Includes
- if (is_readable('wpjobads-template-' . get_option('template'))) {// {{{
- include 'wpjobads-template-' . get_option('template') . '.php';
- } else {
- include 'wpjobads-template.php';
- }// }}}
- // ----------------------------------------------------------------------------
- // Initialization functions
- function wpjobads_init()// {{{
- {
- // Possibly check for serial number?
- load_plugin_textdomain('wpjobads', 'wp-content/plugins/wpjobads');
- wp_enqueue_script('prototype');
- }// }}}
- add_action('init', 'wpjobads_init');
- function wpjobads_preview($job)// {{{
- {
- ob_start();
- $permalink = wpjobads_get_permalink();
- $parsed_url = parse_url($permalink);
- $path = $parsed_url['path'];
- $permalink .= ($path{strlen($path)-1} == '/') ? '#wpjobads' : '/#wpjobads';
- ?>
- <form method="post" action="<?php echo $permalink ?>">
- <input type="hidden" name="wpjobads_title" value="<?php echo attribute_escape($job['title']) ?>" />
- <input type="hidden" name="wpjobads_category" value="<?php echo attribute_escape($job['category']) ?>" />
- <input type="hidden" name="wpjobads_type" value="<?php echo attribute_escape($job['type']) ?>" />
- <input type="hidden" name="wpjobads_description" value="<?php echo attribute_escape($job['description']) ?>" />
- <input type="hidden" name="wpjobads_how_to_apply" value="<?php echo attribute_escape($job['how_to_apply']) ?>" />
- <input type="hidden" name="wpjobads_location" value="<?php echo attribute_escape($job['location']) ?>" />
- <input type="hidden" name="wpjobads_zipcode" value="<?php echo attribute_escape($job['zipcode']) ?>" />
- <input type="hidden" name="wpjobads_company_name" value="<?php echo attribute_escape($job['company_name']) ?>" />
- <input type="hidden" name="wpjobads_company_url" value="<?php echo attribute_escape($job['company_url']) ?>" />
- <input type="hidden" name="wpjobads_contact_name" value="<?php echo attribute_escape($job['contact_name']) ?>" />
- <input type="hidden" name="wpjobads_contact_email" value="<?php echo attribute_escape($job['contact_email']) ?>" />
- <input type="hidden" name="wpjobads-action" value="postjob">
- <p><?php _e('Are you sure?') ?></p>
- <input type="submit" value="<?php echo attribute_escape(__('Yes')) ?>"> <a href="javascript:history.go(-1);"><?php _e('No') ?></a>
- </form>
- <?php
- $content = ob_get_contents();
- ob_end_clean();
- return $content;
- }// }}}
- function wpjobads_license_form($redirect = null)// {{{
- {
- if (!$redirect) $redirect = 'wpjobads/wpjobads.php';
- $nonce_action = 'activate-license';
- ?>
- <div class="wrap">
- <h2>Plugin Activation</h2>
- <p><label for="license_key">Please enter your license key:</label></p>
- <form name="license" id="license" method="post" action="admin.php?page=wpjobads-admin-options">
- <?php wp_nonce_field($nonce_action) ?>
- <input type="hidden" name="action" value="activate">
- <input type="hidden" name="r" value="<?php echo attribute_escape($redirect) ?>" />
- <input type="text" class="regular-text" id="license_key" name="license_key" /> <input type="submit" value="Activate" />
- </form>
- <?php if ($_GET['m']): ?>
- <p style="color:red;"><?php echo base64_decode($_GET['m']) ?></p>
- <?php endif ?>
- </div>
- <?php
- }// }}}
- // ----------------------------------------------------------------------------
- function wpjobads_extract_fields($data)// {{{
- {
- $extract = array();
- $fields = array('title','category', 'type','description','how_to_apply','location','zipcode','company_name','company_url','contact_name','contact_email');
- foreach ($fields as $field) {
- $extract[$field] = trim($data['wpjobads_' . $field]);
- }
- return $extract;
- }// }}}
- function wpjobads_php4_fix()// {{{
- {
- global $wp_the_query, $wp_query, $post;
- $wp_the_query->queried_object->post_title = $wp_query->posts[0]->post_title = $post->post_title;
- $wp_the_query->queried_object->post_content = $wp_query->posts[0]->post_content = $post->post_content;
- }// }}}
- function wpjobads_page_handler()// {{{
- {
- global $wpdb;
- global $wp, $wp_query, $wp_the_query;
- global $post;
- if (!$post) $post =& get_post($id = 0);
- if (!$post) return;
- $wpjobads_options = get_option('wpjobads_options');
- if (!isset($post->ID) or (intval($post->ID) != $wpjobads_options['post_id'])) return;
- $table_job = $wpdb->prefix . WPJOBADS_JOB;
- $table_category = $wpdb->prefix . WPJOBADS_CATEGORY;
- if ($_SERVER['REQUEST_METHOD'] == 'POST') {
- $_POST = stripslashes_deep($_POST);
- if ($_POST['wpjobads-action'] == 'postjob' and $wpjobads_options['enable_frontend']) {
- $job = wpjobads_extract_fields($_POST);
- // set defaults
- $job['ad_duration'] = $wpjobads_options['duration'];
- $job['ad_currency'] = $wpjobads_options['currency'];
- $job['ad_price'] = $wpjobads_options[$job['type'] . '_price'];
- $job['ad_paid'] = $job['ad_price'] == '0' ? 1 : 0;
- $job['ad_approved'] = $wpjobads_options['auto_approve'] == '1' ? 1 : 0;
- $job['ad_published'] = 1;
- if (wpjobads_insert_job($job)) {
- $job['id'] = $wpdb->insert_id;
- $job['expired'] = $wpdb->get_var("SELECT `expired` FROM $table_job WHERE `id` = " . $job['id']);
- if (!empty($wpjobads_options['email_notification'])) {
- wpjobads_send_notification_email($job);
- }
- if ($wpjobads_options['auto_approve'] == 1) {
- wpjobads_log('Job #' . $job['id'] . ' - "' . $job['title'] . '" has been inserted to the database auto-approved.');
- if ($job['ad_paid'] == 1) {
- wpjobads_send_publish_email($job);
- wp_redirect(wpjobads_get_permalink('action=auto-approved&job_id=' . $job['id']));
- } else {
- if ($wpjobads_options['force_payment_email']) {
- wpjobads_send_payment_email($job);
- }
- wp_redirect(wpjobads_get_permalink('action=paypal&job_id=' . $job['id']));
- }
- } else {
- wpjobads_log('Job #' . $job['id'] . ' - "' . $job['title'] . '" has been inserted to the database, awaiting for approval.');
- if ($job['ad_paid'] == 1) {
- wp_redirect(wpjobads_get_permalink('action=waiting-approval'));
- } else {
- wp_redirect(wpjobads_get_permalink('action=waiting-approval&pay=1'));
- }
- }
- } else {
- $description = apply_filters('the_content', $wpjobads_options['description']);
- remove_filter('the_content', 'wptexturize');
- remove_filter('the_content', 'wpautop');
- $post->post_title = $wpjobads_options['title'];
- if (!$wpjobads_options['enable_frontend']) {
- $post->post_content = __('Job posting is currently disabled. Please check back later.', 'wpjobads');
- } else {
- $error = __('<p>An error occured while posting your job ad. <strong>All fields are required except for zipcode and company URL</strong>. Please check your submission and try again. If the problem persists try contacting the administrator.</p>', 'wpjobads');
- $post->post_content = $error . $description . wpjobads_postjob_form(wpjobads_extract_fields($_POST));
- }
- add_filter('wp_title', create_function('$title', "return \$title;"), 10);
- wpjobads_php4_fix();
- }
- return;
- }
- if ($_POST['wpjobads-action'] == 'preview') {
- $preview = wpjobads_extract_fields($_POST);
- if (wpjobads_valid_job($preview)) {
- $preview['title'] = sprintf(__('Preview: %s'), $preview['title']);
- $post->post_title = $preview['title'];
- $post->post_content = wpjobads_preview(wpjobads_extract_fields($_POST)) . apply_filters('the_content', wpjobads_view_job($preview)) . wpjobads_preview(wpjobads_extract_fields($_POST));
- } else {
- $post->post_title = $wpjobads_options['title'];
- if (!$wpjobads_options['enable_frontend']) {
- $post->post_content = __('Job posting is currently disabled. Please check back later.', 'wpjobads');
- } else {
- $error = __('<p>An error occured while posting your job ad. <strong>All fields are required except for zipcode and company URL</strong>. Please check your submission and try again. If the problem persists try contacting the administrator.</p>', 'wpjobads');
- $post->post_content = $error . apply_filters('the_content', $wpjobads_options['description']) . wpjobads_postjob_form(wpjobads_extract_fields($_POST));
- }
- }
- remove_filter('the_content', 'wptexturize');
- remove_filter('the_content', 'wpautop');
- add_filter('wp_title', create_function('$title', "return \$title;"), 10);
- wpjobads_php4_fix();
- return;
- }
- if (isset($_POST['txn_id'])) {
- wpjobads_paypal_ipn();
- return;
- }
- }
- if (!defined('WPJOBADS_TITLE_SEPARATOR')) define('WPJOBADS_TITLE_SEPARATOR', ' » ');
- if (isset($_GET['job_id']) and !isset($_GET['action'])) {
- $strict = $wpjobads_options['viewable_expired_ads'] == 1 ? false : true;
- if (wpjobads_job_is_viewable(intval($_GET['job_id']), $strict)) {
- $job = wpjobads_get_job(intval($_GET['job_id']));
- $post->post_title = $job['title'];
- $post->post_content = wpjobads_view_job($job);
- } else {
- $post->post_title = __('Job Not Found.', 'wpjobads');
- $post->post_content = '<p>' . __('<p>The job you are looking for does not exist.</p>', 'wpjobads') . '</p>';
- }
- add_filter('wp_title', create_function('$title', "return \$title;"), 10);
- wpjobads_php4_fix();
- return;
- }
- if (isset($_GET['action']) and $_GET['action'] == 'postjob') {
- $description = apply_filters('the_content', $wpjobads_options['description']);
- remove_filter('the_content', 'wptexturize');
- remove_filter('the_content', 'wpautop');
- $job['category'] = (isset($_GET['cat_ID'])) ? $_GET['cat_ID'] : $wpjobads_options['default_category'];
- $post->post_title = $wpjobads_options['title'];
- if (!$wpjobads_options['enable_frontend']) {
- $post->post_content = '<p>' . __('Job posting is currently disabled. Please check back later.', 'wpjobads') . '</p>';
- } else {
- $post->post_content = $description . wpjobads_postjob_form($job);
- }
- add_filter('wp_title', create_function('$title', "return \$title;"), 10);
- wpjobads_php4_fix();
- return;
- }
- if (isset($_GET['action']) and $_GET['action'] == 'waiting-approval') {
- $post->post_title = __('Your job ad is waiting for approval.', 'wpjobads');
- if ($_GET['pay'] == 1) {
- $post->post_content = '<p>' . __('Your ad will be reviewed by one of our administrators. You will receive an email with payment instructions once your ad has been approved. Thank you for your patience.', 'wpjobads') . '</p>';
- } else {
- $post->post_content = '<p>' . __('Your ad will be reviewed by one of our administrators. Thank you for your patience.', 'wpjobads') . '</p>';
- }
- add_filter('wp_title', create_function('$title', "return \$title;"), 10);
- wpjobads_php4_fix();
- return;
- }
- if (isset($_GET['action']) and $_GET['action'] == 'auto-approved') {
- $job = wpjobads_get_job(intval($_GET['job_id']));
- $post->post_title = $wpjobads_options['title'];
- $post->post_content = '<p>' . sprintf(__('Your job ad has been published at <a href="%1$s">%2$s</a>', 'wpjobads'), wpjobads_get_permalink('job_id=' . $_GET['job_id']), $job['title']) . '</p>';
- add_filter('wp_title', create_function('$title', "return \$title;"), 10);
- wpjobads_php4_fix();
- return;
- }
- if (isset($_GET['action']) and $_GET['action'] == 'paypal' and isset($_GET['job_id'])) {
- if (wpjobads_job_paid(intval($_GET['job_id']))) {
- $post->post_title = __('Pay with PayPal', 'wpjobads');
- $post->post_content = '<p>' . __('This ad has already been paid.', 'wpjobads') . '</p>';
- } else {
- $job = wpjobads_get_job(intval($_GET['job_id']));
- $post->post_title = __('Pay with PayPal', 'wpjobads');
- $post->post_content = '<p>' . $wpjobads_options['terms'] . '</p>' . wpjobads_paypal_form($job);
- }
- add_filter('wp_title', create_function('$title', "return \$title;"), 10);
- wpjobads_php4_fix();
- return;
- }
- if (isset($_GET['action']) and $_GET['action'] == 'paypal-return') {
- $post->post_title = __('Your payment is being processed.', 'wpjobads');
- $post->post_content = wpjobads_paypal_return();
- add_filter('wp_title', create_function('$title', "return \$title;"), 10);
- wpjobads_php4_fix();
- return;
- }
- if (isset($_GET['search'])) {
- $post->post_title = $wpjobads_options['title'];
- add_filter('wp_title', create_function('$title', "return \$title;"), 10);
- $post->post_content = wpjobads_job_search($_GET['search']);
- wpjobads_php4_fix();
- return;
- }
- if (isset($_GET['jobfeed']) and $_GET['jobfeed'] == 'rss2') {
- $cat_ID = isset($_GET['cat_ID']) ? intval($_GET['cat_ID']) : null;
- $cat_ID = isset($cat_ID) ? $cat_ID : $_GET['jobcat'];
- $jobtype = isset($_GET['jobtype']) ? $_GET['jobtype'] : null;
- wpjobads_rss2($cat_ID, $jobtype);
- exit;
- }
- $post->post_title = $wpjobads_options['title'];
- add_filter('wp_title', create_function('$title', "return \$title;"), 10);
- $post->post_content = wpjobads_job_listing($_GET['jobcat'], $_GET['jobtype']);
- wpjobads_php4_fix();
- return;
- }// }}}
- add_action('wp', 'wpjobads_page_handler');
- function wpjobads_random_ad($content)// {{{
- {
- $wpjobads_options = get_option('wpjobads_options');
- if (!is_single() or !$wpjobads_options['enable_random_ad']) return $content;
- global $wpdb;
- $table_job = $wpdb->prefix . WPJOBADS_JOB;
- $table_category = $wpdb->prefix . WPJOBADS_CATEGORY;
- $columns = "$table_job.id, $table_job.posted, $table_job.title, $table_job.company_name, $table_job.company_url, $table_category.id AS category_id, $table_category.name AS category_name";
- $now = gmdate('Y-m-d H:i:s', time());
- $sql = "SELECT id FROM $table_job WHERE ad_approved = 1 AND ad_paid = 1 AND ad_published = 1 AND expired > '$now'";
- $job_IDs = $wpdb->get_col($sql);
- if (is_array($job_IDs) and count($job_IDs)) {
- $job_ID = $job_IDs[rand(0, count($job_IDs) - 1)];
- $sql = "SELECT $columns FROM $table_job INNER JOIN $table_category ON $table_job.category = $table_category.id WHERE $table_job.id = $job_ID";
- $job = $wpdb->get_row($sql);
- }
- if ($job) {
- ob_start();
- wpjobads_template_random_ad(array(
- 'job' => $job
- ));
- $random_ad = ob_get_contents();
- ob_end_clean();
- return $content . $random_ad;
- } else {
- return $content;
- }
- }// }}}
- add_action('the_content', 'wpjobads_random_ad');
- function wpjobads_get_edit_post_link($link)// {{{
- {
- global $post;
- if (!isset($post)) $post =& get_post($id = 0);
- $wpjobads_options = get_option('wpjobads_options');
- if (isset($post->ID) and $post->ID == $wpjobads_options['post_id']) {
- if (isset($_GET['job_id']))
- return get_bloginfo('wpurl') . '/wp-admin/admin.php?page=wpjobads-admin-jobs&action=edit&job_ID=' . $_GET['job_id'];
- else
- return $link;
- } else {
- return $link;
- }
- }// }}}
- add_filter('get_edit_post_link', 'wpjobads_get_edit_post_link', 1);
- // ----------------------------------------------------------------------------
- // Front-end functions
- function wpjobads_get_permalink($params = '')// {{{
- {
- $wpjobads_options = get_option('wpjobads_options');
- $post_id = $wpjobads_options['post_id'];
- $permalink = get_permalink($post_id);
- $parsed_url = parse_url($permalink);
- if ($params) {
- return $permalink . ($parsed_url['query'] ? '&' : '?') . $params;
- }
- return $permalink;
- }// }}}
- function wpjobads_selected($current, $option)// {{{
- {
- if ($current == $option) echo 'selected="selected"';
- }// }}}
- function wpjobads_checked($current, $checked)// {{{
- {
- if ($current == $checked) echo 'checked="checked"';
- }// }}}
- function wpjobads_view_job($job)// {{{
- {
- ob_start();
- wpjobads_template_view_job(array(
- 'job' => $job
- ));
- $content = ob_get_contents();
- ob_end_clean();
- return $content;
- }// }}}
- function wpjobads_postjob_form($job = null)// {{{
- {
- $wpjobads_options = get_option('wpjobads_options');
- $categories = wpjobads_get_all_categories();
- $types = wpjobads_get_all_types();
- ob_start();
- $permalink = wpjobads_get_permalink();
- $parsed_url = parse_url($permalink);
- $path = $parsed_url['path'];
- $permalink .= ($path{strlen($path)-1} == '/') ? '#wpjobads' : '/#wpjobads';
- ?>
- <style>input[type="text"], textarea, select {border:1px solid #aaa;padding: 3px;background-color: #F4F4F4;}</style>
- <style>input[type="text"]:focus, textarea:focus, select:focus {background-color: #FFF;}</style>
- <style>label {font-weight: bold;}</style>
- <style>fieldset {padding: 1em;}</style>
- <form style="text-align:left;margin: 1em 0;" method="post" action="<?php echo $permalink ?>">
- <fieldset style="border: 1px solid #ccc;">
- <legend><?php _e('Job Details', 'wpjobads') ?></legend>
- <label for="wpjobads_title"><?php _e('Job title', 'wpjobads') ?></label><br/>
- <input type="text" id="wpjobads_title" name="wpjobads_title" size="40" value="<?php echo attribute_escape($job['title']) ?>" tabindex="1" /><br/><br/>
- <label for="wpjobads_category"><?php _e('Job category', 'wpjobads') ?></label><br/>
- <select style="width: 300px;" id="wpjobads_category" name="wpjobads_category" tabindex="2">
- <?php foreach ($categories as $cat): ?>
- <option value="<?php echo attribute_escape($cat['id']) ?>" <?php wpjobads_selected($job['category'], $cat['id']) ?>><?php echo attribute_escape($cat['name']) ?></option>
- <?php endforeach ?>
- </select><br/><br/>
- <label for="wpjobads_type"><?php _e('Job type', 'wpjobads') ?></label><br/>
- <select style="width: 300px;" id="wpjobads_type" name="wpjobads_type" tabindex="3">
- <?php foreach ($types as $type): ?>
- <option value="<?php echo attribute_escape($type['id']) ?>" <?php wpjobads_selected($job['type'], $type['id']) ?>><?php echo attribute_escape($type['name']) ?></option>
- <?php endforeach ?>
- </select><br/><br/>
- <label for="wpjobads_description"><?php _e('Description', 'wpjobads') ?></label><br/>
- <textarea id="wpjobads_description" name="wpjobads_description" rows="8" cols="50" tabindex="3"><?php echo attribute_escape($job['description']) ?></textarea><br/><br/>
- <label for="wpjobads_how_to_apply"><?php _e('How to apply', 'wpjobads') ?></label><br/>
- <textarea id="wpjobads_how_to_apply" name="wpjobads_how_to_apply" rows="4" cols="50" tabindex="4"><?php echo attribute_escape($job['how_to_apply']) ?></textarea><br/><br/>
- <label for="wpjobads_location"><?php _e('Job location', 'wpjobads') ?></label><br/>
- <input type="text" id="wpjobads_location" name="wpjobads_location" size="40" value="<?php echo attribute_escape($job['location']) ?>" tabindex="5" /><br/><br/>
- <label for="wpjobads_zipcode"><?php _e('Zipcode (optional)', 'wpjobads') ?></label><br/>
- <input type="text" id="wpjobads_zipcode" name="wpjobads_zipcode" size="10" value="<?php echo attribute_escape($job['zipcode']) ?>" tabindex="6" /><br/><br/>
- </fieldset>
- <br/>
- <fieldset style="border: 1px solid #ccc;">
- <legend><?php _e('Employer Details', 'wpjobads') ?></legend>
- <label for="wpjobads_company_name"><?php _e('Company name', 'wpjobads') ?></label><br/>
- <input type="text" id="wpjobads_company_name" name="wpjobads_company_name" size="40" value="<?php echo attribute_escape($job['company_name']) ?>" tabindex="7" /><br/><br/>
- <label for="wpjobads_company_url"><?php _e('Company URL (optional)', 'wpjobads') ?></label><br/>
- <input type="text" id="wpjobads_company_url" name="wpjobads_company_url" size="40" value="<?php echo attribute_escape($job['company_url']) ?>" tabindex="8" /><br/><br/>
- <label for="wpjobads_contact_name"><?php _e('Contact name', 'wpjobads') ?></label><br/>
- <input type="text" id="wpjobads_contact_name" name="wpjobads_contact_name" size="40" value="<?php echo attribute_escape($job['contact_name']) ?>" tabindex="9" /><br/><br/>
- <label for="wpjobads_contact_email"><?php _e('Contact email', 'wpjobads') ?></label><br/>
- <input type="text" id="wpjobads_contact_email" name="wpjobads_contact_email" size="40" value="<?php echo attribute_escape($job['contact_email']) ?>" tabindex="10" /><br/><br/>
- </fieldset>
- <br/>
- <fieldset style="border: 1px solid #ccc;">
- <legend><?php _e('Terms & Conditions', 'wpjobads') ?></legend>
- <?php echo wpautop(wptexturize($wpjobads_options['terms'])) ?>
- </fieldset>
- <input type="hidden" name="wpjobads-action" value="preview" />
- <p><input id="submit" type="submit" value="<?php echo attribute_escape(__('Post new job', 'wpjobads')) ?>" tabindex="11" /></p>
- </form>
- <?php
- $content = ob_get_contents();
- ob_end_clean();
- return $content;
- }// }}}
- function wpjobads_job_listing($cat = null, $type = null)// {{{
- {
- global $wpdb;
- $wpjobads_options = get_option('wpjobads_options');
- $jobs = wpjobads_get_all_jobs($cat, $type);
- $date_format = $wpjobads_options['date_format'];
- $gmt_offset = intval(get_option('gmt_offset')) * 3600;
- $invite = empty($wpjobads_options['invite']) ? attribute_escape(_('Post a job and find the right person')) : attribute_escape($wpjobads_options['invite']);
- $widget_invite = empty($wpjobads_options['widget_invite']) ? attribute_escape(__('Post new job', 'wpjobads')) : attribute_escape($wpjobads_options['widget_invite']);
- ob_start();
- wpjobads_template_job_listing(array(
- 'enable_frontend' => $wpjobads_options['enable_frontend'],
- 'jobs' => $jobs,
- 'cat_ID' => $cat,
- 'invite' => $invite,
- 'widget_invite' => $widget_invite,
- 'date_format' => $date_format,
- 'gmt_offset' => $gmt_offset
- ));
- $content = ob_get_contents();
- ob_end_clean();
- return $content;
- }// }}}
- function wpjobads_job_search($query) // {{{
- {
- global $wpdb;
- $wpjobads_options = get_option('wpjobads_options');
- $jobs = wpjobads_search_all_jobs($query);
- $date_format = $wpjobads_options['date_format'];
- $gmt_offset = intval(get_option('gmt_offset')) * 3600;
- $invite = empty($wpjobads_options['invite']) ? attribute_escape(_('Post a job and find the right person')) : attribute_escape($wpjobads_options['invite']);
- $widget_invite = empty($wpjobads_options['widget_invite']) ? attribute_escape(__('Post new job', 'wpjobads')) : attribute_escape($wpjobads_options['widget_invite']);
- ob_start();
- wpjobads_template_job_listing(array(
- 'enable_frontend' => $wpjobads_options['enable_frontend'],
- 'jobs' => $jobs,
- 'cat_ID' => $cat,
- 'invite' => $invite,
- 'widget_invite' => $widget_invite,
- 'date_format' => $date_format,
- 'gmt_offset' => $gmt_offset
- ));
- $content = ob_get_contents();
- ob_end_clean();
- return $content;
- }// }}}
- function wpjobads_rss2($cat_ID = null, $jobtype = null) // {{{
- {
- global $wpdb;
- $table_job = $wpdb->prefix . WPJOBADS_JOB;
- $table_category = $wpdb->prefix . WPJOBADS_CATEGORY;
- $columns = "$table_job.id, $table_job.posted, $table_job.title, $table_job.description, $table_job.how_to_apply, $table_job.company_name, $table_job.location, $table_job.zipcode, $table_job.company_url, $table_category.id AS category_id, $table_category.name AS category_name, $table_job.type";
- $now = gmdate('Y-m-d H:i:s', time());
- $where_jobs = array();
- $where_count = '';
- if ($cat_ID) {
- $cat_ID = intval($cat_ID);
- $where_jobs[] = "$table_category.id = $cat_ID";
- }
- if ($jobtype) {
- $jobtype = $wpdb->escape($jobtype);
- $where_jobs[] = "$table_job.`type` = '$jobtype'";
- $where_count = "AND $table_job.`type` = '$jobtype'";
- }
- $where_jobs = empty($where_jobs) ? '' : ('AND ' . implode(' AND ', $where_jobs));
- $jobs_sql = "SELECT $columns FROM $table_job INNER JOIN $table_category ON $table_job.category = $table_category.id WHERE ad_approved = 1 AND ad_paid = 1 AND ad_published = 1 AND (expired > '$now' OR ad_duration = -1) $where_jobs ORDER BY posted DESC";
- $jobs = $wpdb->get_results($jobs_sql, ARRAY_A);
- $posted_sql = "SELECT MAX($table_job.posted) AS posted FROM $table_job WHERE ad_approved = 1 AND ad_paid = 1 AND ad_published = 1 AND (expired > '$now' OR ad_duration = -1) $where_count ORDER BY posted DESC";
- $posted = $wpdb->get_var($posted_sql);
- $wpjobads_options = get_option('wpjobads_options');
- header('Content-Type: text/xml; charset="' . get_option('blog_charset') . '"', true);
- ?>
- <?php echo '<?xml version="1.0" encoding="'.get_option('blog_charset').'"?'.'>'; ?>
- <rss version="2.0"
- xmlns:content="http://purl.org/rss/1.0/modules/content/"
- xmlns:wfw="http://wellformedweb.org/CommentAPI/"
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:atom="http://www.w3.org/2005/Atom"
- xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
- >
- <channel>
- <title><?php echo attribute_escape($wpjobads_options['title']) ?></title>
- <link><?php echo wpjobads_get_permalink() ?></link>
- <description><?php echo attribute_escape($wpjobads_options['description']) ?></description>
- <pubDate><?php echo mysql2date('D, d M Y H:i:s +0000', $posted, false); ?></pubDate>
- <language><?php echo get_option('rss_language'); ?></language>
- <sy:updatePeriod>hourly</sy:updatePeriod>
- <sy:updateFrequency>1</sy:updateFrequency>
- <?php foreach ($jobs as $job): ?>
- <item>
- <title><?php echo attribute_escape($job['title']) ?></title>
- <link><?php echo attribute_escape(wpjobads_get_permalink('job_id='.$job['id'])) ?></link>
- <pubDate><?php echo mysql2date('D, d M Y H:i:s +0000', $job['posted'], false); ?></pubDate>
- <category><![CDATA[<?php echo html_entity_decode($job['category_name']) ?>]]></category>
- <guid isPermaLink="false"><?php echo attribute_escape(wpjobads_get_permalink('job_id='.$job['id'])) ?></guid>
- <content:encoded><![CDATA[<?php echo html_entity_decode(wpjobads_view_job($job)) ?>]]></content:encoded>
- </item>
- <?php endforeach ?>
- </channel>
- </rss>
- <?php
- }// }}}
- // ----------------------------------------------------------------------------
- // HTTP & Net functions
- function wpjobads_http_request($method, $url, $data = '', $headers = array(), $timeout = 5)// {{{
- {
- $url = parse_url($url);
- if (!$url['path']) $url['path'] = '/';
- if ($url['query']) $url['path'] .= '?' . $url['query'];
- $request = strtoupper($method) . ' ' . $url['path'] . " HTTP/1.0\r\n";
- $headers['Host'] = $url['host'];
- $headers['Content-Length'] = strlen($data);
- foreach ($headers as $name => $value) {
- $request .= $name . ': ' . $value . "\r\n";
- }
- $request .= "\r\n";
- $request .= $data;
- $response = false;
- if (!isset($url['port'])) $url['port'] = 80;
- if (false != ($http = @fsockopen($url['host'], $url['port'], $errno, $errstr, $timeout)) && is_resource($http)) {
- fwrite($http, $request);
- while (!feof($http))
- $response .= fgets($http, 1160); // One TCP-IP packet
- fclose($http);
- $response = explode("\r\n\r\n", $response, 2);
- }
- return $response;
- }// }}}
- function wpjobads_http_get($url, $data = '', $headers = array(), $timeout = 5)// {{{
- {
- if ($data) $url .= '?' . $data;
- return wpjobads_http_request('GET', $url, '', $headers, $timeout);
- }// }}}
- function wpjobads_http_post($url, $data = '', $headers = array(), $timout = 5)// {{{
- {
- if (!isset($headers['Content-Type'])) {
- $headers = array_merge($headers, array('Content-Type' => 'application/x-www-form-urlencoded'));
- }
- return wpjobads_http_request('POST', $url, $data, $headers, $timeout);
- }// }}}
- function wpjobads_paypal_verify($data = '', $headers = array(), $timeout = 30)// {{{
- {
- $wpjobads_options = get_option('wpjobads_options');
- $url = parse_url($wpjobads_options['paypal_verification_url']);
- if (!$url['path']) $url['path'] = '/';
- if ($url['query']) $url['path'] .= '?' . $url['query'];
- $request = 'POST ' . $url['path'] . " HTTP/1.0\r\n";
- $headers['Host'] = $url['host'];
- $headers['Content-Length'] = strlen($data);
- foreach ($headers as $name => $value) {
- $request .= $name . ': ' . $value . "\r\n";
- }
- $request .= "\r\n";
- $request .= $data;
- $response = false;
- if (!isset($url['port'])) $url['port'] = 443;
- if (false != ($http = fsockopen($url['scheme'] . '://' . $url['host'], $url['port'], $errno, $errstr, $timeout)) && is_resource($http)) {
- fwrite($http, $request);
- while (!feof($http))
- $response .= fgets($http, 1160); // One TCP-IP packet
- fclose($http);
- $response = explode("\r\n\r\n", $response, 2);
- } else {
- wpjobads_log('HTTP unable to open socket to ' . $wpjobads_options['paypal_verification_url'] . ' with errno = ' . $errno . ' and errstr = ' . $errstr);
- }
- return $response;
- }// }}}
- function wpjobads_check_update($plugin_file, $plugin_data, $context)// {{{
- {
- global $wp_version;
- //if (!empty($context) and $context != 'active') return false;
- if ($plugin_data['Name'] != 'WPJobAds') return false;
- if (!is_callable('fsockopen')) return false;
- $wpjobads_options = get_option('wpjobads_options');
- if (!WPJOBADS_FORCE_CHECK_UPDATE and (WPJOBADS_CHECK_UPDATE_PERIOD > (time() - $wpjobads_options['last_checked']))) {
- if (version_compare($wpjobads_options['new_version'], $wpjobads_options['version']) == 1) {
- wpjobads_notify_update($plugin_data['Name'], $wpjobads_options['update_url'], $wpjobads_options['new_version']);
- return true;
- }
- return false;
- }
- $request = 'v='.urlencode($plugin_data['Version']).'&u='.urlencode(get_bloginfo('url'));
- if ($wpjobads_options['license_key']) $request .= '&l='.urlencode(md5($wpjobads_options['license_key']));
- $headers['Content-Type'] = 'application/x-www-form-urlencoded; charset=' . get_option('blog_charset');
- $headers['User-Agent'] = 'WordPress/' . $wp_version . '; ' . get_bloginfo('url');
- list($header, $response) = wpjobads_http_post(WPJOBADS_CHECK_UPDATE_URL, $request, $headers, 30);
- $response = unserialize($response);
- if (!$response || !$response['v'] || !$response['u']) {
- return false;
- }
- if (version_compare($response['v'], $wpjobads_options['version']) == 1) {
- $wpjobads_options['last_checked'] = time();
- $wpjobads_options['new_version'] = $response['v'];
- $wpjobads_options['update_url'] = $response['u'];
- update_option('wpjobads_options', $wpjobads_options);
- wpjobads_notify_update($plugin_data['Name'], $wpjobads_options['update_url'], $wpjobads_options['new_version']);
- return true;
- }
- return false;
- }// }}}
- add_action('after_plugin_row', 'wpjobads_check_update', 10, 3);
- function wpjobads_notify_update($plugin_name, $update_url, $new_version)// {{{
- {
- echo '<tr><td colspan="5" class="plugin-update">';
- printf(__('There is a new version of %1$s available. <a href="%2$s">Download version %3$s here</a> <em>automatic upgrade unavailable for this plugin</em>.'),
- $plugin_name, $update_url, $new_version);
- echo "</td></tr>";
- }// }}}
- // ----------------------------------------------------------------------------
- // Administrative pages
- function wpjobads_install_page()// {{{
- {
- global $user_ID;
- $post['post_type'] = 'page';
- $post['post_title'] = __('Jobs', 'wpjobads');
- $post['post_name'] = __('jobs', 'wpjobads');
- $post['post_content'] = __('This post was auto generated by WPJobAds during installation. Please do not delete this page.', 'wpjobads');
- $post['post_excerpt'] = '';
- $post['post_parent'] = 0;
- $post['to_ping'] = '';
- $post['post_author'] = $user_ID;
- $post['post_status'] = 'publish';
- $post['comment_status'] = 'closed';
- $post['ping_status'] = 'closed';
- $post_ID = wp_insert_post($post);
- if (is_wp_error($post_ID))
- return $post_ID;
- if (empty($post_ID))
- return 0;
- return $post_ID;
- }// }}}
- function wpjobads_install()// {{{
- {
- global $wpdb;
- $table_category = $wpdb->prefix . WPJOBADS_CATEGORY;
- if ($wpdb->get_var("SHOW TABLES LIKE '$table_category'") != $table_category) {
- $sql = "CREATE TABLE $table_category (
- id int(4) unsigned NOT NULL auto_increment,
- name varchar(255) NOT NULL,
- priority int(10) unsigned NOT NULL default '10',
- job_count bigint(20) unsigned NOT NULL default '0',
- PRIMARY KEY (id)
- );";
- require_once(ABSPATH . 'wp-admin/includes/upgrade.php');
- dbDelta($sql);
- $sql = "INSERT INTO $table_category (name)
- VALUES('" . $wpdb->escape(__('Miscellaneous', 'wpjobads')) . "')
- ";
- $result = $wpdb->query($sql);
- }
- $table_job = $wpdb->prefix . WPJOBADS_JOB;
- if ($wpdb->get_var("SHOW TABLES LIKE '$table_job'") != $table_job) {
- $sql = "CREATE TABLE $table_job (
- id bigint(20) unsigned NOT NULL auto_increment,
- posted datetime NOT NULL default '0000-00-00 00:00:00',
- modified datetime NOT NULL default '0000-00-00 00:00:00',
- expired datetime NOT NULL default '0000-00-00 00:00:00',
- title varchar(255) NOT NULL default '',
- category int(4) unsigned NOT NULL default '1',
- `type` ENUM('fulltime','parttime','freelance','internship') NOT NULL DEFAULT 'fulltime',
- description text NOT NULL,
- how_to_apply text NOT NULL,
- location varchar(100) NOT NULL default '',
- zipcode varchar(10) NOT NULL default '',
- company_name varchar(100) NOT NULL default '',
- company_url varchar(100) NOT NULL default '',
- contact_name varchar(100) NOT NULL default '',
- contact_email varchar(100) NOT NULL default '',
- ad_duration int(4) NOT NULL default '0',
- ad_currency char(3) NOT NULL default 'USD',
- ad_price double NOT NULL default '0',
- ad_paid BOOLEAN NOT NULL default '0',
- ad_approved BOOLEAN NOT NULL default '0',
- ad_published BOOLEAN NOT NULL default '1',
- ip_address varchar(100) NOT NULL default '',
- txn_id varchar(17),
- PRIMARY KEY (id)
- );";
- require_once(ABSPATH . 'wp-admin/includes/upgrade.php');
- dbDelta($sql);
- }
- $wpjobads_options = get_option('wpjobads_options');
- if (!empty($wpjobads_options) and $wpjobads_options['post_id']) {
- $post_ID = $wpjobads_options['post_id'];
- } else {
- $post_ID = wpjobads_install_page();
- }
- $default_options = array(
- 'post_id' => $post_ID,
- 'version' => WPJOBADS_VERSION,
- 'release_date' => WPJOBADS_RELEASE_DATE,
- 'last_checked' => time() - WPJOBADS_CHECK_UPDATE_PERIOD,
- 'new_version' => WPJOBADS_VERSION,
- 'update_url' => WPJOBADS_UPDATE_URL,
- 'license_key' => '',
- ###
- 'title' => __('Job Board', 'wpjobads'),
- 'description' => '',
- 'invite' => __('Post a job and find the right person'),
- 'enable_frontend' => 0,
- 'auto_approve' => 0,
- 'force_payment_email' => 1,
- 'duration' => 30,
- 'currency' => 'USD',
- 'fulltime_price' => 0,
- 'parttime_price' => 0,
- 'freelance_price' => 0,
- 'internship_price' => 0,
- 'paypal_email' => '',
- 'paypal_url' => 'https://www.paypal.com/cgi-bin/webscr',
- 'paypal_verification_url' => 'ssl://www.paypal.com:443/cgi-bin/webscr',
- 'date_format' => 'n/j',
- 'terms' => '',
- 'payment_email_subject' => 'Job Board Notification',
- 'payment_email_message' => '',
- 'publish_email_subject' => 'Job Board Notification',
- 'publish_email_message' => '',
- 'email_from_name' => 'WPJobAds',
- 'email_from' => 'wpjobads@example.com',
- 'email_notification' => '',
- 'notification_email_subject' => 'Job Ad Submission Notification',
- 'notification_email_message' => '',
- 'viewable_expired_ads' => 0,
- 'enable_random_ad' => 1,
- ###
- 'default_category' => 1,
- 'widget_title' => __('Job Board', 'wpjobads'),
- 'widget_invite' => __('Post new job', 'wpjobads')
- );
- foreach ($default_options as $name => $value) {
- if (!isset($wpjobads_options[$name])) {
- $wpjobads_options[$name] = $value;
- }
- }
- $wpjobads_options['version'] = WPJOBADS_VERSION;
- $wpjobads_options['release_date'] = WPJOBADS_RELEASE_DATE;
- if (version_compare(WPJOBADS_VERSION, $wpjobads_options['new_version']) == 1) {
- $wpjobads_options['last_checked'] = time();
- $wpjobads_options['new_version'] = WPJOBADS_VERSION;
- }
- update_option('wpjobads_options', $wpjobads_options);
- }// }}}
- register_activation_hook(__FILE__, 'wpjobads_install');
- function wpjobads_uninstall()// {{{
- {
- global $wpdb;
- $wpjobads_options = get_option('wpjobads_options');
- $wpdb->query('DROP TABLE ' . $wpdb->prefix . WPJOBADS_CATEGORY);
- $wpdb->query('DROP TABLE ' . $wpdb->prefix . WPJOBADS_JOB);
- $wpdb->query('DELETE FROM ' . $wpdb->prefix . 'posts WHERE ID = ' . $wpjobads_options['post_id']);
- $wpdb->query('DELETE FROM ' . $wpdb->prefix . 'postmeta WHERE post_id = ' . $wpjobads_options['post_id']);
- delete_option('wpjobads_options');
- deactivate_plugins('wpjobads/wpjobads.php');
- wp_redirect('plugins.php?deactivate=true');
- }// }}}
- function wpjobads_add_admin_pages()// {{{
- {
- global $wpdb;
- global $plugin_page, $pagenow;
- $table_job = $wpdb->prefix . WPJOBADS_JOB;
- $unapproved = intval($wpdb->get_var("SELECT COUNT(id) AS unapproved FROM $table_job WHERE ad_approved = 0"));
- $submenu = array();
- add_menu_page(__('WPJobAds for WordPress', 'wpjobads'), __('WPJobAds', 'wpjobads'), 10, __FILE__, 'wpjobads_admin_index');
- $submenu['wpjobads_admin_load_jobs'] = add_submenu_page(__FILE__, __('WPJobAds Listings', 'wpjobads'), __('Jobs', 'wpjobads'), 10, 'wpjobads-admin-jobs', 'wpjobads_admin_jobs');
- if ($unapproved or ($_GET['page'] == 'wpjobads-admin-approvals' and isset($_GET['message'])))
- $submenu['wpjobads_admin_load_approvals'] = add_submenu_page(__FILE__, __('WPJobAds Approvals', 'wpjobads'), sprintf(__('Awaiting Approval (%d)', 'wpjobads'), $unapproved), 10, 'wpjobads-admin-approvals', 'wpjobads_admin_approvals');
- $submenu['wpjobads_admin_load_categories'] = add_submenu_page(__FILE__, __('WPJobAds Categories', 'wpjobads'), __('Categories', 'wpjobads'), 10, 'wpjobads-admin-categories', 'wpjobads_admin_categories');
- $submenu['wpjobads_admin_load_options'] = add_submenu_page(__FILE__, __('WPJobAds Options', 'wpjobads'), __('Options', 'wpjobads'), 10, 'wpjobads-admin-options', 'wpjobads_admin_options');
- $submenu['wpjobads_admin_load_uninstall'] = add_submenu_page(__FILE__, __('WPJobAds Uninstall', 'wpjobads'), __('Uninstall', 'wpjobads'), 10, 'wpjobads-admin-uninstall', 'wpjobads_admin_uninstall');
- foreach ($submenu as $handler => $page_hook) {
- if ($page_hook == get_plugin_page_hook($plugin_page, $pagenow)) {
- add_action('load-' . $page_hook, $handler);
- }
- }
- }// }}}
- add_action('admin_menu', 'wpjobads_add_admin_pages');
- function wpjobads_submenu_fix()// {{{
- {
- global $submenu;
- if (array_key_exists('wpjobads/wpjobads.php', $submenu)) {
- $wpjobads = $submenu['wpjobads/wpjobads.php'][0];
- $wpjobads[0] = __('Overview', 'wpjobads');
- $wpjobads[3] = __('WPJobAds Overview', 'wpjobads');
- $submenu['wpjobads/wpjobads.php'][0] = $wpjobads;
- }
- }// }}}
- add_action('admin_head', 'wpjobads_submenu_fix');
- function wpjobads_admin_load_approvals()// {{{
- {
- if ($_POST['action'] == 'approve') return wpjobads_admin_approve_job();
- }// }}}
- function wpjobads_admin_approvals()// {{{
- {
- $wpjobads_options = get_option('wpjobads_options');
- if (empty($wpjobads_options['license_key'])) return wpjobads_license_form('wpjobads-admin-approvals');
- global $wpdb;
- $table_job = $wpdb->prefix . WPJOBADS_JOB;
- $unapproved = $wpdb->get_results("SELECT * FROM $table_job WHERE ad_approved = 0 ORDER BY posted ASC", ARRAY_A);
- $gmt_offset = intval(get_option('gmt_offset')) * 3600;
- $messages[1] = __('Job approved.', 'wpjobads');
- $messages[2] = __('Job not approved.', 'wpjobads');
- ?>
- <?php if (isset($_GET['message'])) : ?>
- <div id="message" class="updated fade"><p><?php echo $messages[$_GET['message']]; ?></p></div>
- <?php endif; ?>
- <div class="wrap">
- <h2><?php _e('Approval Queue', 'wpjobads') ?></h2>
- <?php if (empty($unapproved)): ?>
- <p><?php _e('No jobs found.', 'wpjobads') ?></p>
- <?php else: ?>
- <ol class="commentlist">
- <?php foreach ($unapproved as $job): ?>
- <li>
- <p><strong><?php echo $job['title'] ?></strong> | <a href="<?php echo $job['company_url'] ?>"><?php echo $job['company_name'] ?></a> | <a href="mailto:<?php echo $job['contact_email'] ?>"><?php echo $job['contact_email'] ?></a> | <?php _e('IP:', 'wpjobads') ?> <a href="http://ws.arin.net/cgi-bin/whois.pl?queryinput=<?php echo urlencode($job['ip_address']) ?>"><?php echo $job['ip_address'] ?></a></p>
- <p><small><?php echo date('M d, g:i A', strtotime($job['posted']) + $gmt_offset) ?> — [ <a id="showlink-<?php echo $job['id'] ?>" href="javascript:wpjobads_toggle(<?php echo $job['id'] ?>)"><?php _e('Show', 'wpjobads') ?></a> | <a href="admin.php?page=wpjobads-admin-jobs&action=edit&job_ID=<?php echo attribute_escape($job['id']) ?>">Edit</a> | <a href="<?php echo wp_nonce_url('admin.php?page=wpjobads-admin-jobs&action=delete&job_ID=' . $job['id'], 'delete-job_' . $job['id'])?>">Delete</a> ]</small></p>
- <div class="jobcontent" id="jobcontent-<?php echo $job['id'] ?>">
- <address><?php echo $job['location'] ?> <?php echo $job['zipcode'] ?></address><br/>
- <?php echo apply_filters('the_content', $job['description']) ?>
- <h4><?php _e('Interested?', 'wpjobads') ?></h4>
- <?php echo apply_filters('the_content', $job['how_to_apply']) ?>
- </div>
- <form method="post" action="admin.php?page=wpjobads-admin-approvals&action=approve">
- <input type="hidden" name="job_ID" value="<?php echo attribute_escape($job['id']) ?>" />
- <?php wp_nonce_field('approve-job_' . $job['id']) ?>
- <input type="hidden" name="action" value="approve" />
- <p class="submit" style="text-align: left;"><input type="submit" class="submit" value="<?php _e('Approve', 'wpjobads') ?>"></p>
- </form>
- </li>
- <?php endforeach ?>
- </ol>
- <script type="text/javascript">
- //<![CDATA[
- function wpjobads_toggle(id){
- var div = $('jobcontent-' + id);
- var link = $('showlink-' + id);
- if (div.style.display == 'none') {
- div.style.display = 'block';
- link.innerHTML = '<?php _e('Hide', 'wpjobads') ?>';
- } else {
- div.style.display = 'none';
- link.innerHTML = '<?php _e('Show', 'wpjobads') ?>';
- }
- }
- var wpjobads_contents = document.getElementsByClassName('jobcontent');
- for (i = 0; i < wpjobads_contents.length; i++) wpjobads_contents[i].style.display = 'none';
- //]]>
- </script>
- <?php endif ?>
- </div>
- <?php
- }// }}}
- function wpjobads_admin_approve_job()// {{{
- {
- $_POST = stripslashes_deep($_POST);
- $job_ID = intval($_POST['job_ID']);
- check_admin_referer('approve-job_' . $job_ID);
- $job = wpjobads_get_job($job_ID);
- if (wpjobads_set_approved($job)) {
- if (intval($job['ad_price']) == 0) {
- wpjobads_send_publish_email($job);
- } else {
- wpjobads_send_payment_email($job);
- }
- wpjobads_log('Job #' . $job['id'] . ' - "' . $job['title'] . '" is set to "approved" and an email has been sent to ' . $job['contact_email']);
- wp_redirect('admin.php?page=wpjobads-admin-approvals&message=1');
- } else {
- wp_redirect('admin.php?page=wpjobads-admin-approvals&message=2');
- }
- }// }}}
- function wpjobads_set_approved($job, $ad_approved = 1)// {{{
- {
- global $wpdb;
- $table_job = $wpdb->prefix . WPJOBADS_JOB;
- $now = time();
- $modified = $wpdb->escape(gmdate('Y-m-d H:i:s', $now));
- $updates = array();
- $updates[] = "modified = '$modified'";
- $ad_approved = intval($ad_approved) ? 1 : 0;
- $updates[] = "ad_approved = $ad_approved";
- $expired = gmdate('Y-m-d H:i:s', $now + intval($job['ad_duration']) * 86400);
- $expired = $wpdb->escape($expired);
- $updates[] = "expired = '$expired'";
- $updates = implode(', ', $updates);
- return $wpdb->query("UPDATE $table_job SET $updates WHERE id = " . $job['id']);
- }// }}}
- function wpjobads_set_paid($job, $txn_id, $ad_paid = 1)// {{{
- {
- global $wpdb;
- $table_job = $wpdb->prefix . WPJOBADS_JOB;
- $now = time();
- $modified = $wpdb->escape(gmdate('Y-m-d H:i:s', $now));
- $updates = array();
- $updates[] = "modified = '$modified'";
- $ad_paid = intval($ad_paid) ? 1 : 0;
- $updates[] = "ad_paid = $ad_paid";
- $expired = gmdate('Y-m-d H:i:s', $now + intval($job['ad_duration']) * 86400);
- $expired = $wpdb->escape($expired);
- $updates[] = "expired = '$expired'";
- $txn_id = $wpdb->escape($txn_id);
- $updates[] = "txn_id = '$txn_id'";
- $updates = implode(', ', $updates);
- return $wpdb->query("UPDATE $table_job SET $updates WHERE id = " . $job['id']);
- }// }}}
- function wpjobads_job_paid($job_ID)// {{{
- {
- global $wpdb;
- $table_job = $wpdb->prefix . WPJOBADS_JOB;
- $ad_paid = $wpdb->get…
Large files files are truncated, but you can click here to view the full file