$warning ): $return .= << IPSCONTENT; if ( $idx === 0 ): $return .= <<

IPSCONTENT; $sprintf = array(\IPS\Member::load( $warning->moderator )->name); $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'you_have_been_warned', ENT_DISALLOWED, 'UTF-8', FALSE ), FALSE, array( 'sprintf' => $sprintf ) ); $return .= << IPSCONTENT; if ( \IPS\Member::loggedIn()->isBanned() ): $return .= <<note_member ): $return .= <<{$warning->note_member}

IPSCONTENT; endif; $return .= << IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'must_acknowledge_msg', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<
IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'view_warning_details', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= << IPSCONTENT; endif; $return .= << IPSCONTENT; endif; $return .= << IPSCONTENT; endforeach; $return .= <<

IPSCONTENT; $return .= \IPS\Theme\Template::htmlspecialchars( $item->mapped('title'), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE ); $return .= <<
IPSCONTENT; $pluralize = array( $commentCount ); $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'num_replies', ENT_DISALLOWED, 'UTF-8', FALSE ), FALSE, array( 'pluralize' => $pluralize ) ); $return .= << IPSCONTENT; $pluralize = array( $item->mapped('views') ); $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'num_views_with_number', ENT_DISALLOWED, 'UTF-8', FALSE ), FALSE, array( 'pluralize' => $pluralize ) ); $return .= <<

IPSCONTENT; if ( \IPS\Application::appIsEnabled('cloud') AND 1 == 2 ): $return .= << IPSCONTENT; $return .= \IPS\Theme::i()->getTemplate( "analytics", "cloud" )->analyticsItem( $item ); $return .= <<

IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'active_members', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= << IPSCONTENT; if ( count( $members ) ): $return .= <<

