Main Page | Class Hierarchy | Class List | File List | Class Members | File Members | Related Pages

ThrowEvent.inc.php

Go to the documentation of this file.
00001 <?php
00006 include_once("core/modules/Modules.class.php");
00007 include_once("core/system/JContext.class.php");
00008 include_once("core/system/JSystem.class.php");
00009 
00010 define(ERROR_NO_EVENTHANDLER, 0);
00011 define(ERROR_UNDEFINED_CLASS, 1);
00012 
00013 function dbg($ll) {}
00014 function dbgup() {}
00015 function dbgvar($a,$b) {}
00016 function dbgdown() {}
00026 function ThrowEvent($event, $idM)
00027 {
00028         // Get the context and modules objects
00029         $context =& JContext::GetInstance();
00030         $modules =& Modules::GetInstance();
00031         
00032         // Set up the debug info
00033         dbg("<".$idM.".".$event.">");
00034         dbgUp();
00035 
00036         dbg("Usuario: ".$context->GetActiveUserId());   
00037         dbg("Grupo: ".$context->GetActiveGroupId());
00038 
00039         // Get the module object with that id
00040         $module =& $modules->GetModule($idM);
00041         
00042 //      echo $idM;
00043         if (JSystem::IsError($module))
00044         {       
00045                 die("Error");
00046         }
00047         
00048         /*
00049         $modName = getModuleName($idM);
00050 
00051         if (! $modName)
00052                 $modName = $idM;
00053         else
00054                 dbg("Nombre del modulo: '".$modName."' (1er Intento)"); 
00055                 
00056         // en el archivo eventHandler.inc deberá tener una implementación
00057         // de la clase Mod de nombre NombreModulo.
00058         */
00059         
00060         $strExec = 'modules/'.$module->GetName().'/'.$module->GetName().".class.php";
00061 
00062         /* Con esto conseguimos que sólo nos avise de los errores de parseo */
00063         $oldlevel = error_reporting(E_PARSE);
00064 
00065         dbg("Cambiamos nivel de debug");        
00066 
00067         dbg("Intentamos cargar: ".$strExec);    
00068 
00069         $res = @include_once($strExec);
00070 
00071         dbg("Cargado.");        
00072         
00073         
00074         /* Si no lo encuentra, tomamos medidas desesperadas */
00075         if (! $res)
00076         {
00077                 dbg("Error en la carga del módulo '".$modName."' al lanzar el evento '".$event."'. No existe eventHandler.inc");
00078                 return JSystem::RaiseError( new JError(ERROR_NO_EVENTHANDLER, 
00079                                 "Error en la carga del módulo '".$modName."' al lanzar el evento '".$event."'. No existe eventHandler.inc"));
00080                 
00081         }
00082 
00083         /* Restauramos las indicaciones de error */     
00084         error_reporting($oldlevel);
00085         
00086         /* Ahora necesitamos generar la información requerida para el contexto del
00087         módulo embebido */
00088         $context->PushActiveModule($module->GetId());
00089         
00090         /* Creamos un objeto del módulo al que llamaremos */
00091         if (! class_exists($module->GetName()))
00092         {
00093                 dbg("Error en la carga del módulo '".$module->GetName()."' al lanzar el evento '".$event."'. Clase no definida.");
00094                 return JSystem::RaiseError(     new JError(ERROR_UNDEFINED_CLASS, 
00095                                 "Error en la carga del módulo '".$module->GetName()."' al lanzar el evento '".$event."'. Clase no definida."));
00096         }
00097                 
00098 /*      $strExec = "\$modEvent = new ".$module->GetName()."($module);";
00099 
00100         eval($strExec);*/
00101         $modname = $module->GetName();
00102         $modEvent = new $modname($module);
00103 
00104         /* Ahora generamos la cadena necesaria para pasarle todos los argumentos
00105         adicionales que le hayan podido enviar a la función */
00106         $args = func_get_args();
00107         $params = array_merge(array($event),array_splice($args, 2));
00108 
00109         if (method_exists($modEvent, $event)){
00110                 // Esto permite llamar directamente al método en la clase en lugar de a través de event 
00111 
00112                 $params = array_splice($params,1);
00113 
00114                 foreach($params as $i=>$param){
00115                         dbgVar("Parametro ".$i.": ",$param);
00116                         $strParam .= $param.",";
00117                 }
00118                 dbg("Llamada: ".$modName."->".$event."(".rtrim($strParam,",").")");
00119                 
00120                 $result = call_user_func_array(array(&$modEvent, $event), $params);
00121 /*      }else{
00122 
00123                 foreach($params as $i=>$param){
00124                         dbgVar("Parametro ".$i.": ",$param);
00125                         $strParam .= $param.",";
00126                 }
00127                 dbg("Llamada: ".$modName."->Event(".rtrim($strParam,",").")");
00128 
00129                 // Ejecuta $modEvent->Event($event, $parametros_extra);
00130                 $result = call_user_func_array(array(&$modEvent, "Event"), $params);*/
00131         }
00132         
00133                         
00134         /* Eliminamos la información del contexto del módulo embebido */
00135         $context->PopActiveModule();
00136 
00137         dbgVar("Resultado: ",$result);
00138         
00139         dbgDown();
00140         dbg("</".$idM.".".$event.">");
00141         
00142         return $result;
00143 }
00144 
00145 
00146 ?>

Generated on Wed Nov 19 20:29:35 2003 for James by doxygen 1.3.4