DRAFT Page load flowchart - respencer/ChurchCRM GitHub Wiki

graph TD;

subgraph apache
    HTTPRequest --> CRMRootDirectory{Does Requested Path Exist}

    CRMRootDirectory --yes--> PageExists{LoadPage}
    CRMRootDirectory --no--> index{.htaccess forces index.php to Look for<br/> prettyurl or redirect to Menu} 
    index --> PageExists{Is Page root dir, v2, or API?}
    
    
  end

subgraph AuthenticationManager
    beginAuthenticationManager(AuthManager) --> SelectAuthProvider
    subgraph localAuth
        SelectAuthProvider --> isUserLoginValid
      end
    isUserLoginValid --> endAuthenticationManager
    endAuthenticationManager
  end

subgraph initPage 
    PageExists --root--> PageExistsRoot
    PageExists --v2--> v2index(v2/index.php)
    v2index --> config1
    PageExistsRoot --> config1
    config1(read settings from Config.php) --> config2(initialize bootstrapper in LoadConfigs.php)
    config2 --> peroot2AuthenticationManager
    subgraph Functionsphp
        peroot2AuthenticationManager(Ensure Session<br/> See AuthenticationManager) --> beginAuthenticationManager
        endAuthenticationManager --> LoadGlobals(LoadGlobalFunctions)
      end 
  end

subgraph initApi
    PageExists --api--> PageIsAPI
    PageIsAPI --> apiconfig1
    apiconfig1(read settings from Config.php) --> apiconfig2(initialize bootstrapper in LoadConfigs.php)
    apiconfig2 --> apiSlim(Start Slim API app)
    apiSlim .-> beginAuthenticationManager
    endAuthenticationManager .->  RenderAPIResult
  end




LoadGlobals --root--> render(Render Page)
LoadGlobals --v2--> renderslim(Load Slim App / Routes)


Loading
⚠️ **GitHub.com Fallback** ⚠️