WP Job Manager - Version 1.38.1

Version Description

  • Enhancement: Added support for WordPress.com marketplace
  • Change: Only perform application field validation when required or not empty (@tripflex)
  • Fix: Deprecated error in the_company_twitter() (@MPolleke)
  • Fix: Using WP Job Manager functions before they're fully loaded.
Download this release

Release Info

Developer jakeom
Plugin Icon 128x128 WP Job Manager
Version 1.38.1
Comparing to
See all releases

Code changes from version 1.38.0 to 1.38.1

changelog.txt CHANGED
@@ -1,3 +1,9 @@
 
 
 
 
 
 
1
  = 1.38.0 =
2
  * Enhancement: Add remote position to filtering (@tripflex)
3
  * Enhancement: Add setting to enable/disable remote position field (@tripflex)
1
+ = 1.38.1 =
2
+ * Enhancement: Added support for WordPress.com marketplace
3
+ * Change: Only perform application field validation when required or not empty (@tripflex)
4
+ * Fix: Deprecated error in `the_company_twitter()` (@MPolleke)
5
+ * Fix: Using WP Job Manager functions before they're fully loaded.
6
+
7
  = 1.38.0 =
8
  * Enhancement: Add remote position to filtering (@tripflex)
9
  * Enhancement: Add setting to enable/disable remote position field (@tripflex)
includes/3rd-party/3rd-party.php CHANGED
@@ -13,3 +13,4 @@ require_once JOB_MANAGER_PLUGIN_DIR . '/includes/3rd-party/yoast.php';
13
  require_once JOB_MANAGER_PLUGIN_DIR . '/includes/3rd-party/all-in-one-seo-pack.php';
14
  require_once JOB_MANAGER_PLUGIN_DIR . '/includes/3rd-party/rp4wp.php';
15
  require_once JOB_MANAGER_PLUGIN_DIR . '/includes/3rd-party/wp-all-import.php';
 
13
  require_once JOB_MANAGER_PLUGIN_DIR . '/includes/3rd-party/all-in-one-seo-pack.php';
14
  require_once JOB_MANAGER_PLUGIN_DIR . '/includes/3rd-party/rp4wp.php';
15
  require_once JOB_MANAGER_PLUGIN_DIR . '/includes/3rd-party/wp-all-import.php';
