PHP Classes

File: hybrid_init.php

Recommend this page to a friend!
  Classes of Christos Drogidis   Ascoos OS Hybrid Integration   hybrid_init.php   Download  
File: hybrid_init.php
Role: Example script
Content type: text/plain
Description: Hybrid integration into Ascoos OS
Class: Ascoos OS Hybrid Integration
Integrate Ascoos OS in PHP framework applications
Author: By
Last change:
Date: 2 months ago
Size: 8,092 bytes
 

Contents

Class file image Download
<?php
/**
 * @ASCOOS-NAME : Ascoos OS
 * @ASCOOS-VERSION : 26.0.0
 * @ASCOOS-SUPPORT : [email protected]
 * @ASCOOS-BUGS : https://issues.ascoos.com
 *
 * @CASE-STUDY : hybrid_init.php
 * @fileNo : ASCOOS-OS-CASESTUDY-SEC00112
 *
 * @desc <EN> Hybrid integration of Laravel, Symfony, and Yii within Ascoos OS using LibIn autoloaders and unified event handling.
 * @desc <GR> ???????? ?????????? ??? Laravel, Symfony ??? Yii ??? Ascoos OS ???? LibIn autoloaders ??? ???????????? ??????????? ?????????.
 *
 * @since PHP 8.2.0+
 */
declare(strict_types=1);

use
ASCOOS\OS\Kernel\Arrays\Events\TEventHandler;

// <EN> Loading via Ascoos OS autoloader
// <GR> ??????? ???? Ascoos OS autoloader
global $conf, $AOS_LOGS_PATH;

// <EN> Settings for logging and events to manage logs, reports, and event triggers
// <GR> ????????? ??? logging ??? ???????? ??? ?? ?????????? logs, ???????? ??? ???????? ?????????
$properties = [
   
'cache' => $conf['cache'],
   
'logs' => [
       
'useLogger' => true,
       
'dir' => $AOS_LOGS_PATH . '/',
       
'file' => 'yii_loads.log'
   
]
];

// <EN> Load all framework autoloaders
// <GR> ??????? ???? ??? autoloaders ??? frameworks
require_once 'laravel_autoload.php'; // $GLOBALS['laravel_app']
require_once 'symfony_autoload.php'; // $GLOBALS['symfony_kernel']
require_once 'yii_autoload.php'; // $GLOBALS['yii_app']

// <EN> Load helper facades and classes
// <GR> ??????? ?????????? facades ??? ???????
use Illuminate\Support\Facades\Hash; // <EN> Laravel facade for password hashing | <GR> Facade ??? Laravel ??? hash ???????
use Illuminate\Support\Facades\Log; // <EN> Laravel facade for logging | <GR> Facade ??? Laravel ??? logging
use Illuminate\Support\Facades\DB; // <EN> Laravel facade for DB access | <GR> Facade ??? Laravel ??? ???????? ??? ????
use Carbon\Carbon; // <EN> Carbon class for date/time | <GR> ????? Carbon ??? ??????????/???

// <EN> Access global framework instances
// <GR> ???????? ??? global instances ??? frameworks
$laravel_app = $GLOBALS['laravel_app'] ?? null;
$symfony_kernel = $GLOBALS['symfony_kernel'] ?? null;
$yii_app = $GLOBALS['yii_app'] ?? null;

// <EN> Initialize Ascoos OS event handler for logging
// <GR> ???????????? ??? Ascoos OS event handler ??? logging
$eventHandler =& TEventHandler::getInstance([], $properties);

// <EN> Register hybrid login event
// <GR> ?????????? ????????? ????????? login
$eventHandler->register('cms.login', 'hybrid', function () use ($laravel_app, $symfony_kernel, $yii_app, $eventHandler) {
    try {
       
// <EN> Authenticate user via Laravel
        // <GR> ??????????????? ?????? ???? Laravel
       
$user = $laravel_app->make('auth')->user();

        if (
$user) {
           
// <EN> Create Symfony form
            // <GR> ?????????? ?????? ???? Symfony
           
$form = $symfony_kernel->getContainer()->get('form.factory')->createBuilder()->getForm();

           
// <EN> Update login timestamp via Yii
            // <GR> ????????? ???????? ??????? login ???? Yii
           
$yii_app->db->createCommand("UPDATE users SET last_login = NOW() WHERE id = :id")
                ->
bindValue(':id', $user->id)
                ->
execute();

           
// <EN> Log success across frameworks
            // <GR> ????????? ????????? ?? ??? ?? frameworks
           
Log::info("Hybrid login: user ID {$user->id}");
           
$symfony_kernel->getContainer()->get('logger')->info("Hybrid login executed");
            \
Yii::info("Hybrid login executed for user ID {$user->id}", __METHOD__);
        }
    } catch (
Exception $e) {
       
// <EN> Log error
        // <GR> ????????? ?????????
       
$eventHandler->logger->log("Hybrid login error: " . $e->getMessage(), $eventHandler::DEBUG_LEVEL_ERROR);
    }
});

