/home/bdqbpbxa/demo-subdomains/lafinteca.goodface.com.ua/wp-content/themes/lafinteca/functions.php
<?php
// Require settings and helpers

$theme_uri_arr = explode('/', get_template_directory_uri());
$theme_folder_name = end($theme_uri_arr);
$theme_root_path = get_theme_root() . '/' . $theme_folder_name;

require $theme_root_path . '/functions/settings/acf-settings.php';
require $theme_root_path . '/functions/settings/cf7-settings.php';
require $theme_root_path . '/functions/settings/wp-output-html-settings.php';
require $theme_root_path . '/functions/settings/wysiwyg-editor-settings.php';

if (function_exists('pll_current_language')) {
    require $theme_root_path . '/functions/settings/polylang-og-settings.php';
}

require $theme_root_path . '/functions/helpers/helper-functions.php';
require $theme_root_path . '/functions/helpers/helper-shortcodes.php';


// Add custom styles to admin panel

function add_custom_admin_styles()
{
    wp_enqueue_style('admin-panel-custom-styles', get_template_directory_uri() . '/assets-admin/css/admin-panel.css');
}

add_action('admin_enqueue_scripts', 'add_custom_admin_styles');


// Create option pages

if (function_exists('acf_add_options_page')) {
    acf_add_options_page(array(
        'page_title' => 'Global settings',
        'menu_title' => 'Global settings',
        'menu_slug' => 'theme-general-settings',
        'capability' => 'edit_posts',
        'redirect' => false
    ));

    acf_add_options_sub_page(array(
        'page_title' => 'English',
        'menu_title' => 'English',
        'menu_slug' => 'global-settings-en',
        'parent_slug' => 'theme-general-settings'
    ));

    acf_add_options_sub_page(array(
        'page_title' => 'Portuguese',
        'menu_title' => 'Portuguese',
        'menu_slug' => 'global-settings-pt',
        'parent_slug' => 'theme-general-settings'
    ));

    acf_add_options_sub_page(array(
        'page_title' => 'Spanish',
        'menu_title' => 'Spanish',
        'menu_slug' => 'global-settings-es',
        'parent_slug' => 'theme-general-settings'
    ));
}


// Include styles and scripts

function include_styles_and_scripts()
{
    wp_enqueue_style('swiper-bundle', get_template_directory_uri() . '/assets/css/lib/swiper-bundle.min.css', array(), '1.1.2');
    wp_enqueue_style('scroll-animations', get_template_directory_uri() . '/assets/css/lib/scroll-animations.css', array(), '1.1.2');
    wp_enqueue_style('ui-kit', get_template_directory_uri() . '/assets/css/ui-kit.css', array(), '1.1.2');
    wp_enqueue_style('ui-blocks', get_template_directory_uri() . '/assets/css/ui-blocks.css', array(), '1.1.2');
    wp_enqueue_style('hovers', get_template_directory_uri() . '/assets/css/hovers.css', array(), '1.1.2');
    wp_enqueue_style('form-elements', get_template_directory_uri() . '/assets/css/ui-kit/form-elements.css', array(), '1.1.2');
    wp_enqueue_style('editor', get_template_directory_uri() . '/assets/css/ui-kit/editor.css', array(), '1.1.2');

    wp_enqueue_style('styles', get_template_directory_uri() . '/assets/css/styles.css', array(), '1.1.2');
    wp_enqueue_style('adaptive', get_template_directory_uri() . '/assets/css/adaptive.css', array(), '1.1.2');

    wp_deregister_script('jquery');
    wp_enqueue_script('jquery', get_template_directory_uri() . '/assets/js/lib/jquery-3.7.1.min.js', array(), '1.1.2', true);
    wp_enqueue_script('swiper-bundle.min.js', get_template_directory_uri() . '/assets/js/lib/swiper-bundle.min.js', array(), '1.1.2', true);
    wp_enqueue_script('gsap.min.js', get_template_directory_uri() . '/assets/js/lib/gsap.min.js', array(), '1.1.2', true);
    wp_enqueue_script('ScrollTrigger.min.js', get_template_directory_uri() . '/assets/js/lib/ScrollTrigger.min.js', array(), '1.1.2', true);

    wp_enqueue_script('animations.js', get_template_directory_uri() . '/assets/js/animations.js', array(), '1.1.2', true);
    wp_enqueue_script('custom-solutions.js', get_template_directory_uri() . '/assets/js/custom-solutions.js', array(), '1.1.2', true);
    wp_enqueue_script('scripts.js', get_template_directory_uri() . '/assets/js/scripts.js', array(), '1.1.2', true);

//    wp_enqueue_script('backend-scripts', get_template_directory_uri() . '/assets-backend/backend-scripts.js', array(), '1.1.2', true);
}

