IPSCONTENT; $return .= \IPS\Theme::i()->getTemplate( "global", \IPS\Request::i()->app )->userPhoto( $item->author() ); $return .= << IPSCONTENT; $return .= \IPS\Theme\Template::htmlspecialchars( $item->author()->name, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE ); $return .= << IPSCONTENT; if ( $container ): $return .= << IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'posted_in_container', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= << IPSCONTENT; $return .= \IPS\Theme\Template::htmlspecialchars( $container->_title, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE ); $return .= <<

IPSCONTENT; endif; $return .= << IPSCONTENT; $htmlsprintf = array(\IPS\DateTime::ts( $item->mapped('date') )->html(FALSE)); $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'date_replied', ENT_DISALLOWED, 'UTF-8', FALSE ), FALSE, array( 'htmlsprintf' => $htmlsprintf ) ); $return .= <<

IPSCONTENT; $val = "{$item::$title}"; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( $val, ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<

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

IPSCONTENT; $return .= \IPS\Theme\Template::htmlspecialchars( $reason, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE ); $return .= <<

IPSCONTENT; endif; $return .= <<getViewTrackingHash() ): $return .= <<
IPSCONTENT; $return .= \IPS\Theme::i()->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::i()->getTemplate( "global", "core" )->userLink( $comment->author(), $comment->warningRef(), NULL, $comment->isAnonymous() ); $return .= << IPSCONTENT; if ( !$comment->isAnonymous() ): $return .= << IPSCONTENT; $return .= \IPS\Member\Group::load( $comment->author()->member_group_id )->formattedName; $return .= << IPSCONTENT; endif; $return .= <<isAnonymous() and \IPS\Member::loggedIn()->modPermission('can_view_anonymous_posters') ): $return .= << IPSCONTENT; endif; $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 ( $menu = $comment->menu() ): $return .= <<hasContent() ): $return .= <<commentMultimodActions() ) ): $return .= << IPSCONTENT; endif; $return .= <<author()->member_id ): $return .= << IPSCONTENT; endif; $return .= << IPSCONTENT; if ( $comment->author()->member_id ): $return .= <<getTemplate( "global", "core" )->miniProfile( $comment, $comment->$idField ); $return .= <<
IPSCONTENT; if ( $comment->author()->hasHighlightedReplies() || ( \IPS\IPS::classUsesTrait( $comment, 'IPS\Content\Reactable' ) and $comment->isHighlighted() ) OR $comment->isFeatured() ): $return .= << IPSCONTENT; if ( $comment->author()->hasHighlightedReplies() ): $return .= << IPSCONTENT; $return .= \IPS\Member\Group::load( $comment->author()->member_group_id )->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; endif; $return .= <<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 ( $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 .= << {$comment->content()} IPSCONTENT; if ( $comment->editLine() ): $return .= <<editLine()} IPSCONTENT; endif; $return .= <<
IPSCONTENT; if ( ( $comment->hidden() !== 1 && \IPS\IPS::classUsesTrait( $comment, 'IPS\Content\Reactable' ) and \IPS\Settings::i()->reputation_enabled and $comment->hasReactionBar() ) || ( $comment->hidden() === 1 && ( $comment->canUnhide() || $comment->canDelete() ) ) || ( $comment->hidden() === 0 and $item->canComment() and $editorName ) ): $return .= << IPSCONTENT; $return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "gallery/front/global/comment", "commentControls:before", [ $item,$comment,$editorName,$app,$type,$class ] ); $return .= << IPSCONTENT; $return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "gallery/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; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'moderator_tools', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<
IPSCONTENT; endif; $return .= <<
IPSCONTENT; return $return; } function embedAlbumReview( $comment, $item, $url ) { $return = ''; $return .= <<gallery_nsfw ): $return .= << IPSCONTENT; $return .= \IPS\Theme::i()->getTemplate( "embed", "core" )->embedHeader( $comment, $item->mapped('title'), $comment->mapped('date'), $url ); $return .= << IPSCONTENT; if ( $item->asNode()->coverPhoto('small') ): $return .= << 
IPSCONTENT;
$return .= \IPS\Theme\Template::htmlspecialchars( $item->asNode()->name, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
$return .= <<<IPSCONTENT
IPSCONTENT; endif; $return .= <<asNode()->id ) ), ( $item->asNode()->sort_options == 'title' ) ? 'image_caption ASC' : \IPS\gallery\Image::$databasePrefix . \IPS\gallery\Image::$databaseColumnMap[ $item->asNode()->sort_options ] . ' DESC', 19 ); $return .= << IPSCONTENT; foreach ( $images as $albumImage ): $return .= <<
IPSCONTENT; if ( $albumImage->masked_file_name ): $return .= << IPSCONTENT; else: $return .= << IPSCONTENT; endif; $return .= << IPSCONTENT; $return .= \IPS\Theme::i()->getTemplate( "global", "gallery", 'front' )->nsfwOverlay( $albumImage, FALSE ); $return .= << IPSCONTENT; endforeach; $return .= <<asNode(); $return .= <<count_imgs > 19 ): $return .= <<
+ IPSCONTENT; $return .= \IPS\Theme\Template::htmlspecialchars( $albumNode->count_imgs - 19, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE ); $return .= <<
IPSCONTENT; endif; $return .= << IPSCONTENT; endif; $return .= << IPSCONTENT; $return .= \IPS\Theme::i()->getTemplate( "embed", "core" )->embedOriginalItem( $item ); $return .= << IPSCONTENT; $return .= \IPS\Theme::i()->getTemplate( "global", "core" )->rating( 'veryLarge', $comment->mapped('rating') ); $return .= <<mapped('votes_total') ): $return .= <<{$comment->helpfulLine()}

