PluginProbe
WP Job Manager / 1.25.1.1
WP Job Manager v1.25.1.1
2.4.7 2.4.6 2.4.5 2.4.4 2.4.3 2.4.2 trunk 1.0.0 1.0.1 1.0.2 1.0.3 1.0.4 1.0.5 1.1.0 1.1.1 1.1.2 1.1.3 1.10.0 1.11.0 1.11.1 1.12.0 1.12.1 1.13.0 1.14.0 1.15.0 All 154 releases
wp-job-manager / wp-job-manager.php
wp-job-manager.php
175 lines 7.4 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 * Plugin Name: WP Job Manager
4 * Plugin URI: https://wpjobmanager.com/
5 * Description: Manage job listings from the WordPress admin panel, and allow users to post jobs directly to your site.
6 * Version: 1.25.1.1
7 * Author: Automattic
8 * Author URI: https://wpjobmanager.com/
9 * Requires at least: 4.1
10 * Tested up to: 4.6
11 * Text Domain: wp-job-manager
12 * Domain Path: /languages/
13 * License: GPL2+
14 */
15 if ( ! defined( 'ABSPATH' ) ) {
16 exit;
17 }
18
19 /**
20 * WP_Job_Manager class.
21 */
22 class WP_Job_Manager {
23
24 /**
25 * Constructor - get the plugin hooked in and ready
26 */
27 public function __construct() {
28 // Define constants
29 define( 'JOB_MANAGER_VERSION', '1.25.1.1' );
30 define( 'JOB_MANAGER_PLUGIN_DIR', untrailingslashit( plugin_dir_path( __FILE__ ) ) );
31 define( 'JOB_MANAGER_PLUGIN_URL', untrailingslashit( plugins_url( basename( plugin_dir_path( __FILE__ ) ), basename( __FILE__ ) ) ) );
32
33 // Includes
34 include( 'includes/class-wp-job-manager-install.php' );
35 include( 'includes/class-wp-job-manager-post-types.php' );
36 include( 'includes/class-wp-job-manager-ajax.php' );
37 include( 'includes/class-wp-job-manager-shortcodes.php' );
38 include( 'includes/class-wp-job-manager-api.php' );
39 include( 'includes/class-wp-job-manager-forms.php' );
40 include( 'includes/class-wp-job-manager-geocode.php' );
41 include( 'includes/class-wp-job-manager-cache-helper.php' );
42
43 if ( is_admin() ) {
44 include( 'includes/admin/class-wp-job-manager-admin.php' );
45 }
46
47 // Init classes
48 $this->forms = new WP_Job_Manager_Forms();
49 $this->post_types = new WP_Job_Manager_Post_Types();
50
51 // Activation - works with symlinks
52 register_activation_hook( basename( dirname( __FILE__ ) ) . '/' . basename( __FILE__ ), array( $this, 'activate' ) );
53
54 // Switch theme
55 add_action( 'after_switch_theme', array( 'WP_Job_Manager_Ajax', 'add_endpoint' ), 10 );
56 add_action( 'after_switch_theme', array( $this->post_types, 'register_post_types' ), 11 );
57 add_action( 'after_switch_theme', 'flush_rewrite_rules', 15 );
58
59 // Actions
60 add_action( 'after_setup_theme', array( $this, 'load_plugin_textdomain' ) );
61 add_action( 'after_setup_theme', array( $this, 'include_template_functions' ), 11 );
62 add_action( 'widgets_init', array( $this, 'widgets_init' ) );
63 add_action( 'wp_enqueue_scripts', array( $this, 'frontend_scripts' ) );
64 add_action( 'admin_init', array( $this, 'updater' ) );
65 }
66
67 /**
68 * Called on plugin activation
69 */
70 public function activate() {
71 WP_Job_Manager_Ajax::add_endpoint();
72 $this->post_types->register_post_types();
73 WP_Job_Manager_Install::install();
74 flush_rewrite_rules();
75 }
76
77 /**
78 * Handle Updates
79 */
80 public function updater() {
81 if ( version_compare( JOB_MANAGER_VERSION, get_option( 'wp_job_manager_version' ), '>' ) ) {
82 WP_Job_Manager_Install::install();
83 flush_rewrite_rules();
84 }
85 }
86
87 /**
88 * Localisation
89 */
90 public function load_plugin_textdomain() {
91 load_textdomain( 'wp-job-manager', WP_LANG_DIR . "/wp-job-manager/wp-job-manager-" . apply_filters( 'plugin_locale', get_locale(), 'wp-job-manager' ) . ".mo" );
92 load_plugin_textdomain( 'wp-job-manager', false, dirname( plugin_basename( __FILE__ ) ) . '/languages/' );
93 }
94
95 /**
96 * Load functions
97 */
98 public function include_template_functions() {
99 include( 'wp-job-manager-functions.php' );
100 include( 'wp-job-manager-template.php' );
101 }
102
103 /**
104 * Widgets init
105 */
106 public function widgets_init() {
107 include_once( 'includes/class-wp-job-manager-widgets.php' );
108 }
109
110 /**
111 * Register and enqueue scripts and css
112 */
113 public function frontend_scripts() {
114 $ajax_url = WP_Job_Manager_Ajax::get_endpoint();
115 $ajax_filter_deps = array( 'jquery', 'jquery-deserialize' );
116 $ajax_data = array(
117 'ajax_url' => $ajax_url,
118 'is_rtl' => is_rtl() ? 1 : 0,
119 'i18n_load_prev_listings' => __( 'Load previous listings', 'wp-job-manager' ),
120 );
121
122 // WPML workaround
123 if ( defined( 'ICL_SITEPRESS_VERSION' ) ) {
124 $ajax_data['lang'] = apply_filters( 'wpml_current_language', NULL );
125 }
126
127 if ( apply_filters( 'job_manager_chosen_enabled', true ) ) {
128 wp_register_script( 'chosen', JOB_MANAGER_PLUGIN_URL . '/assets/js/jquery-chosen/chosen.jquery.min.js', array( 'jquery' ), '1.1.0', true );
129 wp_register_script( 'wp-job-manager-term-multiselect', JOB_MANAGER_PLUGIN_URL . '/assets/js/term-multiselect.min.js', array( 'jquery', 'chosen' ), JOB_MANAGER_VERSION, true );
130 wp_register_script( 'wp-job-manager-multiselect', JOB_MANAGER_PLUGIN_URL . '/assets/js/multiselect.min.js', array( 'jquery', 'chosen' ), JOB_MANAGER_VERSION, true );
131 wp_enqueue_style( 'chosen', JOB_MANAGER_PLUGIN_URL . '/assets/css/chosen.css' );
132 $ajax_filter_deps[] = 'chosen';
133
134 wp_localize_script( 'chosen', 'job_manager_chosen_multiselect_args',
135 apply_filters( 'job_manager_chosen_multiselect_args', array( 'search_contains' => true ) )
136 );
137 }
138
139 if ( apply_filters( 'job_manager_ajax_file_upload_enabled', true ) ) {
140 wp_register_script( 'jquery-iframe-transport', JOB_MANAGER_PLUGIN_URL . '/assets/js/jquery-fileupload/jquery.iframe-transport.js', array( 'jquery' ), '1.8.3', true );
141 wp_register_script( 'jquery-fileupload', JOB_MANAGER_PLUGIN_URL . '/assets/js/jquery-fileupload/jquery.fileupload.js', array( 'jquery', 'jquery-iframe-transport', 'jquery-ui-widget' ), '9.11.2', true );
142 wp_register_script( 'wp-job-manager-ajax-file-upload', JOB_MANAGER_PLUGIN_URL . '/assets/js/ajax-file-upload.min.js', array( 'jquery', 'jquery-fileupload' ), JOB_MANAGER_VERSION, true );
143
144 ob_start();
145 get_job_manager_template( 'form-fields/uploaded-file-html.php', array( 'name' => '', 'value' => '', 'extension' => 'jpg' ) );
146 $js_field_html_img = ob_get_clean();
147
148 ob_start();
149 get_job_manager_template( 'form-fields/uploaded-file-html.php', array( 'name' => '', 'value' => '', 'extension' => 'zip' ) );
150 $js_field_html = ob_get_clean();
151
152 wp_localize_script( 'wp-job-manager-ajax-file-upload', 'job_manager_ajax_file_upload', array(
153 'ajax_url' => $ajax_url,
154 'js_field_html_img' => esc_js( str_replace( "\n", "", $js_field_html_img ) ),
155 'js_field_html' => esc_js( str_replace( "\n", "", $js_field_html ) ),
156 'i18n_invalid_file_type' => __( 'Invalid file type. Accepted types:', 'wp-job-manager' )
157 ) );
158 }
159
160 wp_register_script( 'jquery-deserialize', JOB_MANAGER_PLUGIN_URL . '/assets/js/jquery-deserialize/jquery.deserialize.js', array( 'jquery' ), '1.2.1', true );
161 wp_register_script( 'wp-job-manager-ajax-filters', JOB_MANAGER_PLUGIN_URL . '/assets/js/ajax-filters.min.js', $ajax_filter_deps, JOB_MANAGER_VERSION, true );
162 wp_register_script( 'wp-job-manager-job-dashboard', JOB_MANAGER_PLUGIN_URL . '/assets/js/job-dashboard.min.js', array( 'jquery' ), JOB_MANAGER_VERSION, true );
163 wp_register_script( 'wp-job-manager-job-application', JOB_MANAGER_PLUGIN_URL . '/assets/js/job-application.min.js', array( 'jquery' ), JOB_MANAGER_VERSION, true );
164 wp_register_script( 'wp-job-manager-job-submission', JOB_MANAGER_PLUGIN_URL . '/assets/js/job-submission.min.js', array( 'jquery' ), JOB_MANAGER_VERSION, true );
165 wp_localize_script( 'wp-job-manager-ajax-filters', 'job_manager_ajax_filters', $ajax_data );
166 wp_localize_script( 'wp-job-manager-job-dashboard', 'job_manager_job_dashboard', array(
167 'i18n_confirm_delete' => __( 'Are you sure you want to delete this listing?', 'wp-job-manager' )
168 ) );
169
170 wp_enqueue_style( 'wp-job-manager-frontend', JOB_MANAGER_PLUGIN_URL . '/assets/css/frontend.css' );
171 }
172 }
173
174 $GLOBALS['job_manager'] = new WP_Job_Manager();
175