add_action('wp_enqueue_scripts', 'include_styles_and_scripts');

function enqueue_ajax_scripts() {
    wp_enqueue_script(
        'backend-scripts',
        get_template_directory_uri() . '/assets-backend/backend-scripts.js',
        ['jquery'],
        '1.0.0',
        true
    );

    wp_localize_script('backend-scripts', 'ajax_object', [
        'ajax_url' => admin_url('admin-ajax.php'),
    ]);
}
add_action('wp_enqueue_scripts', 'enqueue_ajax_scripts');


// ajax filter
add_action('wp_ajax_blog_filter', 'blog_filter_function');
add_action('wp_ajax_nopriv_blog_filter', 'blog_filter_function');

function blog_filter_function()
{
    get_template_part('templates/post-ajax-loader');
    wp_die();
}

// disable yoast schema

function ajax_connect()
{
    wp_add_inline_script('scripts.js', 'const ajaxurl = "' . admin_url('admin-ajax.php') . '";');
}

add_action('wp_enqueue_scripts', 'ajax_connect');


function load_more_posts()
{
    $paged = isset($_POST['paged']) ? intval($_POST['paged']) : 1;
    $offset = isset($_POST['offset']) ? intval($_POST['offset']) : 0;

    $args = array(
        'post_type' => 'event',
        'posts_per_page' => 4,
        'paged' => $paged,
        'meta_query' => array(
            'relation' => 'AND',
            array(
                'key' => 'end_date',
                'value' => date('Y-m-d H:i:s'),
                'compare' => '<',
                'type' => 'DATETIME',
            ),
        ),
        'meta_key' => 'end_date',
        'orderby' => 'meta_value',
        'order' => 'DESC',
        'offset' => $offset,
    );

    $query = new WP_Query($args);

    if ($query->have_posts()) {
        while ($query->have_posts()) {
            $query->the_post();
            $start_date = get_field('start_date');
            $end_date = get_field('end_date');
            $place = get_field('place');
            $mainImg = get_field('image');
            ?>
            <div class="events-delayed-item">

                <div class="events-delayed-item-image">
                    <img src="<?php echo $mainImg; ?>" alt="<?php the_title(); ?>">
                </div>
                <div class="events-delayed-item-body">
                    <h3 class="title title-4 mob-title-4 --supply"><?php the_title(); ?></h3>
                    <div class="events-delayed-item-info">
                        <p class="date">
                            <?php

                            $start_date_timestamp = strtotime($start_date);
                            $end_date_timestamp = strtotime($end_date);

                            $locale = pll_current_language('locale');
                            setlocale(LC_TIME, $locale);

                            $start_day = date('j', $start_date_timestamp);
                            $start_month = date('M', $start_date_timestamp);

                            $end_day = date('j', $end_date_timestamp);
                            $end_month = date('M', $end_date_timestamp);

                            if ($start_month == $end_month) {
                                echo $start_day . '-' . $end_day . ' ' . $start_month . ', ' . date('Y', $end_date_timestamp);
                            } else {
                                echo $start_day . ' ' . $start_month . ' - ' . $end_day . ' ' . $end_month . ', ' . date('Y', $end_date_timestamp);
                            }
                            ?>
                        </p>
                        <p class="time"><?php echo $place; ?></p>
                    </div>
                </div>
            </div>
            <?php
        }
        wp_reset_postdata();
    } else {
        echo 'No more posts found';
    }

    wp_die();
}

add_action('wp_ajax_load_more_posts', 'load_more_posts');
add_action('wp_ajax_nopriv_load_more_posts', 'load_more_posts');





// $api_token = 'ddbe0a788fac7a405fb2';
// $company_id = '205147';