IPSCONTENT; return $return; } function breadcrumb( $position='top', $markRead=TRUE ) { $return = ''; $return .= <<breadcrumb ) and $position === "mobile" ): $return .= <<
  1. IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'home', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<
  2. IPSCONTENT; $last = end(\IPS\Output::i()->breadcrumb); $return .= <<breadcrumb as $k => $b ): $return .= << IPSCONTENT; $return .= \IPS\Theme\Template::htmlspecialchars( $b[1], ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE ); $return .= << IPSCONTENT; else: $return .= << IPSCONTENT; $return .= \IPS\Theme\Template::htmlspecialchars( $b[1], ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE ); $return .= << IPSCONTENT; endif; $return .= << IPSCONTENT; $return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "core/front/global/breadcrumb", "feed:before", [ $position,$markRead ] ); $return .= << IPSCONTENT; $return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "core/front/global/breadcrumb", "feed:inside-start", [ $position,$markRead ] ); $return .= <<canAccessModule( \IPS\Application\Module::get( 'core', 'discover' ) ) ): $return .= << IPSCONTENT; $return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "core/front/global/breadcrumb", "feed:inside-end", [ $position,$markRead ] ); $return .= << IPSCONTENT; $return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "core/front/global/breadcrumb", "feed:after", [ $position,$markRead ] ); $return .= << IPSCONTENT; return $return; } function buttons( $buttons ) { $return = ''; $return .= << IPSCONTENT; foreach ( $buttons as $button ): $return .= << language()->addToStack( htmlspecialchars( $val, ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= << $v ): $return .= << IPSCONTENT; if ( $button['icon'] ): $return .= << IPSCONTENT; endif; $return .= <<language()->addToStack( htmlspecialchars( $val, ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= << IPSCONTENT; endif; $return .= << IPSCONTENT; endforeach; $return .= << IPSCONTENT; return $return; } function cachingLog( $cacheLog ) { $return = ''; $return .= << IPSCONTENT; foreach ( $cacheLog as $i => $log ): $return .= << IPSCONTENT; if ( $log[0] === 'get' ): $return .= <<get IPSCONTENT; $return .= \IPS\Theme\Template::htmlspecialchars( $log[1], ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE ); $return .= << IPSCONTENT; elseif ( $log[0] === 'set' ): $return .= <<set IPSCONTENT; $return .= \IPS\Theme\Template::htmlspecialchars( $log[1], ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE ); $return .= << IPSCONTENT; elseif ( $log[0] === 'check' ): $return .= <<check IPSCONTENT; $return .= \IPS\Theme\Template::htmlspecialchars( $log[1], ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE ); $return .= << IPSCONTENT; elseif ( $log[0] === 'delete' ): $return .= <<delete IPSCONTENT; $return .= \IPS\Theme\Template::htmlspecialchars( $log[1], ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE ); $return .= << IPSCONTENT; else: $return .= << 1 ): $return .= << IPSCONTENT; endif; $return .= <<Redis IPSCONTENT; $return .= \IPS\Theme\Template::htmlspecialchars( $log[1], ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE ); $return .= << IPSCONTENT; endif; $return .= <<
    IPSCONTENT; if ( ! empty( $log[2] ) ): $return .= << IPSCONTENT; $return .= \IPS\Theme\Template::htmlspecialchars( $log[2], ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE ); $return .= <<
    IPSCONTENT; endif; $return .= << IPSCONTENT; $return .= \IPS\Theme\Template::htmlspecialchars( $log[3], ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE ); $return .= << IPSCONTENT; endif; $return .= <<
    IPSCONTENT; endforeach; $return .= << IPSCONTENT; return $return; } function carouselNavigation( $id, $classes='', $hiddenByDefault = FALSE ) { $return = ''; $return .= <<
    IPSCONTENT; return $return; } function comment( $item, $comment, $editorName, $app, $type, $class='' ) { $return = ''; $return .= <<getViewTrackingHash() ): $return .= << IPSCONTENT; $return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "core/front/global/comment", "commentWrap:inside-start", [ $item,$comment,$editorName,$app,$type,$class ] ); $return .= <<
    IPSCONTENT; $return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "core/front/global/comment", "commentUserPhoto:before", [ $item,$comment,$editorName,$app,$type,$class ] ); $return .= << IPSCONTENT; $return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "core/front/global/comment", "commentUserPhoto:inside-start", [ $item,$comment,$editorName,$app,$type,$class ] ); $return .= <<getTemplate( "global", "core" )->userPhoto( $comment->author(), 'fluid', $comment->warningRef() ); $return .= <<isAnonymous() ) and $comment->author()->canHaveAchievements() and \IPS\core\Achievements\Rank::show() and $rank = $comment->author()->rank() ): $return .= <<html( 'ipsAvatarStack__rank' )} IPSCONTENT; endif; $return .= << IPSCONTENT; $return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "core/front/global/comment", "commentUserPhoto:after", [ $item,$comment,$editorName,$app,$type,$class ] ); $return .= << IPSCONTENT; $return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "core/front/global/comment", "commentUsername:before", [ $item,$comment,$editorName,$app,$type,$class ] ); $return .= << IPSCONTENT; $return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "core/front/global/comment", "commentUsername:inside-start", [ $item,$comment,$editorName,$app,$type,$class ] ); $return .= << IPSCONTENT; $return .= \IPS\Theme::i()->getTemplate( "global", "core" )->userLink( $comment->author(), $comment->warningRef(), NULL, \IPS\IPS::classUsesTrait( $comment, 'IPS\Content\Anonymous' ) ? $comment->isAnonymous() : FALSE ); $return .= << IPSCONTENT; if ( \IPS\IPS::classUsesTrait( $comment, 'IPS\Content\Anonymous' ) AND !$comment->isAnonymous() ): $return .= << IPSCONTENT; if ( $comment->author()->modShowBadge() ): $return .= << IPSCONTENT; $return .= \IPS\Member\Group::load( $comment->author()->member_group_id )->formattedName; $return .= << IPSCONTENT; else: $return .= <<author()->member_group_id )->formattedName; $return .= << IPSCONTENT; endif; $return .= <<isAnonymous() and \IPS\Member::loggedIn()->modPermission('can_view_anonymous_posters') ): $return .= << IPSCONTENT; endif; $return .= << IPSCONTENT; $return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "core/front/global/comment", "commentUsername:after", [ $item,$comment,$editorName,$app,$type,$class ] ); $return .= << IPSCONTENT; if ( ! \IPS\Output::i()->reduceLinks() ): $return .= << IPSCONTENT; endif; $return .= <<dateLine()} IPSCONTENT; if ( ! \IPS\Output::i()->reduceLinks() ): $return .= << IPSCONTENT; endif; $return .= <<editLine() ): $return .= <<language()->addToStack( htmlspecialchars( 'edited_lc', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<
    IPSCONTENT; if ( $comment->author()->hasHighlightedReplies() || ( \IPS\IPS::classUsesTrait( $comment, 'IPS\Content\Reactable' ) and $comment->isHighlighted() ) OR ( \IPS\IPS::classUsesTrait( $comment, 'IPS\Content\MetaData' ) and $comment->isFeatured() ) ): $return .= << IPSCONTENT; $return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "core/front/global/comment", "commentBadges:inside-start", [ $item,$comment,$editorName,$app,$type,$class ] ); $return .= <<author()->hasHighlightedReplies() ): $return .= << IPSCONTENT; $return .= \IPS\Member\Group::load( $comment->author()->highlightedGroup() )->name; $return .= << IPSCONTENT; endif; $return .= <<isFeatured() ): $return .= << IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'this_is_a_featured_post', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= << IPSCONTENT; endif; $return .= <<isHighlighted() ): $return .= << IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'this_is_a_popular_comment', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= << IPSCONTENT; endif; $return .= << IPSCONTENT; $return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "core/front/global/comment", "commentBadges:after", [ $item,$comment,$editorName,$app,$type,$class ] ); $return .= <<commentMultimodActions() ) ): $return .= << IPSCONTENT; endif; $return .= <<menu()} IPSCONTENT; if ( $comment->author()->member_id ): $return .= << IPSCONTENT; $return .= \IPS\Theme::i()->getTemplate( "global", "core" )->miniProfileWrap( $comment->author(), $comment->$idField, 'comment', remoteLoading:true ); $return .= <<
    IPSCONTENT; if ( \IPS\Member::loggedIn()->modPermission('mod_see_warn') and $comment->warning ): $return .= <<getTemplate( "global", "core" )->commentWarned( $comment ); $return .= <<hidden() AND $comment->hidden() != -2 ): $return .= << IPSCONTENT; $return .= \IPS\Theme\Template::htmlspecialchars( $comment->hiddenBlurb(), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE ); $return .= << IPSCONTENT; elseif ( \IPS\IPS::classUsesTrait( $comment, 'IPS\Content\Hideable' ) AND $comment->hidden() == -2 ): $return .= << IPSCONTENT; $return .= \IPS\Theme\Template::htmlspecialchars( $comment->deletedBlurb(), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE ); $return .= << IPSCONTENT; endif; $return .= <<hidden() === 1 && $comment->author()->member_id == \IPS\Member::loggedIn()->member_id ): $return .= << IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'comment_awaiting_approval', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<
    IPSCONTENT; endif; $return .= << IPSCONTENT; $return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "core/front/global/comment", "comment:inside-start", [ $item,$comment,$editorName,$app,$type,$class ] ); $return .= <<content()} IPSCONTENT; if ( \IPS\IPS::classUsesTrait( $comment, 'IPS\Content\EditHistory' ) and $comment->editLine() ): $return .= <<editLine()} IPSCONTENT; endif; $return .= << IPSCONTENT; $return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "core/front/global/comment", "comment:after", [ $item,$comment,$editorName,$app,$type,$class ] ); $return .= << IPSCONTENT; if ( ( ( ( \IPS\IPS::classUsesTrait( $comment, 'IPS\Content\Hideable' ) AND $comment->hidden() !== 1 ) || ! \IPS\IPS::classUsesTrait( $comment, 'IPS\Content\Hideable' ) ) && \IPS\IPS::classUsesTrait( $comment, 'IPS\Content\Reactable' ) and \IPS\Settings::i()->reputation_enabled and $comment->hasReactionBar() ) || ( ( ( \IPS\IPS::classUsesTrait( $comment, 'IPS\Content\Hideable' ) AND $comment->hidden() === 1 and ( $comment->canUnhide() || $comment->canDelete() ) ) || ! \IPS\IPS::classUsesTrait( $comment, 'IPS\Content\Hideable' ) ) && ( $comment->canDelete() ) ) || ( ( ( \IPS\IPS::classUsesTrait( $comment, 'IPS\Content\Hideable' ) AND $comment->hidden() === 0 ) || ! \IPS\IPS::classUsesTrait( $comment, 'IPS\Content\Hideable' ) ) and $item->canComment() and $editorName ) ): $return .= << IPSCONTENT; $return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "core/front/global/comment", "commentFooter:inside-start", [ $item,$comment,$editorName,$app,$type,$class ] ); $return .= << IPSCONTENT; $return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "core/front/global/comment", "commentControls:inside-start", [ $item,$comment,$editorName,$app,$type,$class ] ); $return .= <<hidden() === 1 && ( $comment->canUnhide() || $comment->canDelete() ) ): $return .= <<canUnhide() ): $return .= << IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'approve', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= << IPSCONTENT; endif; $return .= <<canDelete() ): $return .= << IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'delete', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= << IPSCONTENT; endif; $return .= <<canEdit() || $comment->canSplit() || $comment->canHide() ): $return .= << IPSCONTENT; endif; $return .= <<hidden() === 0 ) || ! \IPS\IPS::classUsesTrait( $comment, 'IPS\Content\Hideable' ) ) and $item->canComment() and $editorName ): $return .= <<
  3. IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'quote', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<
  4. IPSCONTENT; if ( \IPS\Application::appIsEnabled('cloud') ): $return .= << IPSCONTENT; $return .= \IPS\Theme::i()->getTemplate( "spam", "cloud" )->spam( $comment, FALSE ); $return .= << IPSCONTENT; endif; $return .= << IPSCONTENT; $return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "core/front/global/comment", "commentControls:inside-end", [ $item,$comment,$editorName,$app,$type,$class ] ); $return .= << IPSCONTENT; $return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "core/front/global/comment", "commentControls:after", [ $item,$comment,$editorName,$app,$type,$class ] ); $return .= <<hidden() !== 1 ) || ! \IPS\IPS::classUsesTrait( $comment, 'IPS\Content\Hideable' ) ) && \IPS\IPS::classUsesTrait( $comment, 'IPS\Content\Reactable' ) and \IPS\Settings::i()->reputation_enabled and $comment->hasReactionBar() ): $return .= <<getTemplate( "global", "core" )->reputation( $comment ); $return .= << IPSCONTENT; $return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "core/front/global/comment", "commentFooter:after", [ $item,$comment,$editorName,$app,$type,$class ] ); $return .= <<reduceLinks() ): $return .= <<getTemplate( "global", "core" )->sharemenu( $comment ); $return .= << IPSCONTENT; $return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "core/front/global/comment", "commentWrap:after", [ $item,$comment,$editorName,$app,$type,$class ] ); $return .= <<isIgnored() ): $return .= << IPSCONTENT; $sprintf = array($comment->author()->name); $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'ignoring_content', ENT_DISALLOWED, 'UTF-8', FALSE ), FALSE, array( 'sprintf' => $sprintf ) ); $return .= << IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'options', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= << IPSCONTENT; endif; $return .= << IPSCONTENT; endforeach; $return .= <<page == $table->pages AND $table->extra instanceof \IPS\Content ): $return .= <<
    IPSCONTENT; $return .= \IPS\Theme::i()->getTemplate( "global", "core" )->userPhoto( $table->extra->author(), 'mini' ); $return .= <<

    extra->isAnonymous() : FALSE )}

    IPSCONTENT; $val = ( $table->extra->mapped('date') instanceof \IPS\DateTime ) ? $table->extra->mapped('date') : \IPS\DateTime::ts( $table->extra->mapped('date') );$return .= $val->html(useTitle: true); $return .= <<

    {$edit['old']}
    IPSCONTENT; endif; $return .= << IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'no_edit_history', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= << IPSCONTENT; endif; $return .= <<dummyLoading ): $return .= <<getPaginationKey() != 'page' ): $return .= << IPSCONTENT; if ( \count( $rows ) ): $return .= << IPSCONTENT; $return .= $table->rowsTemplate[0]->{$table->rowsTemplate[1]}( $table, $headers, $rows ); $return .= << IPSCONTENT; else: $return .= << IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'no_edit_history', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= << IPSCONTENT; endif; $return .= <<pages > 1 ): $return .= <<
    IPSCONTENT; $return .= \IPS\Theme::i()->getTemplate( "global", "core", 'global' )->pagination( $table->baseUrl, $table->pages, $table->page, $table->limit, TRUE, $table->getPaginationKey() ); $return .= <<
    IPSCONTENT; endif; $return .= << IPSCONTENT; return $return; } function commentEditLine( $comment, $supportsReason=FALSE ) { $return = ''; $return .= << IPSCONTENT; $htmlsprintf = array(\IPS\DateTime::ts( $comment->mapped('edit_time') )->html(FALSE), ( $comment->mapped('edit_member_name') ) ? htmlspecialchars( $comment->mapped('edit_member_name'), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE ) : \IPS\Member::loggedIn()->language()->addToStack('guest')); $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'date_edited', ENT_DISALLOWED, 'UTF-8', FALSE ), FALSE, array( 'htmlsprintf' => $htmlsprintf ) ); $return .= << IPSCONTENT; if ( $supportsReason && $comment->mapped('edit_reason') ): $return .= << IPSCONTENT; $return .= \IPS\Theme\Template::htmlspecialchars( $comment->mapped('edit_reason'), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE ); $return .= <<edit_log == 2 and ( \IPS\Settings::i()->edit_log_public or \IPS\Member::loggedIn()->modPermission('can_view_editlog') ) ): $return .= <<( IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'edit_history', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= << IPSCONTENT; if ( !$comment->mapped('edit_show') AND \IPS\Member::loggedIn()->modPermission('can_view_editlog') ): $return .= << IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'comment_edit_show_anyways', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= << IPSCONTENT; return $return; } function commentMultimod( $item, $type='comment' ) { $return = ''; $return .= << IPSCONTENT; $method = $type . 'MultimodActions'; $return .= <<$method() and \count( $actions ) ): $return .= <<

    IPSCONTENT; if ( $member->isAdmin() ): $return .= <<language()->addToStack( htmlspecialchars( 'error_technical_details_desc', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<hasAcpRestriction( 'core', 'support', 'system_logs_view' ) ): $return .= <<language()->addToStack( htmlspecialchars( 'error_technical_details_logs', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<language()->addToStack( htmlspecialchars( 'error_technical_details_dev', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= << IPSCONTENT; endif; $return .= << IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'error_page_code', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= << IPSCONTENT; $return .= \IPS\Theme\Template::htmlspecialchars( $code, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE ); $return .= <<

    IPSCONTENT; if ( ( \IPS\Member::loggedIn()->isAdmin() and \IPS\Member::loggedIn()->hasAcpRestriction( 'core', 'support', 'get_support' ) ) || ( \IPS\Member::loggedIn()->canUseContactUs() and !( \IPS\Dispatcher::i()->application->directory == 'core' and \IPS\Dispatcher::i()->module and \IPS\Dispatcher::i()->module->key == 'contact' ) ) || !\IPS\Member::loggedIn()->member_id ): $return .= << IPSCONTENT; if ( \IPS\Member::loggedIn()->isAdmin() and \IPS\Member::loggedIn()->hasAcpRestriction( 'core', 'support', 'get_support' ) ): $return .= << IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'get_support', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= << IPSCONTENT; elseif ( \IPS\Member::loggedIn()->canUseContactUs() and !( \IPS\Dispatcher::i()->application->directory == 'core' and \IPS\Dispatcher::i()->module and \IPS\Dispatcher::i()->module->key == 'contact' ) ): $return .= << IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'contact_admin', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= << IPSCONTENT; endif; $return .= <<member_id ): $return .= << IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'sign_in', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= << IPSCONTENT; endif; $return .= << IPSCONTENT; endif; $return .= << IPSCONTENT; return $return; } function favico( ) { $return = ''; $return .= <<icons_favicon ): $return .= <<icons_favicon ); $return .= <<
    {$comment['comment']->truncated( TRUE )}
    IPSCONTENT; if ( \IPS\IPS::classUsesTrait( $comment['comment'], 'IPS\Content\Reactable' ) and \IPS\Settings::i()->reputation_enabled ): $return .= << IPSCONTENT; $return .= \IPS\Theme::i()->getTemplate( "global", "core" )->reactionOverview( $comment['comment'] ); $return .= << IPSCONTENT; endif; $return .= <<

    IPSCONTENT; $return .= \IPS\Theme\Template::htmlspecialchars( $comment['note'], ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE ); $return .= << IPSCONTENT; if ( isset( $comment['featured_by'] ) ): $return .= << IPSCONTENT; $htmlsprintf = array($comment['featured_by']->link()); $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'recommended_by', ENT_DISALLOWED, 'UTF-8', FALSE ), FALSE, array( 'htmlsprintf' => $htmlsprintf ) ); $return .= << IPSCONTENT; endif; $return .= << IPSCONTENT; elseif ( isset( $comment['featured_by'] ) ): $return .= <<link()); $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'recommended_by', ENT_DISALLOWED, 'UTF-8', FALSE ), FALSE, array( 'htmlsprintf' => $htmlsprintf ) ); $return .= <<

    IPSCONTENT; endif; $return .= <<

    IPSCONTENT; $val = "{$titleLang}"; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( $val, ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= << IPSCONTENT; $return .= \IPS\Theme::i()->getTemplate( "global", "core" )->carouselNavigation( 'topic-featured-posts' ); $return .= << IPSCONTENT; if ( \count( $comments ) ): $return .= << IPSCONTENT; foreach ( $comments AS $id => $comment ): $return .= <<getTemplate( "global", "core" )->featuredComment( $comment, $id, $commentLang ); $return .= << IPSCONTENT; endif; $return .= << IPSCONTENT; return $return; } function findComment( $header, $item, $comment ) { $return = ''; $return .= <<isAjax() ): $return .= << IPSCONTENT; $return .= \IPS\Theme\Template::htmlspecialchars( $header, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE ); $return .= <<

    IPSCONTENT; endif; $return .= <<isHighlighted() ): $return .= <<hidden() ): $return .= <<
    $comment->author()->member_id, 'username' => $comment->author()->name, 'timestamp' => $comment->mapped('date'), 'contentapp' => $comment::$application, 'contenttype' => $item::$module, 'contentclass' => $itemClassSafe, 'contentid' => $item->id, 'contentcommentid' => $comment->$idField) ), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE ); $return .= <<getViewTrackingHash() ): $return .= <<
    IPSCONTENT; if ( \IPS\Settings::i()->reputation_enabled and \IPS\IPS::classUsesTrait( $comment, 'IPS\Content\Reactable' ) and $comment->isHighlighted() ): $return .= << IPSCONTENT; endif; $return .= << IPSCONTENT; if ( $comment->hidden() === 1 && $comment->author()->member_id == \IPS\Member::loggedIn()->member_id ): $return .= << IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'comment_awaiting_approval', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= << IPSCONTENT; endif; $return .= <<content()}
    IPSCONTENT; if ( $comment->hidden() !== 1 && \IPS\IPS::classUsesTrait( $comment, 'IPS\Content\Reactable' ) and \IPS\Settings::i()->reputation_enabled ): $return .= << IPSCONTENT; $return .= \IPS\Theme::i()->getTemplate( "global", "core" )->reputation( $comment ); $return .= <<
    IPSCONTENT; return $return; } function follow( $app, $area, $id, $count ) { $return = ''; $return .= << IPSCONTENT; $return .= \IPS\Theme::i()->getTemplate( "global", "core" )->followButton( $app, $area, $id, $count ); $return .= << IPSCONTENT; return $return; } function followButton( $app, $area, $id, $count ) { $return = ''; $return .= <<member_id ): $return .= <<following( $app, $area, $id ) ): $return .= << IPSCONTENT; if ( \IPS\Member::loggedIn()->group['g_view_followers'] ): $return .= << IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->formatNumberShort( $count ); $return .= << IPSCONTENT; endif; $return .= << IPSCONTENT; $return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "core/front/global/followButton", "following:after", [ $app,$area,$id,$count ] ); $return .= <<
    IPSCONTENT; return $return; } function globalTemplate( $title,$html,$location=array() ) { $return = ''; $return .= << getTemplate( "global", "core", 'front' )->htmlDataAttributes( ); $return .= << IPSCONTENT; $return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "core/front/global/globalTemplate", "head:before", [ $title,$html,$location ] ); $return .= << IPSCONTENT; $return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "core/front/global/globalTemplate", "head:inside-start", [ $title,$html,$location ] ); $return .= << IPSCONTENT; $return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "core/front/global/globalTemplate", "title:before", [ $title,$html,$location ] ); $return .= << IPSCONTENT; $return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "core/front/global/globalTemplate", "title:inside-start", [ $title,$html,$location ] ); $return .= <<getTitle( $title ), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE ); $return .= << IPSCONTENT; $return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "core/front/global/globalTemplate", "title:after", [ $title,$html,$location ] ); $return .= <<isEditingTheme() and $theme->edit_in_progress ): $return .= << if (window.self === window.top) { window.location = ' IPSCONTENT; $return .= \IPS\Http\Url::internal( "app=core&module=system&controller=themeeditor", null, "theme_editor", array(), 0 ); $return .= << IPSCONTENT; endif; $return .= <<core_datalayer_enabled ): $return .= <<getTemplate( "global", "core", 'front' )->includeDataLayer( ); $return .= <<getTemplate( "global", "core", 'front' )->prefersColorSchemeLoad( ); $return .= <<getTemplate( "global", "core", 'front' )->loadGuestColorScheme( ); $return .= <<ga_enabled ): $return .= <<ga_code; $return .= <<matomo_enabled ): $return .= <<matomo_code; $return .= <<googletag_enabled AND !(\IPS\Settings::i()->core_datalayer_use_gtm AND \IPS\Settings::i()->core_datalayer_enabled) ): $return .= <<googletag_head_code; $return .= <<maxmind_key and \IPS\Settings::i()->maxmind_id and \IPS\Settings::i()->maxmind_tracking_code ): $return .= << (function() { let mmapiws = window.__mmapiws = window.__mmapiws || {}; mmapiws.accountId = " IPSCONTENT; $return .= \IPS\Theme\Template::htmlspecialchars( \IPS\Settings::i()->maxmind_id, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE ); $return .= << IPSCONTENT; endif; $return .= <<getTemplate( "global", "core", 'global' )->includeCSS( ); $return .= <<getTemplate( "global", "core", 'global' )->includeMeta( ); $return .= <<getTemplate( "global", "core", 'front' )->favico( ); $return .= << IPSCONTENT; $return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "core/front/global/globalTemplate", "head:after", [ $title,$html,$location ] ); $return .= <<bodyAttributes as $k => $v ): $return .= << IPSCONTENT; $return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "core/front/global/globalTemplate", "body:inside-start", [ $title,$html,$location ] ); $return .= << IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'jump_to_content', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= << IPSCONTENT; if ( \IPS\Settings::i()->googletag_enabled AND !(\IPS\Settings::i()->core_datalayer_use_gtm AND \IPS\Settings::i()->core_datalayer_enabled) ): $return .= <<googletag_noscript_code; $return .= <<core_datalayer_enabled ): $return .= <<getTemplate( "global", "core", 'front' )->includeDataLayerBody( ); $return .= <<getTemplate( "global", "core", 'front' )->pwaRefresh( ); $return .= <<getTemplate( "global", "core", 'front' )->pwaInstall( ); $return .= <<getHeaderAndFooter( 'header' ); $return .= << IPSCONTENT; $return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "core/front/global/globalTemplate", "layout:inside-start", [ $title,$html,$location ] ); $return .= <<getLayoutValue('global_view_mode') == 'side' ): $return .= <<bodyClasses ) ): $return .= <<getTemplate( "global", "core" )->navigationPanel( ); $return .= << IPSCONTENT; $return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "core/front/global/globalTemplate", "app:inside-start", [ $title,$html,$location ] ); $return .= <<bodyClasses ) ): $return .= << IPSCONTENT; $return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "core/front/global/globalTemplate", "mobileHeader:inside-start", [ $title,$html,$location ] ); $return .= <<getTemplate( "global", "core" )->logo( 'mobile' ); $return .= <<getTemplate( "global", "core" )->mobileNavHeader( ); $return .= << IPSCONTENT; $return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "core/front/global/globalTemplate", "mobileHeader:after", [ $title,$html,$location ] ); $return .= <<getTemplate( "global", "core" )->announcementTop( ); $return .= <<bodyClasses ) ): $return .= <<getTemplate( "global", "core" )->breadcrumb( 'mobile' ); $return .= <<getLayoutValue('global_view_mode') == 'side' ): $return .= <<bodyClasses ) ): $return .= << IPSCONTENT; $return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "core/front/global/globalTemplate", "navPanelBreadcrumbs:inside-start", [ $title,$html,$location ] ); $return .= << IPSCONTENT; $return .= \IPS\Theme::i()->getTemplate( "global", "core" )->breadcrumb( 'top' ); $return .= <<getTemplate( "global", "core" )->userBar( ); $return .= << IPSCONTENT; $return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "core/front/global/globalTemplate", "navPanelBreadcrumbs:inside-end", [ $title,$html,$location ] ); $return .= << IPSCONTENT; $return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "core/front/global/globalTemplate", "navPanelBreadcrumbs:after", [ $title,$html,$location ] ); $return .= << IPSCONTENT; $return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "core/front/global/globalTemplate", "header:inside-start", [ $title,$html,$location ] ); $return .= <<isEditingTheme() || array_intersect(["1","2","3"], $theme->theme_editor_data['header']) ): $return .= <<theme_editor_data['header'])) ): $return .= <<