HEX
Server: Apache
System: Linux vps.rockyroadprinting.net 4.18.0 #1 SMP Mon Sep 30 15:36:27 MSK 2024 x86_64
User: rockyroadprintin (1011)
PHP: 8.2.29
Disabled: exec,passthru,shell_exec,system
Upload Files
File: /home/rockyroadprintin/public_html/wp-content/themes/consulting/inc/stock-indexes/stock-indexes.php
<?php

//Json stocks index symbols
function consulting_get_stocks_indexes_symbols() {

    $transient_name = 'consulting_get_stocks_indexes_symbols';
    $json = get_transient($transient_name);
    if (false === $json) {
        $path = get_template_directory() . '/inc/stock-indexes/stock-indexes.json';
        $json = json_decode(consulting_get_local_file_contents($path), true);
        set_transient($transient_name, $json);
    }

    return $json;
}

//Yahoo API symbols settings
function consulting_currencies_stocks_api($indexes) {
    return apply_filters('consulting_currencies_stocks_api', array(), $indexes);
}

//Send to ajax
function stm_get_prices() {
    check_ajax_referer('stm_get_prices', 'security');
    $r = array();
    $indexes = (!empty($_GET['indexes'])) ? sanitize_text_field($_GET['indexes']) : '';
    if(!empty($indexes)) {
        $indexes = explode(', ', $indexes);
        $r = consulting_currencies_stocks_api($indexes);
    }
    wp_send_json($r);
}

add_action( 'wp_ajax_stm_get_prices', 'stm_get_prices' );
add_action( 'wp_ajax_nopriv_stm_get_prices', 'stm_get_prices' );

//Yahoo API symbols and dates settings
function consulting_currencies($indexes, $range='1d', $interval='1h', $fill_color, $point_color){

    $result = array();
    $result = consulting_generate_result(apply_filters('consulting_currencies', $result, $indexes, $range, $interval, $fill_color, $point_color));

    return ($result);
}

function consulting_generate_result($result) {

    $response = array();


    foreach($result as $item => $value) {

        $close_prices = $result[$item]['indicators']['quote'][0]['close'];
        $timestamps = $result[$item]['timestamp'];
        $fill_color = $result[$item]['fill_color'];
        $point_color = $result[$item]['point_color'];
        $labels = array();
        foreach ($timestamps as $timestamp) {
            $labels[] = date_i18n('D h:i', $timestamp);
        }
        $key = $value['meta']['symbol'];
        $response['indexes'][] = [
            'label' => $key,
            'data' => $close_prices,
            'backgroundColor' => $fill_color,
            'borderColor' => $point_color,
            'pointRadius' => 0,
            'borderWidth' => 1,
        ];

        $response['labels'] = $labels;
    }

    return $response;
}

//Send history to ajax
function stm_get_history() {
    check_ajax_referer('stm_get_history', 'security');
    $r = array();
    $indexes = (!empty($_GET['indexes'])) ? sanitize_text_field($_GET['indexes']) : '';
    $range = (!empty($_GET['range'])) ? sanitize_text_field($_GET['range']) : '1d';
    $interval = (!empty($_GET['interval'])) ? sanitize_text_field($_GET['interval']) : '1h';
    $fill_color = (!empty($_GET['fill_color'])) ? sanitize_text_field($_GET['fill_color']) : '';
    $point_color = (!empty($_GET['point_color'])) ? sanitize_text_field($_GET['point_color']) : '';
    if(!empty($indexes)) {
        $indexes = explode(', ', $indexes);
        $fill_color = explode(', ', $fill_color);
        $point_color = explode(', ', $point_color);
        $r = consulting_currencies($indexes, $range, $interval, $fill_color, $point_color);
    }

    wp_send_json($r);
}

add_action( 'wp_ajax_stm_get_history', 'stm_get_history' );
add_action( 'wp_ajax_nopriv_stm_get_history', 'stm_get_history' );