Jake Vanderwerf
2026-05-11 ac444cba221832c012c0435fdc8339fe9f37febb
inc/helpers/all.php
@@ -10,7 +10,7 @@
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/email.php');
require(JVB_DIR . '/inc/helpers/forms.php');
require(JVB_DIR . '/inc/helpers/formatting.php');
//require(JVB_DIR . '/inc/helpers/icons.php');
@@ -19,40 +19,54 @@
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/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('init', 'jvb_do_once');
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 $callback)
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 = (str_starts_with($option, BASE)) ? $option : BASE.$option;
    $option = jvbCheckBase($option);
    $options = get_option(BASE.'do_these_once', []);
//    delete_option($option);
    if (!array_key_exists($option, $options)) {
    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
   ];
}