You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
100 lines
3.3 KiB
PHP
100 lines
3.3 KiB
PHP
<?php
|
|
if ( ! defined( 'ABSPATH' ) ) {
|
|
exit;
|
|
}
|
|
|
|
class AWSM_Job_Openings_Third_Party {
|
|
private static $instance = null;
|
|
|
|
public function __construct() {
|
|
$this->cpath = untrailingslashit( plugin_dir_path( __FILE__ ) );
|
|
|
|
$this->multilingual_support();
|
|
|
|
$this->akismet_support();
|
|
}
|
|
|
|
public static function init() {
|
|
if ( is_null( self::$instance ) ) {
|
|
self::$instance = new self();
|
|
}
|
|
return self::$instance;
|
|
}
|
|
|
|
public function multilingual_support() {
|
|
// WPML and Polylang support.
|
|
if ( defined( 'ICL_SITEPRESS_VERSION' ) || defined( 'POLYLANG_VERSION' ) ) {
|
|
require_once $this->cpath . '/translation/class-awsm-job-openings-wpml.php';
|
|
}
|
|
}
|
|
|
|
public function akismet_support() {
|
|
$is_active = awsm_jobs_is_akismet_active();
|
|
if ( $is_active ) {
|
|
$protection_enabled = get_option( 'awsm_jobs_enable_akismet_protection' );
|
|
if ( $protection_enabled === 'enable' ) {
|
|
add_action( 'awsm_job_application_submitting', array( $this, 'application_submitting_handler' ), 100 );
|
|
}
|
|
}
|
|
}
|
|
|
|
public function application_submitting_handler() {
|
|
global $awsm_response;
|
|
// phpcs:disable WordPress.Security.NonceVerification.Missing
|
|
if ( count( $awsm_response['error'] ) === 0 && is_callable( array( 'Akismet', 'http_post' ) ) ) {
|
|
$applicant_name = sanitize_text_field( wp_unslash( $_POST['awsm_applicant_name'] ) );
|
|
$applicant_email = sanitize_email( wp_unslash( $_POST['awsm_applicant_email'] ) );
|
|
$params = array(
|
|
'blog' => get_option( 'home' ),
|
|
'blog_lang' => get_locale(),
|
|
'blog_charset' => get_option( 'blog_charset' ),
|
|
'user_ip' => $_SERVER['REMOTE_ADDR'],
|
|
'user_agent' => $_SERVER['HTTP_USER_AGENT'],
|
|
'referrer' => $_SERVER['HTTP_REFERER'],
|
|
'comment_type' => 'application-form',
|
|
'comment_author' => $applicant_name,
|
|
'comment_author_email' => $applicant_email,
|
|
);
|
|
|
|
$content = '';
|
|
$ignore_fields = array( 'awsm_applicant_name', 'awsm_applicant_email', 'awsm_job_id', 'awsm_form_privacy_policy' );
|
|
foreach ( $_POST as $field_key => $field_val ) {
|
|
if ( ! in_array( $field_key, $ignore_fields, true ) && strpos( $field_key, 'awsm_' ) !== false ) {
|
|
if ( is_array( $field_val ) ) {
|
|
$field_val = implode( ', ', awsm_jobs_array_flatten( $field_val ) );
|
|
}
|
|
$content .= "\n" . $field_val;
|
|
}
|
|
}
|
|
$params['comment_content'] = $content;
|
|
|
|
/**
|
|
* Filters the Akismet API query parameters.
|
|
*
|
|
* @since 3.2.0
|
|
*
|
|
* @param array $params Query parameters.
|
|
*/
|
|
$params = apply_filters( 'awsm_jobs_akismet_query_params', $params );
|
|
$query_string = Akismet::build_query( $params );
|
|
$response = Akismet::http_post( $query_string, 'comment-check' );
|
|
|
|
// Spam job application.
|
|
if ( $response[1] === 'true' ) {
|
|
/**
|
|
* Filters the error message when Akismet marks the application as spam.
|
|
*
|
|
* @since 3.2.0
|
|
*
|
|
* @param string $err_msg Error message
|
|
*/
|
|
$err_msg = apply_filters( 'awsm_jobs_akismet_response_error', esc_html__( 'Error in submitting your application. Please refresh the page and retry.', 'wp-job-openings' ) );
|
|
$awsm_response['error'][] = $err_msg;
|
|
}
|
|
}
|
|
// phpcs:enable
|
|
}
|
|
}
|
|
|
|
AWSM_Job_Openings_Third_Party::init();
|