IPSCONTENT; endif; $return .= <<
{$comment->truncated(TRUE)}
IPSCONTENT; if ( \IPS\Settings::i()->reputation_enabled and \IPS\IPS::classUsesTrait( $comment, 'IPS\Content\Reactable' ) and \count( $comment->reactions() ) ): $return .= <<
  • IPSCONTENT; $return .= \IPS\Theme::i()->getTemplate( "global", "core" )->reactionOverview( $comment, TRUE, 'small' ); $return .= << IPSCONTENT; endif; $return .= << IPSCONTENT; return $return; } function embedAlbums( $albumItem, $albumNode, $url ) { $return = ''; $return .= <<gallery_nsfw ): $return .= << IPSCONTENT; $return .= \IPS\Theme::i()->getTemplate( "embed", "core" )->embedHeader( $albumItem, $albumItem->mapped('title'), $albumItem->mapped('date'), $url ); $return .= << IPSCONTENT; if ( $albumNode->coverPhoto('small') ): $return .= << 
IPSCONTENT;
$return .= \IPS\Theme\Template::htmlspecialchars( $albumItem->name, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
$return .= <<<IPSCONTENT
  • IPSCONTENT; endif; $return .= <<id ) ), ( $albumNode->sort_options == 'title' ) ? 'image_caption ASC' : \IPS\gallery\Image::$databasePrefix . \IPS\gallery\Image::$databaseColumnMap[ $albumNode->sort_options ] . ' DESC', 4 ); $return .= << IPSCONTENT; foreach ( $images as $albumImage ): $return .= <<
    IPSCONTENT; if ( $albumImage->masked_file_name ): $return .= << IPSCONTENT; elseif ( $albumImage->media ): $return .= << original_file_name )->url; $return .= << IPSCONTENT; else: $return .= << IPSCONTENT; endif; $return .= << IPSCONTENT; $return .= \IPS\Theme::i()->getTemplate( "global", "gallery", 'front' )->nsfwOverlay( $albumImage, FALSE ); $return .= << IPSCONTENT; endforeach; $return .= <<count_imgs > 4 ): $return .= <<
    + IPSCONTENT; $return .= \IPS\Theme\Template::htmlspecialchars( $albumNode->count_imgs - 4, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE ); $return .= <<
    IPSCONTENT; endif; $return .= << IPSCONTENT; endif; $return .= <<truncated(TRUE) ): $return .= <<
    {$desc}
    IPSCONTENT; endif; $return .= <<getTemplate( "embed", "core" )->embedItemStats( $albumItem, $albumNode->use_comments ); $return .= << IPSCONTENT; return $return; } function embedImage( $item, $url, $image=NULL ) { $return = ''; $return .= << IPSCONTENT; $return .= \IPS\Theme::i()->getTemplate( "embed", "core" )->embedHeader( $item, $item->mapped('title'), $item->mapped('date'), $url ); $return .= <<gallery_nsfw ): $return .= <<
    media ): $return .= <<masked_file_name )->url; $return .= << IPSCONTENT; if ( $item->media ): $return .= << IPSCONTENT; else: $return .= << $sprintf ) ); $return .= << 