function handle_form_submission() {
    $log_file = WP_CONTENT_DIR . '/custom-debug.log';
    
    function custom_log($message, $log_file) {
        file_put_contents($log_file, date('Y-m-d H:i:s') . " - " . $message . "\n", FILE_APPEND);
    }

    if (isset($_POST['first-name'])) {
        $first_name = sanitize_text_field($_POST['first-name']);
        $last_name = sanitize_text_field($_POST['last-name']);
        $email = sanitize_email($_POST['email']);
        $phone = sanitize_text_field($_POST['tel']);
        $message = sanitize_textarea_field($_POST['message']);
        $cv = $_FILES['cv-file'];
        $job_position_id = sanitize_text_field($_POST['job_position_id']);

        custom_log("Form Data: " . print_r($_POST, true), $log_file);
        custom_log("File Data: " . print_r($cv, true), $log_file);

        $file_path = $cv['tmp_name'];
        $file_type = $cv['type'];
        $file_name = $cv['name'];

        $api_token = 'ddbe0a788fac7a405fb2';
        $company_id = '205147';

        // Завантаження файлу CV на Personio
        $post_data = [
            'file' => curl_file_create($file_path, $file_type, $file_name)
        ];
        $headers = [
            "Accept: application/json",
            "Content-Type: multipart/form-data",
            "X-Company-Id: $company_id",
            "Authorization: Bearer $api_token"
        ];

        $ch = curl_init('https://api.personio.de/v1/recruiting/applications/documents');
        curl_setopt($ch, CURLOPT_POST, 1);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
        curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        $upload_response = curl_exec($ch);
        $http_status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
        $curl_error = curl_error($ch);
        curl_close($ch);

        custom_log("cURL Response: " . print_r($upload_response, true), $log_file);
        custom_log("HTTP Status: " . $http_status, $log_file);
        custom_log("cURL Error: " . $curl_error, $log_file);

        $upload_body = json_decode($upload_response, true);
        custom_log('Upload Body: ' . print_r($upload_body, true), $log_file);

        if (isset($upload_body['errors'])) {
            custom_log('Error uploading CV: ' . print_r($upload_body['errors'], true), $log_file);
            wp_send_json_error('Error uploading CV: ' . (isset($upload_body['errors']) ? json_encode($upload_body['errors']) : 'Unknown error'));
        }

        if (!isset($upload_body['uuid'])) {
            custom_log('Error uploading CV: Document ID not returned.', $log_file);
            wp_send_json_error('Error uploading CV: Document ID not returned.');
        }

        $document_id = $upload_body['uuid'];

        // Створення заявки в Personio
        $application_data = [
            'job_position_id' => $job_position_id,
            'first_name' => $first_name,
            'last_name' => $last_name,
            'email' => $email,
            'message' => $message,
            'files' => [
                [
                    'uuid' => $document_id,
                    'original_filename' => $file_name,
                    'category' => 'cv'
                ]
            ],
            'attributes' => [
                [
                    'id' => 'phone', // Приклад користувацького атрибута
                    'value' => $phone
                ]
            ]
        ];

        custom_log('Application Data: ' . print_r($application_data, true), $log_file);

        $application_url = 'https://api.personio.de/v1/recruiting/applications';
        $application_response = wp_remote_post($application_url, [
            'headers' => [
                'Authorization' => 'Bearer ' . $api_token,
                'Content-Type' => 'application/json',
                'X-Company-Id' => $company_id,
                'Accept' => 'application/json'
            ],
            'body' => json_encode($application_data)
        ]);

        if (is_wp_error($application_response)) {
            custom_log('Error creating application: ' . $application_response->get_error_message(), $log_file);
            wp_send_json_error('Error creating application: ' . $application_response->get_error_message());
        }

        $application_body = json_decode(wp_remote_retrieve_body($application_response), true);

        custom_log('Application Response: ' . $application_body, $log_file);
        
        if (isset($application_body['errors'])) {
            custom_log('Error creating application: ' . print_r($application_body['errors'], true), $log_file);
            wp_send_json_error('Error creating application: ' . json_encode($application_body['errors']));
        }

        wp_send_json_error($application_body);
        if (!isset($application_body['data']['id'])) {
            custom_log('Error creating application: Application ID not returned.', $log_file);
            wp_send_json_error('Error creating application: Application ID not returned.');
        }

        wp_send_json_success('Application created successfully with ID: ' . $application_body['data']['id']);
    } else {
        wp_send_json_error('Required fields missing.');
    }
}
add_action('wp_ajax_nopriv_handle_form_submission', 'handle_form_submission');
add_action('wp_ajax_handle_form_submission', 'handle_form_submission');