Jake Vanderwerf
2026-08-30 a58a2e7ca4700d3e23341fde767060a4c2c704a3
jvb.php
@@ -27,7 +27,6 @@
use JVBase\managers\Login;
use JVBase\managers\MagicLinks;
use JVBase\managers\NotificationManager;
use JVBase\managers\Notifications\Notifications;
use JVBase\managers\queue\Queue;
use JVBase\managers\Referrals;
use JVBase\managers\Responses;
@@ -54,57 +53,57 @@
/**
 * Track REST API errors by wrapping request execution
 */
add_filter('rest_pre_dispatch', function($result, $server, $request) {
   // Store request details globally for error logging
   $GLOBALS['jvb_rest_request'] = [
      'route' => $request->get_route(),
      'method' => $request->get_method(),
      'params' => $request->get_params(),
      'time' => microtime(true),
   ];
   // Set up error handler for this request
   set_error_handler(function($errno, $errstr, $errfile, $errline) {
      if (!(error_reporting() & $errno)) {
         return false;
      }
      $context = array_merge($GLOBALS['jvb_rest_request'] ?? [], [
         'error_type' => $errno,
         'error_message' => $errstr,
         'file' => $errfile,
         'line' => $errline,
         'user_id' => get_current_user_id(),
      ]);
      error_log('JVB REST Error: ' . json_encode($context));
      return false; // Let PHP handle it normally too
   });
   return $result;
}, 10, 3);
add_filter('rest_post_dispatch', function($result, $server, $request) {
   // Restore default error handler
   restore_error_handler();
   // Check for fatal errors that occurred during request
   $error = error_get_last();
   if ($error && in_array($error['type'], [E_ERROR, E_USER_ERROR, E_PARSE, E_COMPILE_ERROR])) {
      $context = array_merge($GLOBALS['jvb_rest_request'] ?? [], [
         'fatal_error' => $error,
         'user_id' => get_current_user_id(),
      ]);
      error_log('JVB REST Fatal: ' . json_encode($context));
   }
   // Clean up
   unset($GLOBALS['jvb_rest_request']);
   return $result;
}, 10, 3);
//add_filter('rest_pre_dispatch', function($result, $server, $request) {
// // Store request details globally for error logging
// $GLOBALS['jvb_rest_request'] = [
//    'route' => $request->get_route(),
//    'method' => $request->get_method(),
//    'params' => $request->get_params(),
//    'time' => microtime(true),
// ];
//
// // Set up error handler for this request
// set_error_handler(function($errno, $errstr, $errfile, $errline) {
//    if (!(error_reporting() & $errno)) {
//       return false;
//    }
//
//    $context = array_merge($GLOBALS['jvb_rest_request'] ?? [], [
//       'error_type' => $errno,
//       'error_message' => $errstr,
//       'file' => $errfile,
//       'line' => $errline,
//       'user_id' => get_current_user_id(),
//    ]);
//
//    error_log('JVB REST Error: ' . json_encode($context));
//
//    return false; // Let PHP handle it normally too
// });
//
// return $result;
//}, 10, 3);
//
//add_filter('rest_post_dispatch', function($result, $server, $request) {
// // Restore default error handler
// restore_error_handler();
//
// // Check for fatal errors that occurred during request
// $error = error_get_last();
// if ($error && in_array($error['type'], [E_ERROR, E_USER_ERROR, E_PARSE, E_COMPILE_ERROR])) {
//    $context = array_merge($GLOBALS['jvb_rest_request'] ?? [], [
//       'fatal_error' => $error,
//       'user_id' => get_current_user_id(),
//    ]);
//
//    error_log('JVB REST Fatal: ' . json_encode($context));
// }
//
// // Clean up
// unset($GLOBALS['jvb_rest_request']);
//
// return $result;
//}, 10, 3);
@@ -118,24 +117,20 @@
//const JVB_TESTING = false;
//if (!JVB_TESTING) {
   add_filter('show_admin_bar', '__return_false');
// add_filter('show_admin_bar', '__return_false');
//}
//if (JVB_TESTING) {
// error_log('In testing mode...');
//} else {
// error_log('Not in testing mode...');
//}
const JVB_DIR = WP_PLUGIN_DIR . '/jvb';
define('JVB_URL', plugin_dir_url(__FILE__));
// Session Security
define('JVB_SESSION_FINGERPRINT', true);
const JVB_SESSION_FINGERPRINT = true;
// Login Security
define('JVB_MAX_LOGIN_ATTEMPTS', 5);
define('JVB_LOCKOUT_DURATION', 15 * MINUTE_IN_SECONDS);
const JVB_MAX_LOGIN_ATTEMPTS = 5;
const JVB_LOCKOUT_DURATION = 15 * MINUTE_IN_SECONDS;
require(JVB_DIR.'/inc/Instance.php');
@@ -252,7 +247,7 @@
/**
 * Utilities
 */
require(JVB_DIR . '/cleanup.php');
//require(JVB_DIR . '/cleanup.php');
require(JVB_DIR . '/inc/admin/_setup.php');
require(JVB_DIR . '/JVBase.php');
@@ -514,23 +509,23 @@
{
    echo '<div class="screen-reader-text live-region" aria-live="polite" role="status"></div>';
}
/*
add_action('wp_head', 'jvbFrontendBase',1);
function jvbFrontendBase():void
{
//add_action('wp_head', 'jvbFrontendBase',1);
//function jvbFrontendBase():void
//{
// ?>
<!--  <script type="text/javascript">window.jvbBase = '--><?php //= BASE ?>//';</script>
// <?php
//}
   <script type="text/javascript">window.jvbBase = '<?= BASE ?>';</script>
   <?php
}
*/
add_action('after_setup_theme', 'jvbImageSize');
function jvbImageSize():void
{
   add_theme_support('post-thumbnails');
   add_image_size( 'tiny', 50, 50, false );
   add_image_size( 'directory-preview', 100, 100, false );
   add_image_size( 'tiny', 50, 50 );
   add_image_size( 'directory-preview', 100, 100 );
}
@@ -549,23 +544,6 @@
// return $result;
//}, 10, 3);
add_filter('rest_authentication_errors', function($result) {
   // Don't override existing authentication
   if (is_wp_error($result) || $result === true) {
      return $result;
   }
   // Try to authenticate from cookie
   $cookie_user = wp_validate_auth_cookie('', 'logged_in');
   if ($cookie_user) {
      wp_set_current_user($cookie_user);
      return true;
   }
   return $result;
}, 99);
add_action('wp_footer', 'jvb_back_to_top');
function jvb_back_to_top():void