IPSCONTENT;
$return .= \IPS\Theme\Template::htmlspecialchars( $item->caption, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
$return .= <<<IPSCONTENT
IPSCONTENT; endif; $return .= <<getTemplate( "global", "gallery", 'front' )->nsfwOverlay( $item, FALSE ); $return .= <<
    IPSCONTENT; if ( $desc = $item->truncated(TRUE) ): $return .= << {$desc}
    IPSCONTENT; endif; $return .= <<copyright ): $return .= << © IPSCONTENT; $return .= \IPS\Theme\Template::htmlspecialchars( $item->copyright, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE ); $return .= << IPSCONTENT; endif; $return .= <<getTemplate( "embed", "core" )->embedItemStats( $item ); $return .= << IPSCONTENT; if ( $item->directContainer() instanceof \IPS\gallery\Album ): $return .= <<

    IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'from_the_album', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= << IPSCONTENT; $return .= \IPS\Theme\Template::htmlspecialchars( $item->directContainer()->_title, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE ); $return .= <<"

    IPSCONTENT; $images = \IPS\Gallery\Image::getItemsWithPermission( array( array( 'image_album_id=?', $item->album_id ) ), ( $item->directContainer()->sort_options == 'title' ) ? 'image_caption ASC' : $item::$databasePrefix . $item::$databaseColumnMap[ $item->directContainer()->sort_options ] . ' DESC', 9 ); $return .= << IPSCONTENT; foreach ( $images as $albumImage ): $return .= <<
    IPSCONTENT; if ( $albumImage->masked_file_name ): $return .= << IPSCONTENT; elseif ( $albumImage->media ): $return .= << original_file_name )->url; $return .= << IPSCONTENT; else: $return .= << IPSCONTENT; endif; $return .= << IPSCONTENT; $return .= \IPS\Theme::i()->getTemplate( "global", "gallery", 'front' )->nsfwOverlay( $albumImage, FALSE ); $return .= << IPSCONTENT; endforeach; $return .= <<directContainer()->count_imgs > 9 ): $return .= <<
    + IPSCONTENT; $return .= \IPS\Theme\Template::htmlspecialchars( $item->directContainer()->count_imgs - 9, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE ); $return .= <<
    IPSCONTENT; endif; $return .= << IPSCONTENT; endif; $return .= << IPSCONTENT; endif; $return .= << IPSCONTENT; return $return; } function embedImageComment( $comment, $item, $url ) { $return = ''; $return .= <<gallery_nsfw ): $return .= << IPSCONTENT; $return .= \IPS\Theme::i()->getTemplate( "embed", "core" )->embedHeader( $comment, $item->mapped('title'), $comment->mapped('date'), $url ); $return .= <<
    IPSCONTENT; if ( $item->media ): $return .= << $sprintf ) ); $return .= << IPSCONTENT; else: $return .= << $sprintf ) ); $return .= << 
IPSCONTENT;
$return .= \IPS\Theme\Template::htmlspecialchars( $item->caption, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
$return .= <<<IPSCONTENT
IPSCONTENT; endif; $return .= <<getTemplate( "global", "gallery", 'front' )->nsfwOverlay( $item ); $return .= <<
    IPSCONTENT; $return .= \IPS\Theme::i()->getTemplate( "embed", "core" )->embedOriginalItem( $item ); $return .= <<
    {$comment->truncated(TRUE)}
    IPSCONTENT; if ( \IPS\Settings::i()->reputation_enabled and \IPS\IPS::classUsesTrait( $comment, 'IPS\Content\Reactable' ) and \count( $comment->reactions() ) ): $return .= <<
  • IPSCONTENT; $return .= \IPS\Theme::i()->getTemplate( "global", "core" )->reactionOverview( $comment, TRUE, 'small' ); $return .= << IPSCONTENT; endif; $return .= <<
  • IPSCONTENT; return $return; } function embedImageReview( $comment, $item, $url ) { $return = ''; $return .= <<gallery_nsfw ): $return .= << IPSCONTENT; $return .= \IPS\Theme::i()->getTemplate( "embed", "core" )->embedHeader( $comment, $item->mapped('title'), $comment->mapped('date'), $url ); $return .= <<
    IPSCONTENT; if ( $item->media ): $return .= << $sprintf ) ); $return .= << IPSCONTENT; else: $return .= << $sprintf ) ); $return .= << 
