# Bootstrap del Sistema

## Punto de entrada principal

- `admin/index.php` es el front controller principal.
- Verifica `vendor/autoload.php`; si no existe, detiene la ejecucion.
- Incluye `config.php`, `include/Webservices/Relation.php`, `vtlib/Vtiger/Module.php` e `includes/main/WebUI.php`.
- Instancia `Vtiger_WebUI` y llama `process(new Vtiger_Request($_REQUEST, $_REQUEST))`.

## Carga de configuracion

- `config.php` incluye `config.inc.php` y opcionalmente `config_override.php`.
- `config.inc.php`, `config.db.php` y `config.csrf-secret.php` contienen datos sensibles y no fueron impresos.
- `config.performance.php` se incluye desde `PearDatabase.php` para preferencias de rendimiento.

## Inicializacion runtime

- `includes/Loader.php` registra `spl_autoload_register('Vtiger_Loader::autoLoad')`.
- `includes/runtime/EntryPoint.php` importa Request, Response, Session, Globals, Controller, Viewer, Theme, BaseModel, LanguageHandler y Cache.
- `WebUI::process()` inicia sesion con `Vtiger_Session::init()`.
- CSRF se carga desde `libraries/csrf-magic/csrf-magic.php`, excepto reset password, Login y `fromMig`.

## Usuario, idioma y permisos

- `getLogin()` recupera usuario desde `$_SESSION['authenticated_user_id']`, `AUTHUSERID` y `app_unique_key`.
- Carga datos de usuario con `CRMEntity::getInstance('Users')` y `retrieveCurrentUserInfoFromFile()`.
- Idioma actual: `Vtiger_Language_Handler::getLanguage()`.
- Strings del modulo y app se cargan desde `languages/<lang>/`.
- Permisos se revisan por handler con `checkPermission()` y `Users_Privileges_Model`.

## Base de datos y logs

- `PearDatabase::getInstance()` crea singleton global `$adb`.
- `include/logging.php` inicializa loggers `VT` y `SQLTIME`.
- Motor inferido: MySQL/MariaDB por `db_type`, `ext-mysqli` y ADOdb.

## Flujo request-respuesta

1. Apache/PHP recibe `/admin/index.php?...`.
2. `index.php` carga bootstrap y crea `Vtiger_Request`.
3. `WebUI` inicia sesion, CSRF, usuario e idioma.
4. Determina `module`, `view` o `action`.
5. `Vtiger_Loader::getComponentClassName()` resuelve clase y archivo.
6. Handler valida request, login y permisos.
7. Handler ejecuta `process()`.
8. Devuelve template HTML via `Vtiger_Viewer` o JSON via `Vtiger_Response`.
