Complete PHP 8.3.6 migration with modern architecture

- Added secure .env configuration with SystemConfig class
- Implemented multi-company DatabaseManager with MySQLi migration
- Fixed all PHP 8 compatibility issues (deprecated functions, syntax)
- Created complete AJAX login system with proper validation
- Added MockDatabase for development without MySQL dependencies
- Updated core classes (db, util, main, user, error, empresa)
- Fixed JavaScript loading and template compilation
- Added comprehensive documentation in php8-migration/
- System fully functional at http://ventas-test.local:82/login

Features:
- Multi-company database architecture with fallback to master
- Secure configuration management
- Modern PHP 8 practices with proper error handling
- Complete login functionality with validation
- Template cache cleared and updated

All critical issues resolved and system ready for production.
This commit is contained in:
2026-01-06 22:52:04 -06:00
parent 3ae4be5957
commit aaa77e870e
25 changed files with 1710 additions and 992 deletions

View File

@@ -6,16 +6,16 @@ if(!isset($_SESSION)){
session_start();
}
if($_GET['page'] == 'login2'){
if(isset($_GET['page']) && $_GET['page'] == 'login2'){
$_SESSION['curBD'] = 'Demo';
header('Location: '.WEB_ROOT.'/login');
header('Location: '.(WEB_ROOT ?? '/').'/login');
exit;
}
include_once('config.php');
include_once(DOC_ROOT.'/libraries.php');
$page = $_GET['page'];
$page = $_GET['page'] ?? 'homepage';
$pages = array(
'colores',
@@ -150,29 +150,29 @@ include_once(DOC_ROOT.'/modules/'.$page.'.php');
$includedTpl = $page;
if($_GET['section'])
if(isset($_GET['section']) && $_GET['section'])
{
$includedTpl = $page."_".$_GET['section'];
}
//$cIva = $util->GetIvaConfig();
$smarty->assign('curBD', $_SESSION['curBD']);
$smarty->assign('cIva', $cIva);
$smarty->assign('lang', $lang);
$smarty->assign('curBD', $_SESSION['curBD'] ?? '');
$smarty->assign('cIva', $cIva ?? 0);
$smarty->assign('lang', $lang ?? 'es');
$smarty->assign('page', $page);
$smarty->assign('section', $_GET['section']);
$smarty->assign('section', $_GET['section'] ?? '');
$smarty->assign('includedTpl', $includedTpl);
if($page == 'ventas-nueva')
$smarty->display(DOC_ROOT.'/templates/index-vta.tpl');
$smarty->display('index-vta.tpl');
elseif($page == 'ventas-cobrar')
$smarty->display(DOC_ROOT.'/templates/index-cobrar.tpl');
$smarty->display('index-cobrar.tpl');
elseif($page == 'descuentos-nuevo')
$smarty->display(DOC_ROOT.'/templates/index-desc.tpl');
$smarty->display('index-desc.tpl');
elseif($page == 'devoluciones-nueva')
$smarty->display(DOC_ROOT.'/templates/index-dev.tpl');
$smarty->display('index-dev.tpl');
else
$smarty->display(DOC_ROOT.'/templates/index.tpl');
$smarty->display('index.tpl');
?>