<?php
///////////////////////////////////////////////////////////////////////////////////////////////
if ( defined( 'SF_DEBUG' ) && SF_DEBUG )
{
    error_reporting( E_ALL );
    ini_set( 'display_errors', '1' ); //PARA PRODUCCION "Off"    
}
///////////////////////////////////////////////////////////////////////////////////////////////
//condicion para la aplicacion para el filtro de ingreso por rol del usuario
$is_security = true;
///////////////////////////////////////////////////////////////////////////////////////////////
//config global
require_once( SF_ROOT_DIR.DIRECTORY_SEPARATOR.'config'.DIRECTORY_SEPARATOR.'configGlobal.php' );
require_once( SF_ROOT_DIR.DIRECTORY_SEPARATOR.'apps'.DIRECTORY_SEPARATOR.SF_APP.DIRECTORY_SEPARATOR."templates".DIRECTORY_SEPARATOR."LayoutTemplate.php" );
LayoutTemplate::setDefaultIni();
///////////////////////////////////////////////////////////////////////////////////////////////
//AQUI VERIFICO LA VARIABLES PARA COLOCARLOS GLOBALES
$a_globalParam = ParameterWR::getInstance()->TransformParameterGlobal();
///////////////////////////////////////////////////////////////////////////////////////////////
//filtro de ingreso para visualizar los permisos por roles
if( $is_security )
{
    $o_securitygdFilter = new securitygdFilter();
    $o_securitygdFilter->execute( ParameterWR::getInstance()->getVar( "block" ) );
}
///////////////////////////////////////////////////////////////////////////////////////////////
//parametros
$s_Class  = ParameterWR::getInstance()->getModule();
$s_Module = strtolower( $s_Class );
$s_Action = ParameterWR::getInstance()->getActions();
$s_Methods = ucwords( $s_Action );
///////////////////////////////////////////////////////////////////////////////////////////////
//se inserta la accion
try 
{
    $o_Action         = null;
    $v_Result         = null;
    $b_AccessTemplate = false;
    $s_FileAct = SF_ROOT_DIR.DIRECTORY_SEPARATOR.'apps'.DIRECTORY_SEPARATOR.SF_APP.DIRECTORY_SEPARATOR."modules".DIRECTORY_SEPARATOR.$s_Module.DIRECTORY_SEPARATOR."actions".DIRECTORY_SEPARATOR.ucfirst( $s_Action )."Action.class.php";
    if( is_readable( $s_FileAct ) )
    {
        require( $s_FileAct );
        eval( "\$o_Action = new ".ucfirst( $s_Action )."Action();" );
        eval( "\$v_Result = \$o_Action->execute();" );
        $b_AccessTemplate = true;
    }
    else 
    {
        $s_FileAct = SF_ROOT_DIR.DIRECTORY_SEPARATOR.'apps'.DIRECTORY_SEPARATOR.SF_APP.DIRECTORY_SEPARATOR."modules".DIRECTORY_SEPARATOR.$s_Module.DIRECTORY_SEPARATOR."actions".DIRECTORY_SEPARATOR."actions.class.php";
        if( is_readable( $s_FileAct ) )
        {
            require( $s_FileAct );
            eval( "\$o_Action = new ".$s_Class."Actions();" );
            $s_MethodName = "execute".$s_Methods;
            if( method_exists( $o_Action, $s_MethodName ) )
            {
                eval( "\$v_Result = \$o_Action->{$s_MethodName}();" );
                $b_AccessTemplate = true;
            }
            else 
            {
                echo "No se encontro: <br>Metodo ( $s_MethodName ) Clase ( actions.class.php ) || <br>Metodo ( execute ) Clase ( ".ucfirst( $s_Action )."Action.class.php ) <br>En el Modulo ( $s_Module ) <br>";
            }
        }
        else 
        {
            echo "No se encontro el archivo actions.class.php para el modulo ( $s_Module ) accion ( $s_Action ) <br>";
        }
    }
}
catch ( Exception $o_Exception )
{
    pr( $o_Exception );
}
//fin insertar accion
///////////////////////////////////////////////////////////////////////////////////////////////
if( $b_AccessTemplate )
{
    try
    {
        LayoutTemplate::getInstance()->setObjectAction( $o_Action );
        LayoutTemplate::getInstance()->setActionResult( $v_Result );
        LayoutTemplate::getInstance()->initialize();
    }
    catch ( Exception $o_Exception )
    {
        pr( $o_Exception );
    }
}
///////////////////////////////////////////////////////////////////////////////////////////////