16
+ require_once JOB_MANAGER_PLUGIN_DIR . '/includes/3rd-party/wpcom.php';
includes/3rd-party/wpcom.php ADDED
@@ -0,0 +1,92 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * WP.com Marketplace licensing integration for premium core addons.
4
+ *
5
+ * @package wp-job-manager
6
+ */
7
+
8
+ /**
9
+ * Configure license configuration for WP Job Manager when purchased from WP.com Marketplace.
10
+ *
11
+ * @param bool|WP_Error $result The result of the licensing configuration.
12
+ * @param array $payload The payload receivced from WPJobManager.com back-end API.
13
+ * @param string $event_type The event type that triggers this filter.
14
+ *
15
+ * @return bool
16
+ */
17
+ function wpjm_dotcom_marketplace_configure_license_for_wp_job_manager_addon( $result, $payload, $event_type ) {
18
+ if ( 'provision_license' !== $event_type ) {
19
+ return $result;
20
+ }
21
+
22
+ $helper = WP_Job_Manager_Helper::instance();
23
+ $helper->activate_licence( $payload['wpjm_product_slug'], $payload['license_code'], $payload['email_address'] );
24
+
25
+ $messages = $helper->get_messages( $payload['wpjm_product_slug'] );
26
+
27
+ $errors = array_filter(
28
+ $messages,
29
+ function ( $message ) {
30
+ return 'error' === $message['type'];
31
+ }
32
+ );
33
+
34
+ if ( ! empty( $errors ) ) {
35
+ return new \WP_Error( 'error', 'An error has occurred while installing ' . $payload['wpjm_product_slug'], $errors );
36
+ }
37
+
38
+ return $result;
39
+ }
40
+
41
+ const WPJM_WPCOM_PRODUCTS = [
42
+ 'wp-job-manager-applications',
43
+ 'wp-job-manager-resumes',
44
+ 'wp-job-manager-simple-paid-listings',
45
+ 'wp-job-manager-wc-paid-listings',
46
+ 'wp-job-manager-tags',
47
+ 'wp-job-manager-bookmarks',
48
+ 'wp-job-manager-alerts',
49
+ 'wp-job-manager-application-deadline',
50
+ 'wp-job-manager-embeddable-job-widget',
51
+ ];
52
+
53
+ foreach ( WPJM_WPCOM_PRODUCTS as $wpjm_wpcom_product ) {
54
+ add_filter( 'wpcom_marketplace_webhook_response_' . $wpjm_wpcom_product, 'wpjm_dotcom_marketplace_configure_license_for_wp_job_manager_addon', 10, 3 );
55
+ }
56
+
57
+ /**
58
+ * Hide the license form on the licenses page for addons that are purchased from WP.com.
59
+ *
60
+ * @param bool $status
61
+ * @param string $product_slug
62
+ *
63
+ * @return false|mixed
64
+ */
65
+ function wpjm_hide_addon_license_form_for_purchases_on_wpcom( $status, $product_slug ) {
66
+ $subscriptions = get_option( 'wpcom_active_subscriptions', [] );
67
+ if ( isset( $subscriptions[ $product_slug ] ) ) {
68
+ return false;
69
+ }
70
+
71
+ return $status;
72
+ }
73
+
74
+ add_filter( 'wpjm_display_license_form_for_addon', 'wpjm_hide_addon_license_form_for_purchases_on_wpcom', 10, 2 );
75
+
76
+ /**
77
+ * Display a notice after the license form for each addon.
78
+ *
79
+ * @param string $product_slug
80
+ *
81
+ * @return false|void
82
+ */
83
+ function wpjm_display_managed_by_wpcom_notice_for_addon( $product_slug ) {
84
+ $subscriptions = get_option( 'wpcom_active_subscriptions', [] );
85
+ if ( ! isset( $subscriptions[ $product_slug ] ) ) {
86
+ return;
87
+ }
88
+
89
+ esc_html_e( 'The license for this add-on is automatically managed by WordPress.com.', 'wp-job-manager' );
90
+ }
91
+
92
+ add_action( 'wpjm_manage_license_page_after_license_form', 'wpjm_display_managed_by_wpcom_notice_for_addon' );
includes/class-wp-job-manager-shortcodes.php CHANGED
@@ -95,20 +95,22 @@ class WP_Job_Manager_Shortcodes {
95
  * Handle redirects
96
  */
97
  public function handle_redirects() {
98
- // phpcs:ignore WordPress.Security.NonceVerification.Recommended -- Input is used safely.
99
- if ( ! get_current_user_id() || ( ! empty( $_REQUEST['job_id'] ) && job_manager_user_can_edit_job( intval( $_REQUEST['job_id'] ) ) ) ) {
 
 
 
 
100
  return;
101
  }
102
 
103
- $submit_job_form_page_id = get_option( 'job_manager_submit_job_form_page_id' );
104
- $submission_limit = get_option( 'job_manager_submission_limit' );
105
- $job_count = job_manager_count_user_job_listings();
106
 
107
  if (
108
  $submit_job_form_page_id
109
  && $submission_limit
110
  && $job_count >= $submission_limit
111
- && is_page( $submit_job_form_page_id )
112
  ) {
113
  $employer_dashboard_page_id = get_option( 'job_manager_job_dashboard_page_id' );
114
  if ( $employer_dashboard_page_id ) {
95
  * Handle redirects
96
  */
97
  public function handle_redirects() {
98
+ $submit_job_form_page_id = get_option( 'job_manager_submit_job_form_page_id' );
99
+
100
+ if ( ! is_user_logged_in() || ! is_page( $submit_job_form_page_id ) ||
101
+ // phpcs:ignore WordPress.Security.NonceVerification.Recommended -- Input is used safely.
102
+ ( ! empty( $_REQUEST['job_id'] ) && job_manager_user_can_edit_job( intval( $_REQUEST['job_id'] ) ) )
103
+ ) {
104
  return;
105
  }
106
 
107
+ $submission_limit = get_option( 'job_manager_submission_limit' );
108
+ $job_count = job_manager_count_user_job_listings();
 
109
 
110
  if (
111
  $submit_job_form_page_id
112
  && $submission_limit
113
  && $job_count >= $submission_limit
 
114
  ) {
115
  $employer_dashboard_page_id = get_option( 'job_manager_job_dashboard_page_id' );
116
  if ( $employer_dashboard_page_id ) {
includes/forms/class-wp-job-manager-form-submit-job.php CHANGED
@@ -515,6 +515,7 @@ class WP_Job_Manager_Form_Submit_Job extends WP_Job_Manager_Form {
515
  // Application method.
516
  if ( ! $this->should_application_field_skip_email_url_validation() && isset( $values['job']['application'] ) ) {
517
  $allowed_application_method = get_option( 'job_manager_allowed_application_method', '' );
 
518
 
519
  $is_valid = true;
520
 
@@ -525,24 +526,26 @@ class WP_Job_Manager_Form_Submit_Job extends WP_Job_Manager_Form {
525
  $this->fields['job']['application']['value'] = $posted_value;
526
  }
527
 
528
- switch ( $allowed_application_method ) {
529
- case 'email':
530
- if ( ! $is_valid || ! is_email( $values['job']['application'] ) ) {
531
- throw new Exception( __( 'Please enter a valid application email address', 'wp-job-manager' ) );
532
- }
533
- break;
534
- case 'url':
535
- if ( ! $is_valid || ! filter_var( $values['job']['application'], FILTER_VALIDATE_URL ) ) {
536
- throw new Exception( __( 'Please enter a valid application URL', 'wp-job-manager' ) );
537
- }
538
- break;
539
- default:
540
- if ( ! is_email( $values['job']['application'] ) ) {
541
  if ( ! $is_valid || ! filter_var( $values['job']['application'], FILTER_VALIDATE_URL ) ) {
542
- throw new Exception( __( 'Please enter a valid application email address or URL', 'wp-job-manager' ) );
543
  }
544
- }
545
- break;
 
 
 
 
 
 
 
546
  }
547
  }
548
 
515
  // Application method.
516
  if ( ! $this->should_application_field_skip_email_url_validation() && isset( $values['job']['application'] ) ) {
517
  $allowed_application_method = get_option( 'job_manager_allowed_application_method', '' );
518
+ $application_required = isset( $this->fields['job']['application']['required'] ) && $this->fields['job']['application']['required'];
519
 
520
  $is_valid = true;
521
 
526
  $this->fields['job']['application']['value'] = $posted_value;
527
  }
528
 
529
+ if ( $application_required || ! empty( $values['job']['application'] ) ) {
530
+ switch ( $allowed_application_method ) {
531
+ case 'email':
532
+ if ( ! $is_valid || ! is_email( $values['job']['application'] ) ) {
533
+ throw new Exception( __( 'Please enter a valid application email address', 'wp-job-manager' ) );
534
+ }
535
+ break;
536
+ case 'url':
 
 
 
 
 
537
  if ( ! $is_valid || ! filter_var( $values['job']['application'], FILTER_VALIDATE_URL ) ) {
538
+ throw new Exception( __( 'Please enter a valid application URL', 'wp-job-manager' ) );
539
  }
540
+ break;
541
+ default:
542
+ if ( ! is_email( $values['job']['application'] ) ) {
543
+ if ( ! $is_valid || ! filter_var( $values['job']['application'], FILTER_VALIDATE_URL ) ) {
544
+ throw new Exception( __( 'Please enter a valid application email address or URL', 'wp-job-manager' ) );
545
+ }
546
+ }
547
+ break;
548
+ }
549
  }
550
  }
551
 
includes/helper/class-wp-job-manager-helper.php CHANGED
@@ -511,7 +511,7 @@ class WP_Job_Manager_Helper {
511
  * @param string $licence_key
512
  * @param string $email
513
  */
514
- private function activate_licence( $product_slug, $licence_key, $email ) {
515
  $response = $this->api->activate(
516
  [
517
  'api_product_id' => $product_slug,
511
  * @param string $licence_key
512
  * @param string $email
513
  */
514
+ public function activate_licence( $product_slug, $licence_key, $email ) {
515
  $response = $this->api->activate(
516
  [
517
  'api_product_id' => $product_slug,
includes/helper/views/html-licences.php CHANGED
@@ -44,39 +44,44 @@ if ( ! defined( 'ABSPATH' ) ) {
44
  foreach ( $notices as $message ) {
45
  echo '<div class="notice inline notice-' . esc_attr( $message['type'] ) . '"><p>' . wp_kses_post( $message['message'] ) . '</p></div>';
46
  }
47
- ?>
48
- <form method="post">
49
- <?php wp_nonce_field( 'wpjm-manage-licence' ); ?>
50
- <?php
51
- if ( ! empty( $licence['licence_key'] ) && ! empty( $licence['email'] ) ) {
52
  ?>
53
- <input type="hidden" id="<?php echo esc_attr( sanitize_title( $product_slug ) ); ?>_action" name="action" value="deactivate"/>
54
- <input type="hidden" id="<?php echo esc_attr( sanitize_title( $product_slug ) ); ?>_plugin" name="product_slug" value="<?php echo esc_attr( $product_slug ); ?>"/>
 
 
 
 
 
55
 
56
- <label for="<?php echo esc_attr( sanitize_title( $product_slug ) ); ?>_licence_key"><?php esc_html_e( 'License', 'wp-job-manager' ); ?>:
57
- <input type="text" disabled="disabled" id="<?php echo esc_attr( sanitize_title( $product_slug ) ); ?>_licence_key" name="licence_key" placeholder="XXXX-XXXX-XXXX-XXXX" value="<?php echo esc_attr( $licence['licence_key'] ); ?>"/>
58
- </label>
59
- <label for="<?php echo esc_attr( sanitize_title( $product_slug ) ); ?>_email"><?php esc_html_e( 'Email', 'wp-job-manager' ); ?>:
60
- <input type="email" disabled="disabled" id="<?php echo esc_attr( sanitize_title( $product_slug ) ); ?>_email" name="email" placeholder="<?php esc_attr_e( 'Email address', 'wp-job-manager' ); ?>" value="<?php echo esc_attr( $licence['email'] ); ?>"/>
61
- </label>
62
 
63
- <input type="submit" class="button" name="submit" value="<?php esc_attr_e( 'Deactivate License', 'wp-job-manager' ); ?>" />
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
64
  <?php
65
- } else { // licence is not active.
66
- ?>
67
- <input type="hidden" id="<?php echo esc_attr( sanitize_title( $product_slug ) ); ?>_action" name="action" value="activate"/>
68
- <input type="hidden" id="<?php echo esc_attr( sanitize_title( $product_slug ) ); ?>_plugin" name="product_slug" value="<?php echo esc_attr( $product_slug ); ?>"/>
69
- <label for="<?php echo esc_attr( sanitize_title( $product_slug ) ); ?>_licence_key"><?php esc_html_e( 'License', 'wp-job-manager' ); ?>:
70
- <input type="text" id="<?php echo esc_attr( sanitize_title( $product_slug ) ); ?>_licence_key" name="licence_key" placeholder="XXXX-XXXX-XXXX-XXXX"/>
71
- </label>
72
- <label for="<?php echo esc_attr( sanitize_title( $product_slug ) ); ?>_email"><?php esc_html_e( 'Email', 'wp-job-manager' ); ?>:
73
- <input type="email" id="<?php echo esc_attr( sanitize_title( $product_slug ) ); ?>_email" name="email" placeholder="<?php esc_attr_e( 'Email address', 'wp-job-manager' ); ?>" value="<?php echo esc_attr( get_option( 'admin_email' ) ); ?>"/>
74
- </label>
75
- <input type="submit" class="button" name="submit" value="<?php esc_attr_e( 'Activate License', 'wp-job-manager' ); ?>" />
76
- <?php
77
- } // end if : else licence is not active.
78
  ?>
79
- </form>
80
  </div>
81
  </div>
82
  <?php endforeach; ?>
44
  foreach ( $notices as $message ) {
45
  echo '<div class="notice inline notice-' . esc_attr( $message['type'] ) . '"><p>' . wp_kses_post( $message['message'] ) . '</p></div>';
46
  }
47
+ if ( apply_filters( 'wpjm_display_license_form_for_addon', true, $product_slug ) ) {
 
 
 
 
48
  ?>
49
+ <form method="post">
50
+ <?php wp_nonce_field( 'wpjm-manage-licence' ); ?>
51
+ <?php
52
+ if ( ! empty( $licence['licence_key'] ) && ! empty( $licence['email'] ) ) {
53
+ ?>
54
+ <input type="hidden" id="<?php echo esc_attr( sanitize_title( $product_slug ) ); ?>_action" name="action" value="deactivate"/>
55
+ <input type="hidden" id="<?php echo esc_attr( sanitize_title( $product_slug ) ); ?>_plugin" name="product_slug" value="<?php echo esc_attr( $product_slug ); ?>"/>
56
 
57
+ <label for="<?php echo esc_attr( sanitize_title( $product_slug ) ); ?>_licence_key"><?php esc_html_e( 'License', 'wp-job-manager' ); ?>:
58
+ <input type="text" disabled="disabled" id="<?php echo esc_attr( sanitize_title( $product_slug ) ); ?>_licence_key" name="licence_key" placeholder="XXXX-XXXX-XXXX-XXXX" value="<?php echo esc_attr( $licence['licence_key'] ); ?>"/>
59
+ </label>
60
+ <label for="<?php echo esc_attr( sanitize_title( $product_slug ) ); ?>_email"><?php esc_html_e( 'Email', 'wp-job-manager' ); ?>:
61
+ <input type="email" disabled="disabled" id="<?php echo esc_attr( sanitize_title( $product_slug ) ); ?>_email" name="email" placeholder="<?php esc_attr_e( 'Email address', 'wp-job-manager' ); ?>" value="<?php echo esc_attr( $licence['email'] ); ?>"/>
62
+ </label>
63
 
64
+ <input type="submit" class="button" name="submit" value="<?php esc_attr_e( 'Deactivate License', 'wp-job-manager' ); ?>" />
65
+ <?php
66
+ } else { // licence is not active.
67
+ ?>
68
+ <input type="hidden" id="<?php echo esc_attr( sanitize_title( $product_slug ) ); ?>_action" name="action" value="activate"/>
69
+ <input type="hidden" id="<?php echo esc_attr( sanitize_title( $product_slug ) ); ?>_plugin" name="product_slug" value="<?php echo esc_attr( $product_slug ); ?>"/>
70
+ <label for="<?php echo esc_attr( sanitize_title( $product_slug ) ); ?>_licence_key"><?php esc_html_e( 'License', 'wp-job-manager' ); ?>:
71
+ <input type="text" id="<?php echo esc_attr( sanitize_title( $product_slug ) ); ?>_licence_key" name="licence_key" placeholder="XXXX-XXXX-XXXX-XXXX"/>
72
+ </label>
73
+ <label for="<?php echo esc_attr( sanitize_title( $product_slug ) ); ?>_email"><?php esc_html_e( 'Email', 'wp-job-manager' ); ?>:
74
+ <input type="email" id="<?php echo esc_attr( sanitize_title( $product_slug ) ); ?>_email" name="email" placeholder="<?php esc_attr_e( 'Email address', 'wp-job-manager' ); ?>" value="<?php echo esc_attr( get_option( 'admin_email' ) ); ?>"/>
75
+ </label>
76
+ <input type="submit" class="button" name="submit" value="<?php esc_attr_e( 'Activate License', 'wp-job-manager' ); ?>" />
77
+ <?php
78
+ } // end if : else licence is not active.
79
+ ?>
80
+ </form>
81
  <?php
82
+ }
83
+ do_action( 'wpjm_manage_license_page_after_license_form', $product_slug );
 
 
 
 
 
 
 
 
 
 
 
84
  ?>
 
85
  </div>
86
  </div>
87
  <?php endforeach; ?>
languages/wp-job-manager.pot CHANGED
@@ -2,16 +2,16 @@
2
  # This file is distributed under the GPL2+.
3
  msgid ""
4
  msgstr ""
5
- "Project-Id-Version: WP Job Manager 1.38.0\n"
6
  "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/wp-job-manager/\n"
7
  "Last-Translator: \n"
8
  "Language-Team: \n"
9
  "MIME-Version: 1.0\n"
10
  "Content-Type: text/plain; charset=UTF-8\n"
11
  "Content-Transfer-Encoding: 8bit\n"
12
- "POT-Creation-Date: 2022-08-26T17:27:21+00:00\n"
13
  "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
14
- "X-Generator: WP-CLI 2.6.0\n"
15
  "X-Domain: wp-job-manager\n"
16
 
17
  #. Plugin Name of the plugin
@@ -32,6 +32,10 @@ msgstr ""
32
  msgid "Automattic"
33
  msgstr ""
34
 
 
 
 
 
35
  #: includes/3rd-party/wpml.php:94
36
  msgid "Page Not Set"
37
  msgstr ""
@@ -277,7 +281,7 @@ msgid "Featured?"
277
  msgstr ""
278
 
279
  #: includes/admin/class-wp-job-manager-cpt.php:507
280
- #: includes/class-wp-job-manager-shortcodes.php:393
281
  msgid "Filled?"
282
  msgstr ""
283
 
@@ -317,13 +321,13 @@ msgstr ""
317
  #. translators: Placeholder %s is the singular label of the job listing post type.
318
  #: includes/admin/class-wp-job-manager-cpt.php:652
319
  #: includes/class-wp-job-manager-post-types.php:340
320
- #: includes/class-wp-job-manager-shortcodes.php:441
321
- #: includes/class-wp-job-manager-shortcodes.php:474
322
  msgid "Edit"
323
  msgstr ""
324
 
325
  #: includes/admin/class-wp-job-manager-cpt.php:659
326
- #: includes/class-wp-job-manager-shortcodes.php:489
327
  msgid "Delete"
328
  msgstr ""
329
 
@@ -1566,76 +1570,76 @@ msgstr ""
1566
  msgid "Add a salary period unit, this field is optional. Leave it empty to use the default salary unit, if one is defined."
1567
  msgstr ""
1568
 
1569
- #: includes/class-wp-job-manager-shortcodes.php:201
1570
  msgid "Invalid ID"
1571
  msgstr ""
1572
 
1573
- #: includes/class-wp-job-manager-shortcodes.php:208
1574
  msgid "This position has already been filled"
1575
  msgstr ""
1576
 
1577
  #. translators: Placeholder %s is the job listing title.
1578
- #: includes/class-wp-job-manager-shortcodes.php:216
1579
  msgid "%s has been filled"
1580
  msgstr ""
1581
 
1582
- #: includes/class-wp-job-manager-shortcodes.php:221
1583
  msgid "This position is not filled"
1584
  msgstr ""
1585
 
1586
  #. translators: Placeholder %s is the job listing title.
1587
- #: includes/class-wp-job-manager-shortcodes.php:229
1588
  msgid "%s has been marked as not filled"
1589
  msgstr ""
1590
 
1591
  #. translators: Placeholder %s is the job listing title.
1592
- #: includes/class-wp-job-manager-shortcodes.php:237
1593
  msgid "%s has been deleted"
1594
  msgstr ""
1595
 
1596
- #: includes/class-wp-job-manager-shortcodes.php:242
1597
- #: includes/class-wp-job-manager-shortcodes.php:256
1598
  msgid "Missing submission page."
1599
  msgstr ""
1600
 
1601
  #. translators: Placeholder %s is the plural label for the job listing post type.
1602
- #: includes/class-wp-job-manager-shortcodes.php:392
1603
  #: includes/widgets/class-wp-job-manager-widget-featured-jobs.php:36
1604
  #: includes/widgets/class-wp-job-manager-widget-featured-jobs.php:52
1605
  #: includes/widgets/class-wp-job-manager-widget-recent-jobs.php:36
1606
  msgid "Title"
1607
  msgstr ""
1608
 
1609
- #: includes/class-wp-job-manager-shortcodes.php:394
1610
  msgid "Date Posted"
1611
  msgstr ""
1612
 
1613
- #: includes/class-wp-job-manager-shortcodes.php:395
1614
  msgid "Listing Expires"
1615
  msgstr ""
1616
 
1617
- #: includes/class-wp-job-manager-shortcodes.php:447
1618
  msgid "Mark not filled"
1619
  msgstr ""
1620
 
1621
- #: includes/class-wp-job-manager-shortcodes.php:452
1622
  msgid "Mark filled"
1623
  msgstr ""
1624
 
1625
- #: includes/class-wp-job-manager-shortcodes.php:458
1626
  msgid "Duplicate"
1627
  msgstr ""
1628
 
1629
- #: includes/class-wp-job-manager-shortcodes.php:465
1630
  msgid "Relist"
1631
  msgstr ""
1632
 
1633
- #: includes/class-wp-job-manager-shortcodes.php:482
1634
  msgid "Continue Submission"
1635
  msgstr ""
1636
 
1637
- #: includes/class-wp-job-manager-shortcodes.php:688
1638
- #: includes/class-wp-job-manager-shortcodes.php:727
1639
  msgid "Load more listings"
1640
  msgstr ""
1641
 
@@ -1776,7 +1780,7 @@ msgid "Submit Details"
1776
  msgstr ""
1777
 
1778
  #: includes/forms/class-wp-job-manager-form-submit-job.php:93
1779
- #: includes/forms/class-wp-job-manager-form-submit-job.php:667
1780
  #: templates/job-preview.php:30
1781
  msgid "Preview"
1782
  msgstr ""
@@ -1867,49 +1871,49 @@ msgstr ""
1867
  msgid "Invalid attachment provided."
1868
  msgstr ""
1869
 
1870
- #: includes/forms/class-wp-job-manager-form-submit-job.php:531
1871
  msgid "Please enter a valid application email address"
1872
  msgstr ""
1873
 
1874
- #: includes/forms/class-wp-job-manager-form-submit-job.php:536
1875
  msgid "Please enter a valid application URL"
1876
  msgstr ""
1877
 
1878
- #: includes/forms/class-wp-job-manager-form-submit-job.php:542
1879
  msgid "Please enter a valid application email address or URL"
1880
  msgstr ""
1881
 
1882
- #: includes/forms/class-wp-job-manager-form-submit-job.php:726
1883
  msgid "Please enter a username."
1884
  msgstr ""
1885
 
1886
- #: includes/forms/class-wp-job-manager-form-submit-job.php:730
1887
  msgid "Please enter a password."
1888
  msgstr ""
1889
 
1890
- #: includes/forms/class-wp-job-manager-form-submit-job.php:734
1891
  msgid "Please enter your email address."
1892
  msgstr ""
1893
 
1894
- #: includes/forms/class-wp-job-manager-form-submit-job.php:740
1895
  msgid "Passwords must match."
1896
  msgstr ""
1897
 
1898
  #. translators: Placeholder %s is the password hint.
1899
- #: includes/forms/class-wp-job-manager-form-submit-job.php:746
1900
  msgid "Invalid Password: %s"
1901
  msgstr ""
1902
 
1903
- #: includes/forms/class-wp-job-manager-form-submit-job.php:748
1904
  msgid "Password is not valid."
1905
  msgstr ""
1906
 
1907
- #: includes/forms/class-wp-job-manager-form-submit-job.php:780
1908
  msgid "You must be signed in to post a new listing."
1909
  msgstr ""
1910
 
1911
  #. translators: placeholder is the URL to the job dashboard page.
1912
- #: includes/forms/class-wp-job-manager-form-submit-job.php:806
1913
  msgid "Draft was saved. Job listing drafts can be resumed from the <a href=\"%s\">job dashboard</a>."
1914
  msgstr ""
1915
 
@@ -1923,7 +1927,7 @@ msgid "Manage License"
1923
  msgstr ""
1924
 
1925
  #: includes/helper/class-wp-job-manager-helper.php:285
1926
- #: includes/helper/views/html-licences.php:75
1927
  #: tests/php/tests/includes/helper/test_class.wp-job-manager-helper.php:278
1928
  msgid "Activate License"
1929
  msgstr ""
@@ -1967,31 +1971,31 @@ msgstr ""
1967
  msgid "<a href=\"%1$s\">Please enter your license key</a> to get updates for \"%2$s\"."
1968
  msgstr ""
1969
 
1970
- #: includes/helper/views/html-licences.php:56
1971
- #: includes/helper/views/html-licences.php:69
1972
  msgid "License"
1973
  msgstr ""
1974
 
1975
- #: includes/helper/views/html-licences.php:59
1976
- #: includes/helper/views/html-licences.php:72
1977
  msgid "Email"
1978
  msgstr ""
1979
 
1980
- #: includes/helper/views/html-licences.php:60
1981
- #: includes/helper/views/html-licences.php:73
1982
  msgid "Email address"
1983
  msgstr ""
1984
 
1985
- #: includes/helper/views/html-licences.php:63
1986
  msgid "Deactivate License"
1987
  msgstr ""
1988
 
1989
  #. translators: Placeholder %s is the lost license key URL.
1990
- #: includes/helper/views/html-licences.php:84
1991
  msgid "Lost your license key? <a href=\"%s\">Retrieve it here</a>."
1992
  msgstr ""
1993
 
1994
- #: includes/helper/views/html-licences.php:86
1995
  msgid "No plugins are activated that have licenses managed by WP Job Manager."
1996
  msgstr ""
1997
 
2
  # This file is distributed under the GPL2+.
3
  msgid ""
4
  msgstr ""
5
+ "Project-Id-Version: WP Job Manager 1.38.1\n"
6
  "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/wp-job-manager/\n"
7
  "Last-Translator: \n"
8
  "Language-Team: \n"
9
  "MIME-Version: 1.0\n"
10
  "Content-Type: text/plain; charset=UTF-8\n"
11
  "Content-Transfer-Encoding: 8bit\n"
12
+ "POT-Creation-Date: 2022-10-25T15:40:11+00:00\n"
13
  "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
14
+ "X-Generator: WP-CLI 2.7.1\n"
15
  "X-Domain: wp-job-manager\n"
16
 
17
  #. Plugin Name of the plugin
32
  msgid "Automattic"
33
  msgstr ""
34
 
35
+ #: includes/3rd-party/wpcom.php:89
36
+ msgid "The license for this add-on is automatically managed by WordPress.com."
37
+ msgstr ""
38
+
39
  #: includes/3rd-party/wpml.php:94
40
  msgid "Page Not Set"
41
  msgstr ""
281
  msgstr ""
282
 
283
  #: includes/admin/class-wp-job-manager-cpt.php:507
284
+ #: includes/class-wp-job-manager-shortcodes.php:395
285
  msgid "Filled?"
286
  msgstr ""
287
 
321
  #. translators: Placeholder %s is the singular label of the job listing post type.
322
  #: includes/admin/class-wp-job-manager-cpt.php:652
323
  #: includes/class-wp-job-manager-post-types.php:340
324
+ #: includes/class-wp-job-manager-shortcodes.php:443
325
+ #: includes/class-wp-job-manager-shortcodes.php:476
326
  msgid "Edit"
327
  msgstr ""
328
 
329
  #: includes/admin/class-wp-job-manager-cpt.php:659
330
+ #: includes/class-wp-job-manager-shortcodes.php:491
331
  msgid "Delete"
332
  msgstr ""
333
 
1570
  msgid "Add a salary period unit, this field is optional. Leave it empty to use the default salary unit, if one is defined."
1571
  msgstr ""
1572
 
1573
+ #: includes/class-wp-job-manager-shortcodes.php:203
1574
  msgid "Invalid ID"
1575
  msgstr ""
1576
 
1577
+ #: includes/class-wp-job-manager-shortcodes.php:210
1578
  msgid "This position has already been filled"
1579
  msgstr ""
1580
 
1581
  #. translators: Placeholder %s is the job listing title.
1582
+ #: includes/class-wp-job-manager-shortcodes.php:218
1583
  msgid "%s has been filled"
1584
  msgstr ""
1585
 
1586
+ #: includes/class-wp-job-manager-shortcodes.php:223
1587
  msgid "This position is not filled"
1588
  msgstr ""
1589
 
1590
  #. translators: Placeholder %s is the job listing title.
1591
+ #: includes/class-wp-job-manager-shortcodes.php:231
1592
  msgid "%s has been marked as not filled"
1593
  msgstr ""
1594
 
1595
  #. translators: Placeholder %s is the job listing title.
1596
+ #: includes/class-wp-job-manager-shortcodes.php:239
1597
  msgid "%s has been deleted"
1598
  msgstr ""
1599
 
1600
+ #: includes/class-wp-job-manager-shortcodes.php:244
1601
+ #: includes/class-wp-job-manager-shortcodes.php:258
1602
  msgid "Missing submission page."
1603
  msgstr ""
1604
 
1605
  #. translators: Placeholder %s is the plural label for the job listing post type.
1606
+ #: includes/class-wp-job-manager-shortcodes.php:394
1607
  #: includes/widgets/class-wp-job-manager-widget-featured-jobs.php:36
1608
  #: includes/widgets/class-wp-job-manager-widget-featured-jobs.php:52
1609
  #: includes/widgets/class-wp-job-manager-widget-recent-jobs.php:36
1610
  msgid "Title"
1611
  msgstr ""
1612
 
1613
+ #: includes/class-wp-job-manager-shortcodes.php:396
1614
  msgid "Date Posted"
1615
  msgstr ""
1616
 
1617
+ #: includes/class-wp-job-manager-shortcodes.php:397
1618
  msgid "Listing Expires"
1619
  msgstr ""
1620
 
1621
+ #: includes/class-wp-job-manager-shortcodes.php:449
1622
  msgid "Mark not filled"
1623
  msgstr ""
1624
 
1625
+ #: includes/class-wp-job-manager-shortcodes.php:454
1626
  msgid "Mark filled"
1627
  msgstr ""
1628
 
1629
+ #: includes/class-wp-job-manager-shortcodes.php:460
1630
  msgid "Duplicate"
1631
  msgstr ""
1632
 
1633
+ #: includes/class-wp-job-manager-shortcodes.php:467
1634
  msgid "Relist"
1635
  msgstr ""
1636
 
1637
+ #: includes/class-wp-job-manager-shortcodes.php:484
1638
  msgid "Continue Submission"
1639
  msgstr ""
1640
 
1641
+ #: includes/class-wp-job-manager-shortcodes.php:690
1642
+ #: includes/class-wp-job-manager-shortcodes.php:729
1643
  msgid "Load more listings"
1644
  msgstr ""
1645
 
1780
  msgstr ""
1781
 
1782
  #: includes/forms/class-wp-job-manager-form-submit-job.php:93
1783
+ #: includes/forms/class-wp-job-manager-form-submit-job.php:670
1784
  #: templates/job-preview.php:30
1785
  msgid "Preview"
1786
  msgstr ""
1871
  msgid "Invalid attachment provided."
1872
  msgstr ""
1873
 
1874
+ #: includes/forms/class-wp-job-manager-form-submit-job.php:533
1875
  msgid "Please enter a valid application email address"
1876
  msgstr ""
1877
 
1878
+ #: includes/forms/class-wp-job-manager-form-submit-job.php:538
1879
  msgid "Please enter a valid application URL"
1880
  msgstr ""
1881
 
1882
+ #: includes/forms/class-wp-job-manager-form-submit-job.php:544
1883
  msgid "Please enter a valid application email address or URL"
1884
  msgstr ""
1885
 
1886
+ #: includes/forms/class-wp-job-manager-form-submit-job.php:729
1887
  msgid "Please enter a username."
1888
  msgstr ""
1889
 
1890
+ #: includes/forms/class-wp-job-manager-form-submit-job.php:733
1891
  msgid "Please enter a password."
1892
  msgstr ""
1893
 
1894
+ #: includes/forms/class-wp-job-manager-form-submit-job.php:737
1895
  msgid "Please enter your email address."
1896
  msgstr ""
1897
 
1898
+ #: includes/forms/class-wp-job-manager-form-submit-job.php:743
1899
  msgid "Passwords must match."
1900
  msgstr ""
1901
 
1902
  #. translators: Placeholder %s is the password hint.
1903
+ #: includes/forms/class-wp-job-manager-form-submit-job.php:749
1904
  msgid "Invalid Password: %s"
1905
  msgstr ""
1906
 
1907
+ #: includes/forms/class-wp-job-manager-form-submit-job.php:751
1908
  msgid "Password is not valid."
1909
  msgstr ""
1910
 
1911
+ #: includes/forms/class-wp-job-manager-form-submit-job.php:783
1912
  msgid "You must be signed in to post a new listing."
1913
  msgstr ""
1914
 
1915
  #. translators: placeholder is the URL to the job dashboard page.
1916
+ #: includes/forms/class-wp-job-manager-form-submit-job.php:809
1917
  msgid "Draft was saved. Job listing drafts can be resumed from the <a href=\"%s\">job dashboard</a>."
1918
  msgstr ""
1919
 
1927
  msgstr ""
1928
 
1929
  #: includes/helper/class-wp-job-manager-helper.php:285
1930
+ #: includes/helper/views/html-licences.php:76
1931
  #: tests/php/tests/includes/helper/test_class.wp-job-manager-helper.php:278
1932
  msgid "Activate License"
1933
  msgstr ""
1971
  msgid "<a href=\"%1$s\">Please enter your license key</a> to get updates for \"%2$s\"."
1972
  msgstr ""
1973
 
1974
+ #: includes/helper/views/html-licences.php:57
1975
+ #: includes/helper/views/html-licences.php:70
1976
  msgid "License"
1977
  msgstr ""
1978
 
1979
+ #: includes/helper/views/html-licences.php:60
1980
+ #: includes/helper/views/html-licences.php:73
1981
  msgid "Email"
1982
  msgstr ""
1983
 
1984
+ #: includes/helper/views/html-licences.php:61
1985
+ #: includes/helper/views/html-licences.php:74
1986
  msgid "Email address"
1987
  msgstr ""
1988
 
1989
+ #: includes/helper/views/html-licences.php:64
1990
  msgid "Deactivate License"
1991
  msgstr ""
1992
 
1993
  #. translators: Placeholder %s is the lost license key URL.
1994
+ #: includes/helper/views/html-licences.php:89
1995
  msgid "Lost your license key? <a href=\"%s\">Retrieve it here</a>."
1996
  msgstr ""
1997
 
1998
+ #: includes/helper/views/html-licences.php:91
1999
  msgid "No plugins are activated that have licenses managed by WP Job Manager."
2000
  msgstr ""
2001
 
readme.txt CHANGED
@@ -4,7 +4,7 @@ Tags: job manager, job listing, job board, job management, job lists, job list,
4
  Requires at least: 5.8
5
  Tested up to: 6.0
6
  Requires PHP: 7.2
7
- Stable tag: 1.38.0
8
  License: GPLv3
9
  License URI: http://www.gnu.org/licenses/gpl-3.0.html
10
 
@@ -153,6 +153,12 @@ It then creates a database based on the parameters passed to it.
153
 
154
  == Changelog ==
155
 
 
 
 
 
 
 
156
  = 1.38.0 =
157
  * Enhancement: Add remote position to filtering (@tripflex)
158
  * Enhancement: Add setting to enable/disable remote position field (@tripflex)
4
  Requires at least: 5.8
5
  Tested up to: 6.0
6
  Requires PHP: 7.2
7
+ Stable tag: 1.38.1
8
  License: GPLv3
9
  License URI: http://www.gnu.org/licenses/gpl-3.0.html
10
 
153
 
154
  == Changelog ==
155
 
156
+ = 1.38.1 =
157
+ * Enhancement: Added support for WordPress.com marketplace
158
+ * Change: Only perform application field validation when required or not empty (@tripflex)
159
+ * Fix: Deprecated error in `the_company_twitter()` (@MPolleke)
160
+ * Fix: Using WP Job Manager functions before they're fully loaded.
161
+
162
  = 1.38.0 =
163
  * Enhancement: Add remote position to filtering (@tripflex)
164
  * Enhancement: Add setting to enable/disable remote position field (@tripflex)
wp-job-manager-template.php CHANGED
@@ -1134,7 +1134,7 @@ function get_the_company_tagline( $post = null ) {
1134
  function the_company_twitter( $before = '', $after = '', $echo = true, $post = null ) {
1135
  $company_twitter = get_the_company_twitter( $post );
1136
 
1137
- if ( 0 === strlen( $company_twitter ) ) {
1138
  return null;
1139
  }
1140
 
@@ -1162,7 +1162,7 @@ function get_the_company_twitter( $post = null ) {
1162
 
1163
  $company_twitter = $post->_company_twitter;
1164
 
1165
- if ( 0 === strlen( $company_twitter ) ) {
1166
  return null;
1167
  }
1168
 
1134
  function the_company_twitter( $before = '', $after = '', $echo = true, $post = null ) {
1135
  $company_twitter = get_the_company_twitter( $post );
1136
 
1137
+ if ( empty( $company_twitter ) ) {
1138
  return null;
1139
  }
1140
 
1162
 
1163
  $company_twitter = $post->_company_twitter;
1164
 
1165
+ if ( empty( $company_twitter ) ) {
1166
  return null;
1167
  }
1168
 
wp-job-manager.php CHANGED
@@ -3,11 +3,11 @@
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.38.0
7
  * Author: Automattic
8
  * Author URI: https://wpjobmanager.com/
9
  * Requires at least: 5.8
10
- * Tested up to: 6.0
11
  * Requires PHP: 7.2
12
  * Text Domain: wp-job-manager
13
  * Domain Path: /languages/
@@ -21,7 +21,7 @@ if ( ! defined( 'ABSPATH' ) ) {
21
  }
22
 
23
  // Define constants.
24
- define( 'JOB_MANAGER_VERSION', '1.38.0' );
25
  define( 'JOB_MANAGER_PLUGIN_DIR', untrailingslashit( plugin_dir_path( __FILE__ ) ) );
26
  define( 'JOB_MANAGER_PLUGIN_URL', untrailingslashit( plugins_url( basename( plugin_dir_path( __FILE__ ) ), basename( __FILE__ ) ) ) );
27
  define( 'JOB_MANAGER_PLUGIN_BASENAME', plugin_basename( __FILE__ ) );
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.38.1
7
  * Author: Automattic
8
  * Author URI: https://wpjobmanager.com/
9
  * Requires at least: 5.8
10
+ * Tested up to: 6.1
11
  * Requires PHP: 7.2
12
  * Text Domain: wp-job-manager
13
  * Domain Path: /languages/
21
  }
22
 
23
  // Define constants.
24
+ define( 'JOB_MANAGER_VERSION', '1.38.1' );
25
  define( 'JOB_MANAGER_PLUGIN_DIR', untrailingslashit( plugin_dir_path( __FILE__ ) ) );
26
  define( 'JOB_MANAGER_PLUGIN_URL', untrailingslashit( plugins_url( basename( plugin_dir_path( __FILE__ ) ), basename( __FILE__ ) ) ) );
27
  define( 'JOB_MANAGER_PLUGIN_BASENAME', plugin_basename( __FILE__ ) );