cpath = untrailingslashit( plugin_dir_path( __FILE__ ) ); add_action( 'add_meta_boxes', array( $this, 'awsm_register_meta_boxes' ) ); add_action( 'admin_menu', array( $this, 'remove_meta_boxes' ) ); if ( isset( $_GET['awsm_action'] ) ) { if ( $_GET['awsm_action'] === 'download_resume' ) { add_action( 'plugins_loaded', array( $this, 'download_resume_handle' ) ); } elseif ( $_GET['awsm_action'] === 'download_file' ) { add_action( 'plugins_loaded', array( $this, 'download_file_handle' ) ); } } } public static function init() { if ( is_null( self::$instance ) ) { self::$instance = new self(); } return self::$instance; } public function awsm_register_meta_boxes() { global $action; if ( $action === 'edit' ) { add_meta_box( 'awsm-status-meta', esc_html__( 'Job Status', 'wp-job-openings' ), array( $this, 'awsm_job_status' ), 'awsm_job_openings', 'side', 'low' ); add_meta_box( 'awsm-status-meta-applicant', esc_html__( 'Job Details', 'wp-job-openings' ), array( $this, 'awsm_job_status' ), 'awsm_job_application', 'side', 'low' ); } $awsm_filters = get_option( 'awsm_jobs_filter' ); if ( ! empty( $awsm_filters ) ) { add_meta_box( 'awsm-job-meta', esc_html__( 'Job Specifications', 'wp-job-openings' ), array( $this, 'awsm_job_handle' ), 'awsm_job_openings', 'normal', 'high' ); } add_meta_box( 'awsm-expiry-meta', esc_html__( 'Job Expiry', 'wp-job-openings' ), array( $this, 'awsm_job_expiration' ), 'awsm_job_openings', 'side', 'low' ); add_meta_box( 'awsm-job-details-meta', esc_html__( 'Applicant Details', 'wp-job-openings' ), array( $this, 'awsm_job_application_handle' ), 'awsm_job_application', 'normal', 'high' ); if ( ! class_exists( 'AWSM_Job_Openings_Pro_Pack' ) ) { add_meta_box( 'awsm-application-actions-meta', esc_html__( 'Actions', 'wp-job-openings' ), array( $this, 'application_actions_meta_handler' ), 'awsm_job_application', 'side', 'high' ); add_meta_box( 'awsm-get-the-pro-pack-meta', esc_html__( 'Upgrade to WPJO Pro', 'wp-job-openings' ), array( $this, 'get_pro_meta_handler' ), 'awsm_job_application', 'side', 'low' ); } } public function awsm_job_status( $post ) { include $this->cpath . '/templates/meta/job-status.php'; } public function awsm_job_handle( $post ) { include $this->cpath . '/templates/meta/job-specifications.php'; } public function awsm_job_expiration( $post ) { include $this->cpath . '/templates/meta/job-expiry.php'; } public function awsm_job_application_handle( $post ) { include $this->cpath . '/templates/meta/applicant-single.php'; } public function application_actions_meta_handler( $post ) { include $this->cpath . '/templates/meta/application-actions.php'; } public function get_pro_meta_handler() { include $this->cpath . '/templates/meta/get-pro.php'; } public function remove_meta_boxes() { remove_meta_box( 'slugdiv', 'awsm_job_application', 'normal' ); remove_meta_box( 'submitdiv', 'awsm_job_application', 'side' ); } public function get_applicant_meta_details_list( $post_id, $preset_values = array() ) { $list = ''; $applicant_meta = apply_filters( 'awsm_jobs_applicant_meta', array( 'awsm_applicant_name' => array( 'label' => __( 'Name', 'wp-job-openings' ), ), 'awsm_applicant_phone' => array( 'label' => __( 'Phone', 'wp-job-openings' ), ), 'awsm_applicant_email' => array( 'label' => __( 'Email', 'wp-job-openings' ), ), 'awsm_applicant_letter' => array( 'label' => __( 'Cover Letter', 'wp-job-openings' ), 'multi-line' => true, ), ), $post_id ); if ( ! empty( $applicant_meta ) && is_array( $applicant_meta ) ) { foreach ( $applicant_meta as $meta_key => $meta_options ) { $visible = ( isset( $meta_options['visible'] ) ) ? $meta_options['visible'] : true; $multi_line = ( isset( $meta_options['multi-line'] ) ) ? $meta_options['multi-line'] : false; if ( $visible ) { $label = ( isset( $meta_options['label'] ) ) ? $meta_options['label'] : ''; $value = ''; if ( ! empty( $preset_values ) && isset( $preset_values[ $meta_key ] ) ) { $value = $preset_values[ $meta_key ]; } elseif ( ! empty( $meta_options ) && isset( $meta_options['value'] ) ) { $value = $meta_options['value']; } else { $value = get_post_meta( $post_id, $meta_key, true ); } $meta_content = ''; if ( isset( $meta_options['type'] ) && ! empty( $value ) ) { if ( $meta_options['type'] === 'file' ) { $meta_content = sprintf( '%1$s', esc_html__( 'Download File', 'wp-job-openings' ), $this->get_attached_file_download_url( $value, 'file', $label ) ); } elseif ( $meta_options['type'] === 'url' ) { $meta_content = sprintf( '%s', esc_url( $value ), esc_html( $value ) ); } } else { $meta_content = ( empty( $multi_line ) ) ? esc_html( $value ) : wp_kses( wpautop( $value ), array( 'p' => array(), 'br' => array(), ) ); } /** * Filters the applicant meta content. * * @since 2.2.1 * * @param string $meta_content Applicant meta content. * @param string $meta_key The meta key. * @param array $applicant_meta Applicant meta array. * @param int $post_id The Applicant ID. */ $meta_content = apply_filters( 'awsm_jobs_applicant_meta_content', $meta_content, $meta_key, $applicant_meta, $post_id ); if ( ! empty( $meta_content ) || is_numeric( $meta_content ) ) { $is_meta_group = ( isset( $meta_options['group'] ) ) ? $meta_options['group'] : false; $meta_content = ( ! $is_meta_group ) ? '' . $meta_content . '' : $meta_content; $list .= sprintf( '