IPSCONTENT;
$return .= \IPS\Theme\Template::htmlspecialchars( $item->caption, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
$return .= <<<IPSCONTENT
IPSCONTENT; endif; $return .= <<getTemplate( "global", "gallery", 'front' )->nsfwOverlay( $item ); $return .= <<
    IPSCONTENT; $return .= \IPS\Theme::i()->getTemplate( "embed", "core" )->embedOriginalItem( $item ); $return .= <<
    IPSCONTENT; $return .= \IPS\Theme::i()->getTemplate( "global", "core" )->rating( 'veryLarge', $comment->mapped('rating') ); $return .= <<mapped('votes_total') ): $return .= <<{$comment->helpfulLine()}

    IPSCONTENT; endif; $return .= <<
    {$comment->truncated(TRUE)}
    IPSCONTENT; if ( \IPS\Settings::i()->reputation_enabled and \IPS\IPS::classUsesTrait( $comment, 'IPS\Content\Reactable' ) and \count( $comment->reactions() ) ): $return .= <<
  • IPSCONTENT; $return .= \IPS\Theme::i()->getTemplate( "global", "core" )->reactionOverview( $comment, TRUE, 'small' ); $return .= << IPSCONTENT; endif; $return .= <<
  • IPSCONTENT; return $return; } function featuredComment( $comment, $id, $commentLang='__defart_comment' ) { $return = ''; $return .= << 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::i()->getTemplate( "global", "core" )->userPhoto( $comment['comment']->author(), 'mini', $comment['comment']->warningRef() ); $return .= <<

    IPSCONTENT; $return .= \IPS\Theme::i()->getTemplate( "global", "core" )->userLink( $comment['comment']->author(), $comment['comment']->warningRef() ); $return .= << IPSCONTENT; $return .= \IPS\Theme::i()->getTemplate( "global", "core" )->reputationBadge( $comment['comment']->author() ); $return .= <<

    url(), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE ); $return .= <<{$comment['comment']->dateLine()} IPSCONTENT; if ( $comment['comment']->editLine() ): $return .= <<language()->addToStack( htmlspecialchars( 'edited_lc', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<

    {$comment['comment']->truncated( TRUE )}
    IPSCONTENT; if ( $comment['note'] ): $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( 'gallery-featured-comments' ); $return .= << IPSCONTENT; return $return; } function manageFollowNodeRow( $table, $headers, $rows ) { $return = ''; $return .= <<_followData['follow_rel_id'], ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE ); $return .= <<
    IPSCONTENT; if ( $coverImage = $row->coverPhoto('small') ): $return .= << IPSCONTENT; else: $return .= << IPSCONTENT; endif; $return .= <<

    IPSCONTENT; $return .= \IPS\Theme\Template::htmlspecialchars( $row->_description, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE ); $return .= <<
    IPSCONTENT; endif; $return .= << IPSCONTENT; endforeach; $return .= <<_followData['follow_rel_id'], ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE ); $return .= <<unread() ): $return .= <<
    IPSCONTENT; $image = \IPS\File::get( 'gallery_Images', $row->small_file_name )->url; $return .= <<
    IPSCONTENT; endif; $return .= <<
    • IPSCONTENT; $val = ( $row->_followData['follow_added'] instanceof \IPS\DateTime ) ? $row->_followData['follow_added'] : \IPS\DateTime::ts( $row->_followData['follow_added'] );$return .= $val->html(); $return .= <<
    • IPSCONTENT; if ( $row->_followData['follow_notify_freq'] == 'none' ): $return .= << IPSCONTENT; else: $return .= << IPSCONTENT; endif; $return .= <<language()->addToStack( htmlspecialchars( $val, ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<
    IPSCONTENT; $return .= \IPS\Theme::i()->getTemplate( "system", "core" )->manageFollow( $row->_followData['follow_app'], $row->_followData['follow_area'], $row->_followData['follow_rel_id'] ); $return .= <<
    IPSCONTENT; if ( $table->canModerate() ): $return .= <<
    IPSCONTENT; endif; $return .= << IPSCONTENT; endforeach; $return .= <<gallery_nsfw and !isset( (\IPS\Request::i()->cookie['nsfwImageOptIn']) ) and $image and $image->nsfw ): $return .= << IPSCONTENT; if ( $showButton ): $return .= << IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'gallery_image_is_nsfw', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= << IPSCONTENT; endif; $return .= << IPSCONTENT; if ( $review->author()->member_id ): $return .= <<getTemplate( "global", "core" )->miniProfile( $review, $review->id ); $return .= <<
    IPSCONTENT; if ( $review->hidden() AND $review->hidden() != -2 ): $return .= << IPSCONTENT; $return .= \IPS\Theme\Template::htmlspecialchars( $review->hiddenBlurb(), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE ); $return .= << IPSCONTENT; elseif ( $review->hidden() == -2 ): $return .= << IPSCONTENT; $return .= \IPS\Theme\Template::htmlspecialchars( $review->deletedBlurb(), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE ); $return .= << IPSCONTENT; endif; $return .= <<
      IPSCONTENT; foreach ( range( 1, \intval( \IPS\Settings::i()->reviews_rating_out_of ) ) as $i ): $return .= << IPSCONTENT; endforeach; $return .= <<
       IPSCONTENT; if ( $review->mapped('votes_total') ): $return .= <<{$review->helpfulLine()}
    IPSCONTENT; endif; $return .= << {$review->content()} IPSCONTENT; if ( $review->editLine() ): $return .= <<editLine()} IPSCONTENT; endif; $return .= << IPSCONTENT; if ( $review->hasAuthorResponse() ): $return .= <<

    IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'review_response_title', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= << IPSCONTENT; if ( $review->canEditResponse() OR $review->canDeleteResponse() ): $return .= << IPSCONTENT; endif; $return .= <<
    {$review->mapped('author_response')}
    IPSCONTENT; if ( $review->canEditResponse() OR $review->canDeleteResponse() ): $return .= << IPSCONTENT; if ( $review->canEditResponse() ): $return .= << IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'edit', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= << IPSCONTENT; endif; $return .= <<canDeleteResponse() ): $return .= << IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'delete', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= << IPSCONTENT; endif; $return .= << IPSCONTENT; endif; $return .= << IPSCONTENT; endif; $return .= <<hidden() !== 1 ): $return .= <<member_id and ( !$review->mapped('votes_data') or !array_key_exists( \IPS\Member::loggedIn()->member_id, json_decode( $review->mapped('votes_data'), TRUE ) ) ) and $review->author()->member_id != \IPS\Member::loggedIn()->member_id ): $return .= << IPSCONTENT; endif; $return .= << IPSCONTENT; if ( ( \IPS\Member::loggedIn()->member_id and ( !$review->mapped('votes_data') or !array_key_exists( \IPS\Member::loggedIn()->member_id, json_decode( $review->mapped('votes_data'), TRUE ) ) ) ) || $review->canEdit() || $review->canDelete() || $review->canHide() || $review->canUnhide() || ( $review->hidden() !== 1 && \IPS\IPS::classUsesTrait( $review, 'IPS\Content\Reactable' ) and \IPS\Settings::i()->reputation_enabled and $review->hasReactionBar() ) ): $return .= << IPSCONTENT; if ( $review->canEdit() || $review->canDelete() || $review->canHide() || $review->canUnhide() || ( $review->hidden() !== 1 && $review->canRespond() ) ): $return .= << IPSCONTENT; $return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "gallery/front/global/review", "commentControls:inside-start", [ $item,$review,$editorName,$app,$type ] ); $return .= <<hidden() === 1 && ( $review->canUnhide() || $review->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() || $review->canSplit() ): $return .= << IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'options', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<

    IPSCONTENT; endif; $return .= <<gallery_nsfw ): $return .= << IPSCONTENT; foreach ( $images as $k => $image ): $return .= <<
    IPSCONTENT; if ( $image->small_file_name ): $return .= << IPSCONTENT; elseif ( $image->media ): $return .= <<masked_file_name ): $return .= <<masked_file_name )->url; $return .= << original_file_name )->url; $return .= <<masked_file_name ): $return .= << IPSCONTENT; else: $return .= << IPSCONTENT; endif; $return .= << IPSCONTENT; $return .= \IPS\Theme::i()->getTemplate( "global", "gallery", 'front' )->nsfwOverlay( $image, FALSE ); $return .= << IPSCONTENT; endforeach; $return .= << IPSCONTENT; endif; $return .= <<application->directory == 'core' and \IPS\Dispatcher::i()->module and \IPS\Dispatcher::i()->module->key == 'search' ) ): $return .= << IPSCONTENT; $return .= \IPS\Content\Search\Result::preDisplay( $indexData['index_content'] ); $return .= << IPSCONTENT; endif; $return .= <<gallery_nsfw ): $return .= << IPSCONTENT; foreach ( $images as $k => $image ): $return .= <<
    IPSCONTENT; if ( $image->small_file_name ): $return .= << IPSCONTENT; elseif ( $image->media ): $return .= <<masked_file_name ): $return .= <<masked_file_name )->url; $return .= << original_file_name )->url; $return .= <<masked_file_name ): $return .= << IPSCONTENT; else: $return .= << IPSCONTENT; endif; $return .= << IPSCONTENT; $return .= \IPS\Theme\Template::htmlspecialchars( $image->caption, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE ); $return .= << IPSCONTENT; if ( ( $image->directContainer()->allow_comments && $image->container()->allow_comments && count($image->comments()) > 0 ) ): $return .= << IPSCONTENT; $return .= \IPS\Theme\Template::htmlspecialchars( \count( $image->comments() ), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE ); $return .= << IPSCONTENT; endif; $return .= <<getTemplate( "global", "gallery", 'front' )->nsfwOverlay( $image, FALSE ); $return .= << IPSCONTENT; endforeach; $return .= << IPSCONTENT; endif; $return .= <<
    language()->addToStack( htmlspecialchars( 'view_this_image', ENT_DISALLOWED, 'UTF-8', FALSE ), FALSE, array( 'sprintf' => $sprintf ) ); $return .= << 
