<?php if ( ! defined( 'ABSPATH' ) ) exit; add_action('parse_request', function($wp) { if (isset($_GET['debug_rewrite'])) { echo '<pre>'; echo 'matched_rule: ' . $wp->matched_rule . "\n"; echo 'matched_query: ' . $wp->matched_query . "\n"; echo 'query_vars: '; print_r($wp->query_vars); echo '</pre>'; die(); } }); function orbit_crm_add_rewrite_rules() { add_rewrite_rule( '^crm/?$', 'index.php?orbit_crm_page=dashboard', 'top' ); add_rewrite_rule( '^crm/login/?$', 'index.php?orbit_crm_page=login', 'top' ); add_rewrite_rule( '^crm/logout/?$', 'index.php?orbit_crm_page=logout', 'top' ); add_rewrite_rule( '^crm/reparaties/nieuw/?$', 'index.php?orbit_crm_page=reparaties/nieuw','top' ); add_rewrite_rule( '^crm/reparaties/([0-9]+)/werkbon/?$', 'index.php?orbit_crm_page=werkbon&orbit_rep_id=$matches[1]','top' ); add_rewrite_rule( '^crm/reparaties/([0-9]+)/?$', 'index.php?orbit_crm_page=detail&orbit_rep_id=$matches[1]','top' ); add_rewrite_rule( '^crm/reparaties/?$', 'index.php?orbit_crm_page=reparaties', 'top' ); add_rewrite_rule( '^crm/klanten/?$', 'index.php?orbit_crm_page=klanten', 'top' ); add_rewrite_rule( '^crm/kassa/factuur/?$', 'index.php?orbit_crm_page=kassa-factuur', 'top' ); add_rewrite_rule( '^crm/kassa/?$', 'index.php?orbit_crm_page=kassa', 'top' ); add_rewrite_rule( '^crm/producten/?$', 'index.php?orbit_crm_page=producten', 'top' ); add_rewrite_rule( '^crm/financieel/?$', 'index.php?orbit_crm_page=financieel', 'top' ); add_rewrite_rule( '^crm/voorraad/?$', 'index.php?orbit_crm_page=voorraad', 'top' ); add_rewrite_rule( '^crm/facturen/?$', 'index.php?orbit_crm_page=facturen', 'top' ); add_rewrite_rule( '^crm/bestellingen/?$', 'index.php?orbit_crm_page=bestellingen', 'top' ); add_rewrite_rule( '^crm/werkplaats/?$', 'index.php?orbit_crm_page=werkplaats', 'top' ); add_rewrite_rule( '^crm/medewerkers/?$', 'index.php?orbit_crm_page=medewerkers', 'top' ); add_rewrite_rule( '^crm/pin-reset/?$', 'index.php?orbit_crm_page=pin-reset', 'top' ); add_rewrite_rule( '^crm/pin-login/?$', 'index.php?orbit_crm_page=pin-login', 'top' ); add_rewrite_rule( '^crm/pin-logout/?$', 'index.php?orbit_crm_page=pin-logout', 'top' ); add_rewrite_rule( '^crm/pin-wissel/?$', 'index.php?orbit_crm_page=pin-wissel', 'top' ); add_rewrite_rule( '^crm/takenbord/?$', 'index.php?orbit_crm_page=takenbord', 'top' ); add_rewrite_rule( '^crm/agenda/?$', 'index.php?orbit_crm_page=agenda', 'top' ); add_rewrite_rule( '^crm/offertes/([0-9]+)/?$', 'index.php?orbit_crm_page=offerte-detail&orbit_rep_id=$matches[1]', 'top' ); add_rewrite_rule( '^crm/offertes/?$', 'index.php?orbit_crm_page=offertes', 'top' ); add_rewrite_rule( '^crm/tijdregistratie/?$', 'index.php?orbit_uren=1', 'top' ); add_rewrite_rule( '^offerte/?$', 'index.php?orbit_offerte=1', 'top' ); add_rewrite_rule( '^status/?$', 'index.php?orbit_status=1', 'top' ); add_rewrite_rule( '^scan/([a-zA-Z0-9]+)/?$', 'index.php?orbit_scan_id=$matches[1]', 'top' ); add_rewrite_rule( '^s/([a-zA-Z0-9]+)/?$', 'index.php?orbit_scan_id=$matches[1]', 'top' ); add_rewrite_rule( '^qr/([a-zA-Z0-9]+)/?$', 'index.php?orbit_scan_id=$matches[1]', 'top' ); add_rewrite_rule( '^crm/(.+)/?$', 'index.php?orbit_crm_page=$matches[1]', 'top' ); } add_filter( 'query_vars', function( $vars ) { $vars[] = 'orbit_crm_page'; $vars[] = 'orbit_rep_id'; $vars[] = 'orbit_uren'; $vars[] = 'orbit_status'; $vars[] = 'orbit_offerte'; $vars[] = 'orbit_scan_id'; return $vars; }); add_action( 'init', function() { orbit_crm_add_rewrite_rules(); add_rewrite_tag( '%orbit_crm_page%', '([^&]+)' ); add_rewrite_tag( '%orbit_rep_id%', '([0-9]+)' ); add_rewrite_tag( '%orbit_status%', '([0-9]+)' ); add_rewrite_tag( '%orbit_scan_id%', '([a-zA-Z0-9]+)' ); if ( get_option('orbit_crm_rewrite_version') !== '3.1' ) { flush_rewrite_rules(); update_option('orbit_crm_rewrite_version', '3.1'); } }); // Scan pagina (publiek, mobiel) add_filter( 'template_include', function( $template ) { if ( get_query_var('orbit_scan_id') ) { $tpl = ORBIT_CRM_PATH . 'templates/scan.php'; if ( file_exists($tpl) ) return $tpl; } return $template; }, 5 ); // Publieke offerte pagina add_filter( 'template_include', function( $template ) { if ( get_query_var('orbit_offerte') ) { $tpl = ORBIT_CRM_PATH . 'templates/offerte-publiek.php'; if ( file_exists($tpl) ) return $tpl; } return $template; }, 8 ); // Status pagina (publiek) add_filter( 'template_include', function( $template ) { if ( get_query_var('orbit_status') ) { $tpl = ORBIT_CRM_PATH . 'templates/status.php'; if ( file_exists($tpl) ) return $tpl; } return $template; }, 9 ); // Laad de juiste template voor CRM pagina's add_filter( 'template_include', function( $template ) { if ( get_query_var('orbit_uren') ) { $tpl = ORBIT_CRM_PATH . 'templates/uren.php'; if ( file_exists($tpl) ) return $tpl; } $page = get_query_var( 'orbit_crm_page' ); if ( $page === '' ) return $template; if ( class_exists('\Bricks\Theme') ) { remove_filter( 'template_include', [ '\Bricks\Theme', 'set_template' ], 99 ); remove_filter( 'template_include', [ '\Bricks\Frontend', 'set_template' ], 99 ); } if ( $page === 'logout' ) { wp_logout(); wp_redirect( home_url( '/crm/login' ) ); exit; } if ( $page === 'pin-logout' ) { wp_logout(); wp_redirect( home_url( '/crm/pin-login' ) ); exit; } if ( $page === 'pin-wissel' ) { global $wpdb; $mw_id = intval( $_GET['mw'] ?? 0 ); $token = sanitize_text_field( $_GET['token'] ?? '' ); $debug = []; if ( $mw_id && $token ) { $opgeslagen = get_transient( 'orbit_wissel_token_' . $mw_id ); $debug['opgeslagen'] = $opgeslagen ? 'ja' : 'nee'; $debug['match'] = $opgeslagen && hash_equals($opgeslagen, $token) ? 'ja' : 'nee'; if ( $opgeslagen && hash_equals( $opgeslagen, $token ) ) { delete_transient( 'orbit_wissel_token_' . $mw_id ); $mw = $wpdb->get_row( $wpdb->prepare( "SELECT * FROM {$wpdb->prefix}orbit_medewerkers WHERE id = %d AND actief = 1", $mw_id ) ); $debug['mw_gevonden'] = $mw ? 'ja: ' . $mw->naam : 'nee'; if ( $mw ) { wp_logout(); wp_clear_auth_cookie(); wp_set_current_user( $mw->wp_user_id ); wp_set_auth_cookie( $mw->wp_user_id, true ); do_action( 'wp_login', $mw->wp_user_naam ?? '', get_userdata($mw->wp_user_id) ); $locaties = explode( ',', $mw->locaties ); $eerste = trim( $locaties[0] ?? 'Elst' ); if ( $eerste === 'Beide' ) $eerste = 'Elst'; update_user_meta( $mw->wp_user_id, 'orbit_actieve_locatie', $eerste ); $debug['cookie_gezet'] = 'ja voor user_id=' . $mw->wp_user_id; } } } // Tijdelijk debug output if (isset($_GET['debug'])) { die(json_encode($debug)); } wp_redirect( home_url( '/crm' ) ); exit; } if ( ! is_user_logged_in() || ! current_user_can( 'orbit_crm_access' ) ) { if ( $page === 'pin-login' ) return ORBIT_CRM_PATH . 'templates/pin-login.php'; if ( $page === 'pin-reset' ) return ORBIT_CRM_PATH . 'templates/pin-reset.php'; if ( $page === 'login' ) return ORBIT_CRM_PATH . 'templates/login.php'; global $wpdb; $tabel_bestaat = $wpdb->get_var("SHOW TABLES LIKE '{$wpdb->prefix}orbit_medewerkers'"); $heeft_mw = $tabel_bestaat ? $wpdb->get_var("SELECT COUNT(*) FROM {$wpdb->prefix}orbit_medewerkers WHERE actief = 1") : 0; wp_redirect( $heeft_mw > 0 ? home_url('/crm/pin-login') : home_url('/crm/login') ); exit; } $safe_page = str_replace(['..', '//'], '', $page); $rep_id = intval( get_query_var('orbit_rep_id') ); error_log('ORBIT safe_page=' . $safe_page . ' rep_id=' . $rep_id); if ( $safe_page === 'detail' && $rep_id ) { $tpl = ORBIT_CRM_PATH . 'templates/reparaties/detail.php'; if ( file_exists($tpl) ) return $tpl; } if ( $safe_page === 'werkbon' && $rep_id ) { $tpl = ORBIT_CRM_PATH . 'templates/reparaties/werkbon.php'; if ( file_exists($tpl) ) return $tpl; } if ( $safe_page === 'offerte-detail' && $rep_id ) { $tpl = ORBIT_CRM_PATH . 'templates/offertes/detail.php'; if ( file_exists($tpl) ) return $tpl; } $known = [ 'dashboard' => 'dashboard.php', 'reparaties' => 'reparaties.php', 'reparaties/nieuw' => 'reparaties/nieuw.php', 'klanten' => 'klanten.php', 'kassa' => 'kassa.php', 'kassa-factuur' => 'kassa-factuur.php', 'producten' => 'producten.php', 'financieel' => 'financieel.php', 'facturen' => 'facturen.php', 'bestellingen' => 'bestellingen.php', 'werkplaats' => 'werkplaats.php', 'agenda' => 'agenda.php', 'offertes' => 'offertes.php', 'uren' => 'uren.php', 'medewerkers' => 'medewerkers.php', 'takenbord' => 'takenbord.php', 'pin-reset' => 'pin-reset.php', 'pin-login' => 'pin-login.php', ]; if ( isset($known[$safe_page]) ) { $tpl = ORBIT_CRM_PATH . 'templates/' . $known[$safe_page]; if ( $safe_page === 'kassa-factuur' ) { error_log('ORBIT kassa-factuur tpl=' . $tpl . ' exists=' . (file_exists($tpl)?'ja':'nee')); } if ( file_exists($tpl) ) return $tpl; } $tpl = ORBIT_CRM_PATH . 'templates/' . $safe_page . '.php'; if ( file_exists($tpl) ) return $tpl; return ORBIT_CRM_PATH . 'templates/dashboard.php'; });
You have javascript disabled. You will not be able to edit any code.