// <EN> Register hybrid logout event
// <GR> ?????????? ????????? ????????? logout
$eventHandler->register('cms.logout', 'hybrid', function () use ($laravel_app, $symfony_kernel, $yii_app, $eventHandler) {
    try {
       
$user = $laravel_app->make('auth')->user();
        if (
$user) {
           
Log::info("User {$user->email} logged out");
           
$symfony_kernel->getContainer()->get('logger')->info("Logout event for {$user->email}");
            \
Yii::info("Logout event for {$user->email}", __METHOD__);
        }
    } catch (
Exception $e) {
       
$eventHandler->logger->log("Hybrid logout error: " . $e->getMessage(), $eventHandler::DEBUG_LEVEL_ERROR);
    }
});

// <EN> Register hybrid registration event
// <GR> ?????????? ????????? ????????? ????????
$eventHandler->register('cms.register', 'hybrid', function () use ($laravel_app, $symfony_kernel, $eventHandler) {
    try {
       
// <EN> Create new user via Laravel DB
        // <GR> ?????????? ???? ?????? ???? Laravel DB
       
$userId = DB::table('users')->insertGetId([
           
'name' => 'New User',
           
'email' => '[email protected]',
           
'password' => Hash::make('secret'), // <EN> Secure password hash | <GR> ??????? hash ???????
           
'created_at' => Carbon::now(), // <EN> Timestamp | <GR> ??????? ???????
       
]);

       
// <EN> Send welcome email via Symfony (dummy logic)
        // <GR> ???????? email ?????????????? ???? Symfony (???????????)
       
$mailer = $symfony_kernel->getContainer()->get('mailer');
       
// $mailer->send(...); // ????????????? ??????? ?? ?? setup

        // <EN> Log success
        // <GR> ????????? ?????????
       
Log::info("User registered with ID {$userId}");
       
$symfony_kernel->getContainer()->get('logger')->info("User registration completed");
       
$eventHandler->logger->log("Hybrid registration successful for user ID {$userId}", $eventHandler::DEBUG_LEVEL_INFO);

    } catch (
Exception $e) {
       
Log::error("Hybrid register error: " . $e->getMessage());
       
$symfony_kernel->getContainer()->get('logger')->error("Hybrid register error: " . $e->getMessage());
       
$eventHandler->logger->log("Hybrid register error: " . $e->getMessage(), $eventHandler::DEBUG_LEVEL_ERROR);
    }
});

// <EN> Register hybrid profile update event
// <GR> ?????????? ????????? ????????? ?????????? ??????
$eventHandler->register('cms.profile.update', 'hybrid', function () use ($laravel_app, $yii_app, $eventHandler) {
    try {
       
$user = $laravel_app->make('auth')->user();
        if (
$user) {
           
$yii_app->db->createCommand("UPDATE users SET name = :name WHERE id = :id")
                ->
bindValues([':name' => 'Updated Name', ':id' => $user->id])
                ->
execute();

           
Log::info("Profile updated for user {$user->id}");
            \
Yii::info("Profile updated for user {$user->id}", __METHOD__);
           
$eventHandler->logger->log("Hybrid profile update successful for user ID {$user->id}", $eventHandler::DEBUG_LEVEL_INFO);
        }
    } catch (
Exception $e) {
       
$eventHandler->logger->log("Hybrid profile update error: " . $e->getMessage(), $eventHandler::DEBUG_LEVEL_ERROR);
    }
});

// <EN> Trigger login event as example
// <GR> ???????????? ????????? login ?? ??????????
$eventHandler->trigger('cms.login', 'hybrid');

$eventHandler->Free();
?>