IPSCONTENT;
$return .= \IPS\Theme\Template::htmlspecialchars( $itemData['image_caption'], ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
$return .= <<<IPSCONTENT
IPSCONTENT; $return .= \IPS\Theme::i()->getTemplate( "global", "gallery", 'front' )->nsfwOverlay( $imageObj, FALSE ); $return .= << IPSCONTENT; endif; $return .= << IPSCONTENT; if ( $reviewRating !== NULL ): $return .= <<getTemplate( "global", "core" )->rating( 'medium', $reviewRating ); $return .= << IPSCONTENT; if ( trim( $indexData['index_content'] ) !== '' ): $return .= <<application->directory == 'core' and \IPS\Dispatcher::i()->module and \IPS\Dispatcher::i()->module->key == 'search' ) ): $return .= << IPSCONTENT; $return .= \IPS\Content\Search\Result::preDisplay( $indexData['index_content'] ); $return .= << IPSCONTENT; endif; $return .= << IPSCONTENT; endif; $return .= <<
    language()->addToStack( htmlspecialchars( 'view_this_image', ENT_DISALLOWED, 'UTF-8', FALSE ), FALSE, array( 'sprintf' => $sprintf ) ); $return .= << 
IPSCONTENT;
$return .= \IPS\Theme\Template::htmlspecialchars( $itemData['image_caption'], ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
$return .= <<<IPSCONTENT
IPSCONTENT; $return .= \IPS\Theme::i()->getTemplate( "global", "gallery", 'front' )->nsfwOverlay( $imageObj, FALSE ); $return .= << IPSCONTENT; endif; $return .= <<gallery_nsfw ): $return .= <<
    language()->addToStack( htmlspecialchars( 'view_this_image', ENT_DISALLOWED, 'UTF-8', FALSE ), FALSE, array( 'sprintf' => $sprintf ) ); $return .= << 
IPSCONTENT;
$return .= \IPS\Theme\Template::htmlspecialchars( $indexData['index_title'], ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
$return .= <<<IPSCONTENT
IPSCONTENT; $return .= \IPS\Theme::i()->getTemplate( "global", "gallery", 'front' )->nsfwOverlay( $imageObj, FALSE ); $return .= << IPSCONTENT; endif; $return .= << IPSCONTENT; if ( $albumData ): $return .= << IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'from_the_album', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= << IPSCONTENT; $return .= \IPS\Theme\Template::htmlspecialchars( $albumData['album_name'], ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE ); $return .= <<

    IPSCONTENT; endif; $return .= <<application->directory == 'core' and \IPS\Dispatcher::i()->module and \IPS\Dispatcher::i()->module->key == 'search' ) ): $return .= << IPSCONTENT; $return .= \IPS\Content\Search\Result::preDisplay( $indexData['index_content'] ); $return .= << IPSCONTENT; endif; $return .= <<© IPSCONTENT; $return .= \IPS\Theme\Template::htmlspecialchars( $itemData['image_copyright'], ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE ); $return .= << IPSCONTENT; endif; $return .= << IPSCONTENT; endif; $return .= <<