- Affected App
- WoltLab Suite Core
This topic made me aware of it and I started looking for the cause:
The autoloader of the Suite Core suppresses any error caused by missing classes or interfaces that are not correctly imported or implemented.
Traceability:
- Use an interface in a class without importing it via use
- Use an interface in a class with importing it via use but do not add all methods required by the interface
With the currently used @include_once(…) you'll receive a white page. With include_once(…) (notice the missing @-supressment) you'll get the correct error message displayed. But simply removing the @-supressment seems to be not the solution as some other errors occurs1.
QuoteFatal error: Class kpps\page\ShopPage contains 2 abstract methods and must therefore be declared abstract or implement the remaining methods (kpps\page\ITest::setFoo, kpps\page\ITest::getBar) in D:\xampp\htdocs\products52\shop\lib\page\ShopPage.class.php on line 20
QuoteDisplay MoreTue, 14 Apr 2020 12:47:09 +0000
Message: include_once(D:/xampp/htdocs/products52/shop/lib/page/ITest.class.php): failed to open stream: No such file or directory
PHP version: 7.0.33
WoltLab Suite version: 5.2.4
Request URI: /products52/shop/
Referrer:
User Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:75.0) Gecko/20100101 Firefox/75.0
Peak Memory Usage: 3814120/1073741824
======
Error Class: wcf\system\exception\ErrorException
Error Message: include_once(D:/xampp/htdocs/products52/shop/lib/page/ITest.class.php): failed to open stream: No such file or directory
Error Code: 0
File: D:\xampp\htdocs\products52\lib\system\WCF.class.php (341)
Extra Information: -
Stack Trace: [{"file":"D:\\xampp\\htdocs\\products52\\lib\\system\\WCF.class.php","line":815,"function":"handleError","class":"wcf\\system\\WCF","type":"::","args":[2,"include_once(D:\/xampp\/htdocs\/products52\/shop\/lib\/page\/ITest.class.php): failed to open stream: No such file or directory","D:\\xampp\\htdocs\\products52\\lib\\system\\WCF.class.php",815,{"className":"[redacted]","namespaces":"[redacted]","applicationPrefix":"[redacted]","classPath":"[redacted]"}]},{"file":"D:\\xampp\\htdocs\\products52\\lib\\system\\WCF.class.php","line":815,"function":"include_once","class":"","type":"","args":[]},{"function":"autoload","class":"wcf\\system\\WCF","type":"::","args":["kpps\\page\\ITest"],"file":"[internal function]","line":"?"},{"file":"D:\\xampp\\htdocs\\products52\\shop\\lib\\page\\ShopPage.class.php","line":15,"function":"spl_autoload_call","args":["kpps\\page\\ITest"],"class":"","type":""},{"file":"D:\\xampp\\htdocs\\products52\\lib\\system\\WCF.class.php","line":815,"args":["D:\\xampp\\htdocs\\products52\\shop\\lib\\page\\ShopPage.class.php"],"function":"include_once","class":"","type":""},{"function":"autoload","class":"wcf\\system\\WCF","type":"::","args":["kpps\\page\\ShopPage"],"file":"[internal function]","line":"?"},{"function":"spl_autoload_call","args":["kpps\\page\\ShopPage"],"file":"[internal function]","line":"?","class":"","type":""},{"file":"D:\\xampp\\htdocs\\products52\\lib\\system\\request\\ControllerMap.class.php","line":388,"function":"class_exists","args":["kpps\\page\\ShopPage"],"class":"","type":""},{"file":"D:\\xampp\\htdocs\\products52\\lib\\system\\request\\ControllerMap.class.php","line":97,"function":"getClassData","class":"wcf\\system\\request\\ControllerMap","type":"->","args":["kpps","Shop",false,"page"]},{"file":"D:\\xampp\\htdocs\\products52\\lib\\system\\request\\RequestHandler.class.php","line":180,"function":"resolve","class":"wcf\\system\\request\\ControllerMap","type":"->","args":["kpps","Shop",false,true]},{"file":"D:\\xampp\\htdocs\\products52\\lib\\system\\request\\RequestHandler.class.php","line":72,"function":"buildRequest","class":"wcf\\system\\request\\RequestHandler","type":"->","args":["kpps"]},{"file":"D:\\xampp\\htdocs\\products52\\shop\\index.php","line":13,"function":"handle","class":"wcf\\system\\request\\RequestHandler","type":"->","args":["kpps"]}]
1:
QuoteDisplay Morewcf\system\exception\ErrorException: include_once(D:\xampp\htdocs\products52/lib/system/template/plugin/IssetModifierTemplatePlugin.class.php): failed to open stream: No such file or directory in D:\xampp\htdocs\products52\lib\system\WCF.class.php:341
Stack trace:
#0 D:\xampp\htdocs\products52\lib\system\WCF.class.php(815): wcf\system\WCF::handleError(2, 'include_once(D:...', 'D:\\xampp\\htdocs...', 815, Array)
#1 D:\xampp\htdocs\products52\lib\system\WCF.class.php(815): include_once()
#2 [internal function]: wcf\system\WCF::autoload('wcf\\system\\temp...')
#3 [internal function]: spl_autoload_call('wcf\\system\\temp...')
#4 D:\xampp\htdocs\products52\lib\system\template\TemplateScriptingCompiler.class.php(1379): class_exists('wcf\\system\\temp...')
#5 D:\xampp\htdocs\products52\lib\system\template\TemplateScriptingCompiler.class.php(1138): wcf\system\template\TemplateScriptingCompiler->compileVariableTag('$pageTitle|isse...', false)
#6 D:\xampp\htdocs\products52\lib\system\template\TemplateScriptingCompiler.class.php(422): wcf\system\template\TemplateScriptingCompiler->compileIfTag('$pageTitle|isse...')
#7 D:\xampp\htdocs\products52\lib\system\template\TemplateScriptingCompiler.class.php(338): wcf\system\template\TemplateScriptingCompiler->compileTag('if $pageTitle|i...', 'header', Array)
#8 D:\xampp\htdocs\products52\lib\system\template\TemplateScriptingCompiler.class.php(970): wcf\system\template\TemplateScriptingCompiler->compileString('header', '...', Array, true)
#9 D:\xampp\htdocs\products52\lib\system\template\TemplateScriptingCompiler.class.php(451): wcf\system\template\TemplateScriptingCompiler->compileIncludeTag(' file='header' ...', 'acpSessionLogLi...', Array)
#10 D:\xampp\htdocs\products52\lib\system\template\TemplateScriptingCompiler.class.php(338): wcf\system\template\TemplateScriptingCompiler->compileTag('include file='h...', 'acpSessionLogLi...', Array)
#11 D:\xampp\htdocs\products52\lib\system\template\TemplateCompiler.class.php(28): wcf\system\template\TemplateScriptingCompiler->compileString('acpSessionLogLi...', '{include file='...', Array)
#12 D:\xampp\htdocs\products52\lib\system\template\TemplateEngine.class.php(475): wcf\system\template\TemplateCompiler->compile('acpSessionLogLi...', '{include file='...', 'D:\\xampp\\htdocs...', Array)
#13 D:\xampp\htdocs\products52\lib\system\template\TemplateEngine.class.php(327): wcf\system\template\TemplateEngine->compileTemplate('acpSessionLogLi...', 'D:\\xampp\\htdocs...', 'D:\\xampp\\htdocs...', Array)
#14 D:\xampp\htdocs\products52\lib\page\AbstractPage.class.php(323): wcf\system\template\TemplateEngine->display('acpSessionLogLi...', 'wcf')
#15 D:\xampp\htdocs\products52\lib\page\AbstractPage.class.php(114): wcf\page\AbstractPage->show()
#16 D:\xampp\htdocs\products52\lib\system\request\Request.class.php(83): wcf\page\AbstractPage->__run()
#17 D:\xampp\htdocs\products52\lib\system\request\RequestHandler.class.php(107): wcf\system\request\Request->execute()
#18 D:\xampp\htdocs\products52\acp\index.php(9): wcf\system\request\RequestHandler->handle('wcf', true)
#19 {main}
Error Type:
wcf\system\exception\SystemException
Error Message:
Template compilation failed: syntax error in tag {if} in template 'header' on line 7
File:
D:\xampp\htdocs\products52\lib\system\template\TemplateScriptingCompiler.class.php (1141)
Stack Trace:
- #0 D:\xampp\htdocs\products52\lib\system\template\TemplateScriptingCompiler.class.php (422):
- wcf\system\template\TemplateScriptingCompiler->compileIfTag('$pageTitle|isset')
- #1 D:\xampp\htdocs\products52\lib\system\template\TemplateScriptingCompiler.class.php (338):
- wcf\system\template\TemplateScriptingCompiler->compileTag('if $pageTitle|isset', 'header', [ application => , data => , filename => ])
- #2 D:\xampp\htdocs\products52\lib\system\template\TemplateScriptingCompiler.class.php (970):
- wcf\system\template\TemplateScriptingCompiler->compileString('header', '<!DOCTYPE html> <html dir="{@$__wcf->getLanguage()->getPageDirection()}" lang="{@$__wcf->getLanguage()->getFixedLanguageCode()}"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <meta name="robots" content="noindex"> <title>{if $pageTitle|isset}{@$pageTitle|language} - {/if}Administrationsoberfläche{if PACKAGE_ID} - {PAGE_TITLE|language}{/if}</title> <style>ol, ul { list-style: none; }</style> <!-- Stylesheets --> <link href="//fonts.googleapis.com/css?family=Open+Sans:400,300,600" rel="stylesheet"> {@$__wcf->getStyleHandler()->getStylesheet(true)} <!-- Icons --> {if PACKAGE_ID && $__wcf->getStyleHandler()->getDefaultStyle()} <link rel="apple-touch-icon" sizes="180x180" href="{$__wcf->getStyleHandler()->getDefaultStyle()->getFaviconAppleTouchIcon()}"> <link rel="manifest" href="{@$__wcf->getStyleHandler()->getDefaultStyle()->getFaviconManifest()}"> <link rel="shortcut icon" href="{@$__wcf->getPath()}{@$__wcf->getStyleHandler()->getDefaultStyle()->getRelativeFavicon()}"> <meta name="msapplication-config" content="{@$__wcf->getStyleHandler()->getDefaultStyle()->getFaviconBrowserconfig()}"> <meta name="theme-color" content="{$__wcf->getStyleHandler()->getDefaultStyle()->getVariable(\'wcfPageThemeColor\', true)}"> {else} <link rel="apple-touch-icon" sizes="180x180" href="{@$__wcf->getPath()}images/favicon/default.apple-touch-icon.png"> <link rel="manifest" href="{@$__wcf->getPath()}images/favicon/default.manifest.json"> <link rel="shortcut icon" href="{@$__wcf->getPath()}images/favicon/default.favicon.ico"> <meta name="msapplication-config" content="{@$__wcf->getPath()}images/favicon/default.browserconfig.xml"> <meta name="theme-color" content="#3a6d9c"> {/if} <script> var SID_ARG_2ND = \'\'; var WCF_PATH = \'{@$__wcf->getPath()}\'; var WSC_API_URL = \'{@$__wcf->getActivePath()}acp/\'; var SECURITY_TOKEN = \'{@SECURITY_TOKEN}\'; var LANGUAGE_ID = {@$__wcf->getLanguage()->languageID}; var LANGUAGE_USE_INFORMAL_VARIANT = {if LANGUAGE_USE_INFORMAL_VARIANT}true{else}false{/if}; var TIME_NOW = {@TIME_NOW}; var LAST_UPDATE_TIME = {@LAST_UPDATE_TIME}; var URL_LEGACY_MODE = false; var ENABLE_DEBUG_MODE = {if ENABLE_DEBUG_MODE}true{else}false{/if}; var ENABLE_PRODUCTION_DEBUG_MODE = {if ENABLE_PRODUCTION_DEBUG_MODE}true{else}false{/if}; var ENABLE_DEVELOPER_TOOLS = {if ENABLE_DEVELOPER_TOOLS}true{else}false{/if}; var WSC_API_VERSION = {@WSC_API_VERSION}; var COMPILER_TARGET_DEFAULT = true; </script> {js application=\'wcf\' lib=\'polyfill\' file=\'promise\' bundle=\'WoltLabSuite.Core\' core=\'true\'} {js application=\'wcf\' file=\'require\' bundle=\'WoltLabSuite.Core\' core=\'true\'} {js application=\'wcf\' file=\'require.config\' bundle=\'WoltLabSuite.Core\' core=\'true\'} {js application=\'wcf\' file=\'require.linearExecution\' bundle=\'WoltLabSuite.Core\' core=\'true\'} {js application=\'wcf\' file=\'wcf.globalHelper\' bundle=\'WoltLabSuite.Core\' core=\'true\'} {js application=\'wcf\' file=\'closest\' bundle=\'WoltLabSuite.Core\' core=\'true\'} <script> requirejs.config({ baseUrl: \'{@$__wcf->getPath()}js\', urlArgs: \'t={@LAST_UPDATE_TIME}\' {capture assign=hascontent_c616941813a35e9bfde55f278ac5f03616283455}{/capture} {assign var=hascontent_c616941813a35e9bfde55f278ac5f03616283455 value=$hascontent_c616941813a35e9bfde55f278ac5f03616283455|trim} {if $hascontent_c616941813a35e9bfde55f278ac5f03616283455} , paths: { {@$hascontent_c616941813a35e9bfde55f278ac5f03616283455} } {/if} }); </script> <script> require([\'Language\', \'WoltLabSuite/Core/Acp/Bootstrap\', \'User\'], function(Language, AcpBootstrap, User) { Language.addObject({ \'__days\': [ \'Sonntag\', \'Montag\', \'Dienstag\', \'Mittwoch\', \'Donnerstag\', \'Freitag\', \'Samstag\' ], \'__daysShort\': [ \'So\', \'Mo\', \'Di\', \'Mi\', \'Do\', \'Fr\', \'Sa\' ], \'__months\': [ \'Januar\', \'Februar\', \'März\', \'April\', \'Mai\', \'Juni\', \'Juli\', \'August\', \'September\', \'Oktober\', \'November\', \'Dezember\' ], \'__monthsShort\': [ \'Jan\', \'Feb\', \'Mrz\', \'Apr\', \'Mai\', \'Jun\', \'Jul\', \'Aug\', \'Sep\', \'Okt\', \'Nov\', \'Dez\' ], \'wcf.acp.search.noResults\': \'Keine Treffer\', \'wcf.clipboard.item.unmarkAll\': \'Demarkieren\', \'wcf.clipboard.item.markAll\': \'Alle Elemente markieren\', \'wcf.clipboard.item.mark\': \'Element markieren\', \'wcf.date.relative.now\': \'{lang __literal=true}wcf.date.relative.now{/lang}\', \'wcf.date.relative.minutes\': \'{capture assign=relativeMinutes}{lang __literal=true}wcf.date.relative.minutes{/lang}{/capture}{@$relativeMinutes|encodeJS}\', \'wcf.date.relative.hours\': \'{capture assign=relativeHours}{lang __literal=true}wcf.date.relative.hours{/lang}{/capture}{@$relativeHours|encodeJS}\', \'wcf.date.relative.pastDays\': \'{capture assign=relativePastDays}{lang __literal=true}wcf.date.relative.pastDays{/lang}{/capture}{@$relativePastDays|encodeJS}\', \'wcf.date.dateFormat\': \'{"wcf.date.dateFormat"|language|encodeJS}\', \'wcf.date.dateTimeFormat\': \'%date%, %time%\', \'wcf.date.shortDateTimeFormat\': \'%date%\', \'wcf.date.hour\': \'Stunde\', \'wcf.date.minute\': \'Minute\', \'wcf.date.timeFormat\': \'H:i\', \'wcf.date.firstDayOfTheWeek\': \'1\', \'wcf.global.button.add\': \'Hinzufügen\', \'wcf.global.button.cancel\': \'Abbrechen\', \'wcf.global.button.close\': \'Schließen\', \'wcf.global.button.collapsible\': \'Auf- und Zuklappen\', \'wcf.global.button.delete\': \'Löschen\', \'wcf.global.button.disable\': \'Deaktivieren\', \'wcf.global.button.disabledI18n\': \'einsprachig\', \'wcf.global.button.edit\': \'Bearbeiten\', \'wcf.global.button.enable\': \'Aktivieren\', \'wcf.global.button.hide\': \'Ausblenden\', \'wcf.global.button.insert\': \'Einfügen\', \'wcf.global.button.next\': \'Weiter »\', \'wcf.global.button.preview\': \'Vorschau\', \'wcf.global.button.reset\': \'Zurücksetzen\', \'wcf.global.button.save\': \'Speichern\', \'wcf.global.button.search\': \'Suche\', \'wcf.global.button.submit\': \'Absenden\', \'wcf.global.button.upload\': \'Hochladen\', \'wcf.global.confirmation.cancel\': \'Abbrechen\', \'wcf.global.confirmation.confirm\': \'OK\', \'wcf.global.confirmation.title\': \'Bestätigung erforderlich\', \'wcf.global.decimalPoint\': \'{capture assign=decimalPoint},{/capture}{$decimalPoint|encodeJS}\', \'wcf.global.error.timeout\': \'Keine Antwort vom Server erhalten, Anfrage wurde abgebrochen.\', \'wcf.global.error.title\': \'Fehlermeldung\', \'wcf.global.form.error.empty\': \'Bitte {if LANGUAGE_USE_INFORMAL_VARIANT}fülle{else}füllen Sie{/if} dieses Eingabefeld aus.\', \'wcf.global.form.error.greaterThan\': \'{lang __literal=true}wcf.global.form.error.greaterThan{/lang}\', \'wcf.global.form.error.lessThan\': \'{lang __literal=true}wcf.global.form.error.lessThan{/lang}\', \'wcf.global.form.error.multilingual\': \'Bitte {if LANGUAGE_USE_INFORMAL_VARIANT}fülle{else}füllen Sie{/if} dieses Eingabefeld für jede Sprache aus.\', \'wcf.global.form.input.maxItems\': \'Maximale Anzahl erreicht\', \'wcf.global.language.noSelection\': \'Keine Auswahl\', \'wcf.global.loading\': \'Lädt …\', \'wcf.global.noSelection\': \'(Keine Auswahl)\', \'wcf.global.select\': \'Auswählen\', \'wcf.page.jumpTo\': \'Gehe zu Seite\', \'wcf.page.jumpTo.description\': \'{if LANGUAGE_USE_INFORMAL_VARIANT}Gib{else}Geben Sie{/if} einen Wert zwischen „1“ und „#pages#“ ein.\', \'wcf.global.page.pagination\': \'Navigation\', \'wcf.global.page.next\': \'{capture assign=pageNext}Nächste Seite{/capture}{@$pageNext|encodeJS}\', \'wcf.global.page.previous\': \'{capture assign=pagePrevious}Vorherige Seite{/capture}{@$pagePrevious|encodeJS}\', \'wcf.global.pageDirection\': \'ltr\', \'wcf.global.reason\': \'Begründung\', \'wcf.global.scrollUp\': \'Zum Seitenanfang\', \'wcf.global.success\': \'Die Aktion wurde erfolgreich ausgeführt.\', \'wcf.global.success.add\': \'Der Eintrag wurde gespeichert.\', \'wcf.global.success.edit\': \'Die Änderungen wurden gespeichert.\', \'wcf.global.thousandsSeparator\': \'{capture assign=thousandsSeparator}.{/capture}{@$thousandsSeparator|encodeJS}\', \'wcf.page.pagePosition\': \'{lang __literal=true}wcf.page.pagePosition{/lang}\', \'wcf.menu.page\': \'Menü\', \'wcf.menu.user\': \'Benutzer-Menü\', \'wcf.date.datePicker\': \'Datumsauswahl\', \'wcf.date.datePicker.previousMonth\': \'Vorheriger Monat\', \'wcf.date.datePicker.nextMonth\': \'Nächster Monat\', \'wcf.date.datePicker.month\': \'Monat\', \'wcf.date.datePicker.year\': \'Jahr\', \'wcf.date.datePicker.hour\': \'Stunde\', \'wcf.date.datePicker.minute\': \'Minute\' }); AcpBootstrap.setup({ bootstrap: { enableMobileMenu: {if PACKAGE_ID && $__isLogin|empty}true{else}false{/if} } }); User.init({@$__wcf->user->userID}, \'{@$__wcf->user->username|encodeJS}\', {if $__wcf->user->userID}\'{@$__wcf->user->getLink()|encodeJS}\'{else}\'\'{/if}); }); </script> {include file=\'__devtoolsLanguageChooser\'} <script> // prevent jQuery and other libraries from utilizing define() __require_define_amd = define.amd; define.amd = undefined; </script> {js application=\'wcf\' lib=\'jquery\'} {js application=\'wcf\' lib=\'jquery-ui\'} {js application=\'wcf\' lib=\'jquery-ui\' file=\'touchPunch\' bundle=\'WCF.Combined\'} {js application=\'wcf\' lib=\'jquery-ui\' file=\'nestedSortable\' bundle=\'WCF.Combined\'} {js application=\'wcf\' lib=\'polyfill\' file=\'focus-visible\' bundle=\'WCF.Combined\' hasTiny=true} {js application=\'wcf\' file=\'WCF.Assets\' bundle=\'WCF.Combined\'} {js application=\'wcf\' file=\'WCF\' bundle=\'WCF.Combined\'} {js application=\'wcf\' acp=\'true\' file=\'WCF.ACP\'} <script> define.amd = __require_define_amd; $.holdReady(true); WCF.User.init({$__wcf->user->userID}, \'{@$__wcf->user->username|encodeJS}\'); </script> {js application=\'wcf\' file=\'WCF.Attachment\' bundle=\'WCF.Combined\'} {js application=\'wcf\' file=\'WCF.Message\' bundle=\'WCF.Combined\'} {js application=\'wcf\' file=\'WCF.Label\' bundle=\'WCF.Combined\'} {js application=\'wcf\' file=\'WCF.Poll\' bundle=\'WCF.Combined\'} <script> $(function() { if (jQuery.browser.touch) $(\'html\').addClass(\'touch\'); WCF.System.PageNavigation.init(\'.pagination\'); {if $__wcf->user->userID} new WCF.ACP.Search(); {/if} $(\'form[method=get]\').attr(\'method\', \'post\'); // rewrites legacy links using the `dereferrer.php` service // see https://github.com/WoltLab/WCF/issues/2557 elBySelAll(\'a\', undefined, function(link) { if (/\\/dereferrer.php$/.test(link.pathname) && link.search.match(/^\\?url=([^&=]+)$/)) { link.href = unescape(RegExp.$1); } if (link.classList.contains(\'externalURL\')) { var rel = (link.rel === \'\') ? [] : link.rel.split(\' \'); if (rel.indexOf(\'noopener\') === -1) rel.push(\'noopener\'); if (rel.indexOf(\'noreferrer\') === -1) rel.push(\'noreferrer\'); link.rel = rel.join(\' \'); } }); WCF.DOMNodeInsertedHandler.execute(); }); </script> </head> <body id="tpl{$templateName|ucfirst}" data-template="{$templateName}" data-application="{$templateNameApplication}" class="wcfAcp"> <a id="top"></a> {assign var=_acpPageSubMenuActive value=false} {if PACKAGE_ID} {assign var=_activeMenuItems value=$__wcf->getACPMenu()->getActiveMenuItems()} {foreach from=$__wcf->getACPMenu()->getMenuItems(\'\') item=_sectionMenuItem} {if $_sectionMenuItem->menuItem|in_array:$_activeMenuItems}{assign var=_acpPageSubMenuActive value=true}{/if} {/foreach} {/if} <div id="pageContainer" class="pageContainer{if !PACKAGE_ID
!$__wcf->user->userID} acpPageHiddenMenu{elseif $_acpPageSubMenuActive} acpPageSubMenuActive{/if}"> {include file=\'pageHeader\'} <div id="acpPageContentContainer" class="acpPageContentContainer"> {include file=\'pageMenu\'} <section id="main" class="main" role="main"> <div class="layoutBoundary"> <div id="content" class="content"> ', [ application => , data => , filename => ], true)
- #3 D:\xampp\htdocs\products52\lib\system\template\TemplateScriptingCompiler.class.php (451):
- wcf\system\template\TemplateScriptingCompiler->compileIncludeTag(' file=\'header\' pageTitle=\'wcf.acp.sessionLog.list\'', 'acpSessionLogList', [ application => , data => , filename => ])
- #4 D:\xampp\htdocs\products52\lib\system\template\TemplateScriptingCompiler.class.php (338):
- wcf\system\template\TemplateScriptingCompiler->compileTag('include file=\'header\' pageTitle=\'wcf.acp.sessionLog.list\'', 'acpSessionLogList', [ application => , data => , filename => ])
- #5 D:\xampp\htdocs\products52\lib\system\template\TemplateCompiler.class.php (28):
- wcf\system\template\TemplateScriptingCompiler->compileString('acpSessionLogList', '{include file=\'header\' pageTitle=\'wcf.acp.sessionLog.list\'} <header class="contentHeader"> <div class="contentHeaderTitle"> <h1 class="contentTitle">Protokollierte Sitzungen <span class="badge badgeInverse">{#$items}</span></h1> </div> {capture assign=hascontent_016a1a2d270b4a5b492e0dbbdd2fd6bddd99038f}{/capture} {assign var=hascontent_016a1a2d270b4a5b492e0dbbdd2fd6bddd99038f value=$hascontent_016a1a2d270b4a5b492e0dbbdd2fd6bddd99038f|trim} {if $hascontent_016a1a2d270b4a5b492e0dbbdd2fd6bddd99038f} <nav class="contentHeaderNavigation"> <ul> {@$hascontent_016a1a2d270b4a5b492e0dbbdd2fd6bddd99038f} </ul> </nav> {/if} </header> {capture assign=hascontent_095bdc9b5ac359d8f9d9ed4c2c1198a472c9e1f0}{pages print=true assign=pagesLinks controller="ACPSessionLogList" link="pageNo=%d&sortField=$sortField&sortOrder=$sortOrder"}{/capture} {assign var=hascontent_095bdc9b5ac359d8f9d9ed4c2c1198a472c9e1f0 value=$hascontent_095bdc9b5ac359d8f9d9ed4c2c1198a472c9e1f0|trim} {if $hascontent_095bdc9b5ac359d8f9d9ed4c2c1198a472c9e1f0} <div class="paginationTop"> {@$hascontent_095bdc9b5ac359d8f9d9ed4c2c1198a472c9e1f0} </div> {/if} {if $objects|count} <div class="section tabularBox"> <table class="table"> <thead> <tr> <th class="columnSessionLogID{if $sortField == \'sessionLogID\'} active {@$sortOrder}{/if}"><a href="{link controller=\'ACPSessionLogList\'}pageNo={@$pageNo}&sortField=sessionLogID&sortOrder={if $sortField == \'sessionLogID\' && $sortOrder == \'ASC\'}DESC{else}ASC{/if}{/link}">ID</a></th> <th class="columnTitle columnUsername{if $sortField == \'username\'} active {@$sortOrder}{/if}"><a href="{link controller=\'ACPSessionLogList\'}pageNo={@$pageNo}&sortField=username&sortOrder={if $sortField == \'username\' && $sortOrder == \'ASC\'}DESC{else}ASC{/if}{/link}">Benutzername</a></th> <th class="columnURL columnIpAddress{if $sortField == \'ipAddress\'} active {@$sortOrder}{/if}"><a href="{link controller=\'ACPSessionLogList\'}pageNo={@$pageNo}&sortField=ipAddress&sortOrder={if $sortField == \'ipAddress\' && $sortOrder == \'ASC\'}DESC{else}ASC{/if}{/link}">IP-Adresse</a></th> <th class="columnText columnUserAgent{if $sortField == \'userAgent\'} active {@$sortOrder}{/if}"><a href="{link controller=\'ACPSessionLogList\'}pageNo={@$pageNo}&sortField=userAgent&sortOrder={if $sortField == \'userAgent\' && $sortOrder == \'ASC\'}DESC{else}ASC{/if}{/link}">Browser-Kennung</a></th> <th class="columnDate columnTime{if $sortField == \'time\'} active {@$sortOrder}{/if}"><a href="{link controller=\'ACPSessionLogList\'}pageNo={@$pageNo}&sortField=time&sortOrder={if $sortField == \'time\' && $sortOrder == \'ASC\'}DESC{else}ASC{/if}{/link}">Datum</a></th> <th class="columnDate columnLastActivityTime{if $sortField == \'lastActivityTime\'} active {@$sortOrder}{/if}"><a href="{link controller=\'ACPSessionLogList\'}pageNo={@$pageNo}&sortField=lastActivityTime&sortOrder={if $sortField == \'lastActivityTime\' && $sortOrder == \'ASC\'}DESC{else}ASC{/if}{/link}">Letzte Aktion</a></th> <th class="columnDigits columnAccesses{if $sortField == \'accesses\'} active {@$sortOrder}{/if}"><a href="{link controller=\'ACPSessionLogList\'}pageNo={@$pageNo}&sortField=accesses&sortOrder={if $sortField == \'accesses\' && $sortOrder == \'ASC\'}DESC{else}ASC{/if}{/link}">Aktionen</a></th> </tr> </thead> <tbody> {foreach from=$objects item=sessionLog} <tr> <td class="columnID columnSessionLogID">{@$sessionLog->sessionLogID}</td> <td class="columnTitle columnUsername"><a href="{link controller=\'ACPSessionLog\' id=$sessionLog->sessionLogID}{/link}">{$sessionLog->username}</a></td> <td class="columnSmallText columnIpAddress"><a href="{link controller=\'ACPSessionLog\' id=$sessionLog->sessionLogID}{/link}">{$sessionLog->getIpAddress()}</a>{if $sessionLog->hostname != $sessionLog->ipAddress}<br><a href="{link controller=\'ACPSessionLog\' id=$sessionLog->sessionLogID}{/link}">{$sessionLog->hostname}</a>{/if}</td> <td class="columnSmallText columnUserAgent" title="{$sessionLog->userAgent}"><a href="{link controller=\'ACPSessionLog\' id=$sessionLog->sessionLogID}{/link}">{$sessionLog->userAgent|truncate:75|tableWordwrap}</a></td> <td class="columnDate columnTime">{@$sessionLog->time|time}</td> <td class="columnDate columnLastActivityTime">{@$sessionLog->lastActivityTime|time}</td> <td class="columnDigits columnAccesses">{#$sessionLog->accesses}</td> </tr> {/foreach} </tbody> </table> </div> <footer class="contentFooter"> {capture assign=hascontent_7bac9937d7cbf51ae67792be3a39646988ceceea}{@$pagesLinks}{/capture} {assign var=hascontent_7bac9937d7cbf51ae67792be3a39646988ceceea value=$hascontent_7bac9937d7cbf51ae67792be3a39646988ceceea|trim} {if $hascontent_7bac9937d7cbf51ae67792be3a39646988ceceea} <div class="paginationBottom"> {@$hascontent_7bac9937d7cbf51ae67792be3a39646988ceceea} </div> {/if} {capture assign=hascontent_b42feb478666de7db999b35a0d408a4f0749b917}{/capture} {assign var=hascontent_b42feb478666de7db999b35a0d408a4f0749b917 value=$hascontent_b42feb478666de7db999b35a0d408a4f0749b917|trim} {if $hascontent_b42feb478666de7db999b35a0d408a4f0749b917} <nav class="contentFooterNavigation"> <ul> {@$hascontent_b42feb478666de7db999b35a0d408a4f0749b917} </ul> </nav> {/if} </footer> {/if} {include file=\'footer\'} ', [ application => , data => , filename => ])
- #6 D:\xampp\htdocs\products52\lib\system\template\TemplateEngine.class.php (475):
- wcf\system\template\TemplateCompiler->compile('acpSessionLogList', '{include file=\'header\' pageTitle=\'wcf.acp.sessionLog.list\'} <header class="contentHeader"> <div class="contentHeaderTitle"> <h1 class="contentTitle">{lang}wcf.acp.sessionLog.list{/lang} <span class="badge badgeInverse">{#$items}</span></h1> </div> {hascontent} <nav class="contentHeaderNavigation"> <ul> {content}{event name=\'contentHeaderNavigation\'}{/content} </ul> </nav> {/hascontent} </header> {hascontent} <div class="paginationTop"> {content}{pages print=true assign=pagesLinks controller="ACPSessionLogList" link="pageNo=%d&sortField=$sortField&sortOrder=$sortOrder"}{/content} </div> {/hascontent} {if $objects|count} <div class="section tabularBox"> <table class="table"> <thead> <tr> <th class="columnSessionLogID{if $sortField == \'sessionLogID\'} active {@$sortOrder}{/if}"><a href="{link controller=\'ACPSessionLogList\'}pageNo={@$pageNo}&sortField=sessionLogID&sortOrder={if $sortField == \'sessionLogID\' && $sortOrder == \'ASC\'}DESC{else}ASC{/if}{/link}">{lang}wcf.global.objectID{/lang}</a></th> <th class="columnTitle columnUsername{if $sortField == \'username\'} active {@$sortOrder}{/if}"><a href="{link controller=\'ACPSessionLogList\'}pageNo={@$pageNo}&sortField=username&sortOrder={if $sortField == \'username\' && $sortOrder == \'ASC\'}DESC{else}ASC{/if}{/link}">{lang}wcf.user.username{/lang}</a></th> <th class="columnURL columnIpAddress{if $sortField == \'ipAddress\'} active {@$sortOrder}{/if}"><a href="{link controller=\'ACPSessionLogList\'}pageNo={@$pageNo}&sortField=ipAddress&sortOrder={if $sortField == \'ipAddress\' && $sortOrder == \'ASC\'}DESC{else}ASC{/if}{/link}">{lang}wcf.user.ipAddress{/lang}</a></th> <th class="columnText columnUserAgent{if $sortField == \'userAgent\'} active {@$sortOrder}{/if}"><a href="{link controller=\'ACPSessionLogList\'}pageNo={@$pageNo}&sortField=userAgent&sortOrder={if $sortField == \'userAgent\' && $sortOrder == \'ASC\'}DESC{else}ASC{/if}{/link}">{lang}wcf.user.userAgent{/lang}</a></th> <th class="columnDate columnTime{if $sortField == \'time\'} active {@$sortOrder}{/if}"><a href="{link controller=\'ACPSessionLogList\'}pageNo={@$pageNo}&sortField=time&sortOrder={if $sortField == \'time\' && $sortOrder == \'ASC\'}DESC{else}ASC{/if}{/link}">{lang}wcf.acp.sessionLog.time{/lang}</a></th> <th class="columnDate columnLastActivityTime{if $sortField == \'lastActivityTime\'} active {@$sortOrder}{/if}"><a href="{link controller=\'ACPSessionLogList\'}pageNo={@$pageNo}&sortField=lastActivityTime&sortOrder={if $sortField == \'lastActivityTime\' && $sortOrder == \'ASC\'}DESC{else}ASC{/if}{/link}">{lang}wcf.acp.sessionLog.lastActivityTime{/lang}</a></th> <th class="columnDigits columnAccesses{if $sortField == \'accesses\'} active {@$sortOrder}{/if}"><a href="{link controller=\'ACPSessionLogList\'}pageNo={@$pageNo}&sortField=accesses&sortOrder={if $sortField == \'accesses\' && $sortOrder == \'ASC\'}DESC{else}ASC{/if}{/link}">{lang}wcf.acp.sessionLog.actions{/lang}</a></th> {event name=\'columnHeads\'} </tr> </thead> <tbody> {foreach from=$objects item=sessionLog} <tr> <td class="columnID columnSessionLogID">{@$sessionLog->sessionLogID}</td> <td class="columnTitle columnUsername"><a href="{link controller=\'ACPSessionLog\' id=$sessionLog->sessionLogID}{/link}">{$sessionLog->username}</a></td> <td class="columnSmallText columnIpAddress"><a href="{link controller=\'ACPSessionLog\' id=$sessionLog->sessionLogID}{/link}">{$sessionLog->getIpAddress()}</a>{if $sessionLog->hostname != $sessionLog->ipAddress}<br><a href="{link controller=\'ACPSessionLog\' id=$sessionLog->sessionLogID}{/link}">{$sessionLog->hostname}</a>{/if}</td> <td class="columnSmallText columnUserAgent" title="{$sessionLog->userAgent}"><a href="{link controller=\'ACPSessionLog\' id=$sessionLog->sessionLogID}{/link}">{$sessionLog->userAgent|truncate:75|tableWordwrap}</a></td> <td class="columnDate columnTime">{@$sessionLog->time|time}</td> <td class="columnDate columnLastActivityTime">{@$sessionLog->lastActivityTime|time}</td> <td class="columnDigits columnAccesses">{#$sessionLog->accesses}</td> {event name=\'columns\'} </tr> {/foreach} </tbody> </table> </div> <footer class="contentFooter"> {hascontent} <div class="paginationBottom"> {content}{@$pagesLinks}{/content} </div> {/hascontent} {hascontent} <nav class="contentFooterNavigation"> <ul> {content}{event name=\'contentFooterNavigation\'}{/content} </ul> </nav> {/hascontent} </footer> {/if} {include file=\'footer\'} ', 'D:\\xampp\\htdocs\\products52/acp/templates/compiled/0_wcf_1_acpSessionLogList.php', [ application => , data => , filename => ])
- #7 D:\xampp\htdocs\products52\lib\system\template\TemplateEngine.class.php (327):
- wcf\system\template\TemplateEngine->compileTemplate('acpSessionLogList', 'D:\\xampp\\htdocs\\products52/acp/templates/acpSessionLogList.tpl', 'D:\\xampp\\htdocs\\products52/acp/templates/compiled/0_wcf_1_acpSessionLogList.php', [ application => , data => , filename => ])
- #8 D:\xampp\htdocs\products52\lib\page\AbstractPage.class.php (323):
- wcf\system\template\TemplateEngine->display('acpSessionLogList', 'wcf')
- #9 D:\xampp\htdocs\products52\lib\page\AbstractPage.class.php (114):
- wcf\page\AbstractPage->show()
- #10 D:\xampp\htdocs\products52\lib\system\request\Request.class.php (83):
- wcf\page\AbstractPage->__run()
- #11 D:\xampp\htdocs\products52\lib\system\request\RequestHandler.class.php (107):
- wcf\system\request\Request->execute()
- #12 D:\xampp\htdocs\products52\acp\index.php (9):
- wcf\system\request\RequestHandler->handle('wcf', true)