public function toString() { $radix = $this->getBuilderParamManager()->getParam('radix'); $board = $this->getParamManager()->getParam('board'); $controller_method = $this->getBuilderParamManager()->getParam('controller_method', 'thread'); $thread_id = $this->getBuilderParamManager()->getParam('thread_id', 0); $form = $this->getForm(); if ($thread_id > 0) { echo $form->open(['enctype' => 'multipart/form-data', 'onsubmit' => 'fuel_set_csrf_token(this);', 'action' => $radix->shortname . '/submit', 'id' => 'postform']); echo $form->hidden('csrf_token', $this->getSecurity()->getCsrfToken()); echo $form->hidden('id', 'postform'); echo isset($backend_vars['last_limit']) ? $form->hidden('reply_last_limit', $backend_vars['last_limit']) : ''; } ?> <div class="content"> <?php foreach ($board as $key => $post) { if (isset($post['op'])) { $op_bulk = $post['op']; $op = new Comment($this->getContext(), $op_bulk); $op->setControllerMethod($controller_method); if ($op_bulk->media !== null) { $op_media = new Media($this->getContext(), $op_bulk); } else { $op_media = null; } ?> <div id="<?php echo $op->num; ?> "> <?php if ($op_media !== null) { ?> <?php if ($op_media->getMediaStatus($this->getRequest()) !== 'banned') { ?> <span><?php echo _i('File:') . ' ' . ByteSize::formatBinary($op_media->media_size, 0) . ', ' . $op_media->media_w . 'x' . $op_media->media_h . ', ' . $op_media->getMediaFilenameProcessed(); ?> <?php echo '<!-- ' . substr($op_media->media_hash, 0, -2) . '-->'; ?> </span> <?php if (!$op->radix->hide_thumbnails || $this->getAuth()->hasAccess('maccess.mod')) { ?> [<a href="<?php echo $this->getUri()->create($op->radix->shortname . '/search/image/' . $op_media->getSafeMediaHash()); ?> "><?php echo _i('View Same'); ?> </a>] [<a href="http://google.com/searchbyimage?image_url=<?php echo $op_media->getThumbLink($this->getRequest()); ?> ">Google</a>] [<a href="http://iqdb.org/?url=<?php echo $op_media->getThumbLink($this->getRequest()); ?> ">iqdb</a>] [<a href="http://saucenao.com/search.php?url=<?php echo $op_media->getThumbLink($this->getRequest()); ?> ">SauceNAO</a>] <?php } ?> <br /> <?php } ?> <?php if ($op_media->getMediaStatus($this->getRequest()) === 'banned') { ?> <img src="<?php echo $this->getAssetManager()->getAssetLink('images/banned-image.png'); ?> " width="150" height="150" class="thumb"/> <?php } elseif ($op_media->getMediaStatus($this->getRequest()) !== 'normal') { ?> <a href="<?php echo $op_media->getMediaLink($this->getRequest()) ? $op_media->getMediaLink($this->getRequest()) : $op_media->getRemoteMediaLink($this->getRequest()); ?> " rel="noreferrer"> <img src="<?php echo $this->getAssetManager()->getAssetLink('images/missing-image.jpg'); ?> " width="150" height="150" class="thumb"/> </a> <?php } else { ?> <a href="<?php echo $op_media->getMediaLink($this->getRequest()) ? $op_media->getMediaLink($this->getRequest()) : $op_media->getRemoteMediaLink($this->getRequest()); ?> " rel="noreferrer"> <?php if (!$this->getAuth()->hasAccess('maccess.mod') && $op_media->spoiler) { ?> <img src="<?php echo $this->getAssetManager()->getAssetLink('images/spoiler.png'); ?> " width="100" height="100" class="thumb" alt="[SPOILER]" /> <?php } else { ?> <img src="<?php echo $op_media->getThumbLink($this->getRequest()); ?> " width="<?php echo $op_media->preview_w; ?> " height="<?php echo $op_media->preview_h; ?> " class="thumb" alt="<?php echo $op->num; ?> " /> <?php } ?> </a> <?php } ?> <?php } ?> <label> <input type="checkbox" name="delete[]" value="<?php echo $op->doc_id; ?> " /> <span class="filetitle"><?php echo $op->getTitleProcessed(); ?> </span> <span class="postername<?php echo $op->capcode == 'M' ? ' mod' : ''; echo $op->capcode == 'A' ? ' admin' : ''; echo $op->capcode == 'D' ? ' developer' : ''; ?> "><?php echo $op->email && $op->email !== 'noko' ? '<a href="mailto:' . rawurlencode($op->email) . '">' . $op->getNameProcessed() . '</a>' : $op->getNameProcessed(); ?> </span> <span class="postertrip<?php echo $op->capcode == 'M' ? ' mod' : ''; echo $op->capcode == 'A' ? ' admin' : ''; echo $op->capcode == 'D' ? ' developer' : ''; ?> "><?php echo $op->getTripProcessed(); ?> </span> <span class="poster_hash"><?php if ($op->getPosterHashProcessed()) { ?> ID:<?php echo $op->getPosterHashProcessed(); } ?> </span> <?php if ($op->capcode == 'M') { ?> <span class="postername mod">## <?php echo _i('Mod'); ?> </span> <?php } ?> <?php if ($op->capcode == 'A') { ?> <span class="postername admin">## <?php echo _i('Admin'); ?> </span> <?php } ?> <?php if ($op->capcode == 'D') { ?> <span class="postername admin">## <?php echo _i('Developer'); ?> </span> <?php } ?> <?php echo gmdate('D d M H:i:s Y', $op->getOriginalTimestamp()); ?> <?php if ($op->poster_country !== null) { ?> <span class="poster_country"><span title="<?php echo e($op->poster_country_name); ?> " class="flag flag-<?php echo strtolower($op->poster_country); ?> "></span></span><?php } ?> </label> <?php if ($thread_id == 0) { ?> <a class="js" href="<?php echo $this->getUri()->create(array($op->radix->shortname, $controller_method, $op->num)) . '#' . $op->num; ?> ">No.<?php echo $op->num; ?> </a> <?php } else { ?> <a class="js" href="<?php echo $this->getUri()->create(array($op->radix->shortname, $controller_method, $op->num)) . '#' . $op->num; ?> ">No.</a><a class="js" href="javascript:replyQuote('>><?php echo $op->num; ?> \n')"><?php echo $op->num; ?> </a> <?php } ?> <?php if (isset($op_media) && $op_media->spoiler == 1) { ?> <img class="inline" src="<?php echo $this->getAssetManager()->getAssetLink('images/icons/spoiler-icon.png'); ?> " alt="[SPOILER]" title="<?php echo _i('The image in this post has been marked spoiler.'); ?> "><?php } ?> <?php if ($op->deleted == 1 && $op->timestamp_expired == 0) { ?> <img class="inline" src="<?php echo $this->getAssetManager()->getAssetLink('images/icons/file-delete-icon.png'); ?> " alt="[DELETED]" title="<?php echo _i('This thread was prematurely deleted.'); ?> "><?php } ?> <?php if ($op->deleted == 1 && $op->timestamp_expired != 0) { ?> <img class="inline" src="<?php echo $this->getAssetManager()->getAssetLink('images/icons/file-delete-icon.png'); ?> " alt="[DELETED]" title="<?php echo _i('This thread was deleted on %s.', gmdate('M d, Y \\a\\t H:i:s e', $op->timestamp_expired)); ?> "><?php } ?> <?php if ($op->sticky == 1) { ?> <img class="inline" src="<?php echo $this->getAssetManager()->getAssetLink('images/icons/sticky-icon.png'); ?> " alt="[STICKY]" title="<?php echo _i('This thread has been stickied.'); ?> "><?php } ?> <?php if ($op->locked == 1) { ?> <img class="inline" src="<?php echo $this->getAssetManager()->getAssetLink('images/icons/locked-icon.png'); ?> " alt="[LOCKED]" title="<?php echo _i('This thread has been locked.'); ?> "><?php } ?> [<a href="<?php echo $this->getUri()->create(array($op->radix->shortname, 'thread', $op->num)); ?> "><?php echo _i('Reply'); ?> </a>] <?php if (isset($post['omitted']) && $post['omitted'] > 50) { ?> [<a href="<?php echo $this->getUri()->create($op->radix->shortname . '/last/50/' . $op->num); ?> "><?php echo _i('Last 50'); ?> </a>]<?php } ?> <?php if ($op->radix->archive) { ?> [<a href="//boards.4chan.org/<?php echo $op->radix->shortname . '/thread/' . $op->num; ?> "><?php echo _i('Original'); ?> </a>]<?php } ?> <div class="quoted-by" style="display: <?php echo $op->getBacklinks() ? 'block' : 'none'; ?> "> <?php echo _i('Quoted By:'); ?> <?php echo $op->getBacklinks() ? implode(' ', $op->getBacklinks()) : ''; ?> </div> <blockquote><p><?php echo $op->getCommentProcessed(); ?> </p></blockquote> <?php if (isset($post['omitted']) && $post['omitted'] > 0) { ?> <span class="omitted"> <?php if (isset($post['images_omitted']) && $post['images_omitted'] > 0) { ?> <?php echo $post['omitted'] + $post['images_omitted'] . ' ' . _n('post', 'posts', $post['omitted'] + $post['images_omitted']); ?> <?php echo ' ' . _n('omitted', 'omitted', $post['omitted'] + $post['images_omitted']); ?> . <?php } else { ?> <?php echo $post['omitted'] . ' ' . _n('post', 'posts', $post['omitted']); ?> <?php echo ' ' . _n('omitted', 'omitted', $post['omitted'] + $post['images_omitted']); ?> . <?php } ?> </span> <?php } ?> </div> <?php } ?> <?php if (isset($post['posts'])) { $post_counter = 0; $image_counter = 0; $board_comment_view = $this->getBuilder()->createPartial('post', 'board_comment'); // reusable Comment object not to create one every loop $comment = new Comment($this->getContext()); $comment->setControllerMethod($controller_method); $media_obj = new Media($this->getContext()); foreach ($post['posts'] as $p) { /** @var CommentBulk $p */ $post_counter++; if ($p->media !== null) { $image_counter++; } $comment->setBulk($p); // set the $media to null and leave the Media object in existence if ($p->media !== null) { $media_obj->setBulk($p); $media = $media_obj; } else { $media = null; } $board_comment_view->getParamManager()->setParams(['p' => $comment, 'p_media' => $media, 'modifiers' => $this->getBuilderParamManager()->getParam('modifiers', false), 'post_counter' => $post_counter, 'image_counter' => $image_counter]); // refreshes the string $board_comment_view->doBuild(); echo $board_comment_view->build(); // remove extra strings from the objects $board_comment_view->clearBuilt(); $p->comment->clean(); if ($p->media !== null) { $p->media->clean(); } } } ?> <?php if ($thread_id > 0) { ?> <?php echo $this->getBuilder()->isPartial('tools_reply_box') ? $this->getBuilder()->getPartial('tools_reply_box')->build() : ''; ?> <?php } ?> <br class="newthr" /> <hr /> <?php } ?> </div> <?php if ($thread_id > 0) { echo $form->close(); } ?> <?php }