Jake Vanderwerf
2026-05-11 ac444cba221832c012c0435fdc8339fe9f37febb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
<?php
 
if (!defined('ABSPATH')) {
    exit;
}
 
require(JVB_DIR . '/inc/helpers/breadcrumbs.php');
//require(JVB_DIR . '/inc/helpers/cache.php');
require(JVB_DIR . '/inc/helpers/commonPages.php');
require(JVB_DIR . '/inc/helpers/crud.php');
require(JVB_DIR . '/inc/helpers/dashboard.php');
require(JVB_DIR . '/inc/helpers/directory.php');
//require(JVB_DIR . '/inc/helpers/email.php');
require(JVB_DIR . '/inc/helpers/forms.php');
require(JVB_DIR . '/inc/helpers/formatting.php');
//require(JVB_DIR . '/inc/helpers/icons.php');
require(JVB_DIR . '/inc/helpers/inlineStyles.php');
require(JVB_DIR . '/inc/helpers/legacy.php');
require(JVB_DIR . '/inc/helpers/media.php');
require(JVB_DIR . '/inc/helpers/members.php');
require(JVB_DIR . '/inc/helpers/renderFields.php');
//require(JVB_DIR . '/inc/helpers/saveFields.php');
require(JVB_DIR . '/inc/helpers/terms.php');
require(JVB_DIR . '/inc/helpers/time.php');
require(JVB_DIR . '/inc/helpers/ui.php');
//require(JVB_DIR . '/inc/helpers/umami.php');
 
add_action('wp_loaded', 'jvb_do_once',99);
/**
 * Helper to do things once
 * @return void
 */
function jvb_do_once():void
{
 
//    delete_option(BASE.'do_these_once');
    $options = get_option(BASE.'do_these_once', []);
    foreach ($options as $option => $callback) {
//        delete_option($option);
        if (!get_option($option, false)) {
            error_log('Calling do once: '.$option);
            if (get_transient(BASE . $option)) {
                return;
            }
            set_transient(BASE . $option, true, 120);
            $callback();
            update_option($option, true);
        }
    }
}
 
function jvb_register_do_once(string $option, array|string $callback):void
{
//    delete_option(BASE.'do_these_once');
    //Ensure we have the option starting with BASE
    $option = jvbCheckBase($option);
    $options = get_option(BASE.'do_these_once', []);
//    delete_option($option);
    if (!array_key_exists($option, $options)) {// Prevent concurrent runs
        $options[$option] = $callback;
        update_option(BASE.'do_these_once', $options);
    }
}
 
 
function jvbResponse(bool $success, ?string $msg = null):array
{
    return [
        'success'   => $success,
        'message'   => is_null($msg) ? ($success ? 'Completed successfully' : 'Something went wrong') : $msg
    ];
}