/** * Method to log a debug message. * The message will be handled by one or more configured "Debuggers". * * @param string $key The message or key in language file (locallang_debug.xml) * @param array $printfArgs If the messsage contains placeholders for usage with printf, pass the replacement values in this array. * @param int $severity The severity of the message. Valid values are 1,2 and 3 (1= info, 2 = warning, 3 = error) * @param array $data Additional debug data (e.g. the array of GET/POST values) * @return void */ public function debugMessage($key, array $printfArgs = array(), $severity = 1, array $data = array()) { $severity = intval($severity); $message = $this->getDebugMessage($key); if (strlen($message) == 0) { $message = $key; } elseif (count($printfArgs) > 0) { $message = vsprintf($message, $printfArgs); } $data = $this->recursiveHtmlSpecialChars($data); foreach ($this->globals->getDebuggers() as $idx => $debugger) { $debugger->addToDebugLog(htmlspecialchars($message), $severity, $data); } }
/** * Main method of the dispatcher. This method is called as a user function. * * @return string rendered view * @param string $content * @param array $setup The TypoScript config */ public function main($content, $setup) { $this->pi_USER_INT_obj = 1; $this->globals = Tx_Formhandler_Globals::getInstance(); $this->utilityFuncs = Tx_Formhandler_UtilityFuncs::getInstance(); try { //init flexform $this->pi_initPIflexForm(); /* * Parse values from flexform: * - Template file * - Translation file * - Predefined form * - E-mail settings * - Required fields * - Redirect page */ $templateFile = $this->pi_getFFvalue($this->cObj->data['pi_flexform'], 'template_file', 'sDEF'); $langFile = $this->pi_getFFvalue($this->cObj->data['pi_flexform'], 'lang_file', 'sDEF'); $predef = $this->pi_getFFvalue($this->cObj->data['pi_flexform'], 'predefined', 'sDEF'); $this->globals->setCObj($this->cObj); if ($setup['usePredef']) { $predef = $this->utilityFuncs->getSingle($setup, 'usePredef'); } $this->globals->getCObj()->setCurrentVal($predef); $this->globals->setPredef($predef); $this->globals->setOverrideSettings($setup); $this->componentManager = Tx_Formhandler_Component_Manager::getInstance(); /* * set controller: * 1. Default controller * 2. TypoScript */ $controller = 'Tx_Formhandler_Controller_Form'; if ($setup['controller']) { $controller = $setup['controller']; } $controller = $this->utilityFuncs->prepareClassName($controller); $controller = $this->componentManager->getComponent($controller); if (isset($content)) { $controller->setContent($this->componentManager->getComponent('Tx_Formhandler_Content', $content)); } if (strlen($templateFile) > 0) { $controller->setTemplateFile($templateFile); } if (strlen($langFile) > 0) { $controller->setLangFiles(array($langFile)); } if (strlen($predef) > 0) { $controller->setPredefined($predef); } $result = $controller->process(); } catch (Exception $e) { \TYPO3\CMS\Core\Utility\GeneralUtility::sysLog($e->getFile() . '(' . $e->getLine() . ')' . ' ' . $e->getMessage(), 'formhandler', \TYPO3\CMS\Core\Utility\GeneralUtility::SYSLOG_SEVERITY_ERROR); $result = $this->utilityFuncs->getTranslatedMessage($this->globals->getLangFiles(), 'fe-exception'); if (!$result) { $result = '<div style="color:red; font-weight: bold">' . $this->utilityFuncs->getExceptionMessage('fe-exception') . '</div>'; } if ($this->globals->getSession() && $this->globals->getSession()->get('debug')) { $result = '<div style="color:red; font-weight: bold">' . $e->getMessage() . '</div>'; $result .= '<div style="color:red; font-weight: bold">File: ' . $e->getFile() . '(' . $e->getLine() . ')</div>'; $result .= '<div style="color:red; font-weight: bold">' . $e->getTraceAsString() . '</div>'; } } if ($this->globals->getSession() && $this->globals->getSession()->get('debug')) { $debuggers = $this->globals->getDebuggers(); foreach ($debuggers as $idx => $debugger) { $debugger->outputDebugLog(); } } return $result; }