function process($webscript, $method) { $this->deleteInvalidTickets(); try { $reflectedWebscript = new ReflectionAnnotatedClass(ucfirst($webscript) . "Webscript"); if ($reflectedWebscript->hasMethod($method)) { $methodInstance = $reflectedWebscript->getMethod($method); if ($methodInstance->isPublic()) { $args = ""; $ticket = ""; if ($methodInstance->hasAnnotation("Get")) { $args = $_GET['data']; $ticket = $_GET['ticket']; } if ($methodInstance->hasAnnotation("Post")) { $args = $_POST['data']; $ticket = $_POST['ticket']; } if ($methodInstance->hasAnnotation("RequiresAuthentication")) { if ($this->checkAuthentication($ticket, $methodInstance->getAnnotation("RequiresAuthentication"))) { $this->extendAuthentication($ticket); } else { return $this->authenticationFailed(); } } return $methodInstance->invoke($reflectedWebscript->newInstance(), $args, $ticket); } } else { return $this->notFound(); } } catch (ReflectionException $e) { return $this->notFound(); } }
/** * Loads current action according TlalokesRequest or default configuration * * @author Basilio Briceno <*****@*****.**> * @param array $conf * @param TlalokesRequest $request */ function tlalokes_core_conf_get_action(&$conf, TlalokesRequest &$request) { require_once 'ReflectionAnnotatedClass.php'; require_once 'ControllerDefinition.php'; require_once 'ActionDefinition.php'; // reflect Annotations from current controller class $rc = new ReflectionAnnotatedClass($conf['current']['controller']); // try to find the @ControllerDefinition if (!$rc->hasAnnotation('ControllerDefinition')) { tlalokes_error_msg('Define annotation @ControllerDefinition in ' . $conf['current']['controller']); } // try to find the default action property in @ControllerDefinition if (!($default = $rc->getAnnotation('ControllerDefinition')->default)) { tlalokes_error_msg('Define a default action in @ControllerDefinition in ' . $conf['current']['controller']); } // set the current action from TlalokesRequest or default if not found $conf['current']['action'] = !$rc->hasMethod($request->_action) ? $default : $request->_action; return $conf; }