HEX
Server: Apache/2.4.6 (CentOS) OpenSSL/1.0.2k-fips PHP/7.4.30
System: Linux iZj6c1151k3ad370bosnmsZ 3.10.0-1160.76.1.el7.x86_64 #1 SMP Wed Aug 10 16:21:17 UTC 2022 x86_64
User: root (0)
PHP: 7.4.30
Disabled: NONE
Upload Files
File: /var/www/html/phpmyfaq/admin/record.comments.php
<?php

/**
 * Shows all comments in the categories and provides a link to delete comments.
 *
 * This Source Code Form is subject to the terms of the Mozilla Public License,
 * v. 2.0. If a copy of the MPL was not distributed with this file, You can
 * obtain one at http://mozilla.org/MPL/2.0/.
 *
 * @package phpMyFAQ
 * @author Thorsten Rinne <thorsten@phpmyfaq.de>
 * @copyright 2007-2022 phpMyFAQ Team
 * @license http://www.mozilla.org/MPL/2.0/ Mozilla Public License Version 2.0
 * @link https://www.phpmyfaq.de
 * @since 2007-03-04
 */

use phpMyFAQ\Category;
use phpMyFAQ\Comments;
use phpMyFAQ\Date;
use phpMyFAQ\Entity\CommentType;
use phpMyFAQ\Faq;
use phpMyFAQ\Strings;

if (!defined('IS_VALID_PHPMYFAQ')) {
    http_response_code(400);
    exit();
}

?>
  <div class="d-flex justify-content-between flex-wrap flex-md-nowrap align-items-center pt-3 pb-2 mb-3 border-bottom">
    <h1 class="h2">
      <i aria-hidden="true" class="fa fa-comments-o"></i>
        <?= $PMF_LANG['ad_comment_administration'] ?>
    </h1>
  </div>
<?php

echo '<div id="returnMessage"></div>';

if ($user->perm->hasPermission($user->getUserId(), 'delcomment')) {
    $comment = new Comments($faqConfig);
    $category = new Category($faqConfig, [], false);
    $category->setUser($currentAdminUser);
    $category->setGroups($currentAdminGroups);
    $faq = new Faq($faqConfig);
    $date = new Date($faqConfig);

    $category->buildCategoryTree();
    $faqComments = $comment->getAllComments(CommentType::FAQ);

    printf("<header><h3>%s</h3></header>\n", $PMF_LANG['ad_comment_faqs']);
    if (count($faqComments)) {
        ?>
      <form id="faqCommentSelection" name="faqCommentSelection" method="post" accept-charset="utf-8">
        <input type="hidden" name="ajax" value="comment"/>
        <input type="hidden" name="ajaxaction" value="delete"/>
        <table class="table table-striped">
            <?php
            $lastCommentId = 0;
            foreach ($faqComments as $faqComment) {
                if ($faqComment->getId() == $lastCommentId) {
                    continue;
                }
                ?>
              <tr id="comments_<?= $faqComment->getId() ?>">
                <td>
                  <label>
                    <input id="faq_comments[<?= $faqComment->getId() ?>]"
                           name="faq_comments[<?= $faqComment->getId() ?>]"
                           value="<?= $faqComment->getRecordId() ?>" type="checkbox">
                  </label>
                </td>
                <td>
                <span style="font-weight: bold;">
                    <a href="mailto:<?= $faqComment->getEmail() ?>">
                        <?= Strings::htmlentities($faqComment->getUsername()) ?>
                    </a> |
                    <?= $date->format(date('Y-m-d H:i', $faqComment->getDate())) ?> |
                    <a href="<?php printf(
                        '../?action=faq&cat=%d&id=%d&artlang=%s',
                        $faqComment->getCategoryId(),
                        $faqComment->getRecordId(),
                        $faqLangCode
                             ) ?>">
                        <?= $faq->getRecordTitle($faqComment->getRecordId()) ?>
                    </a>
                </span><br>
                    <?= Strings::htmlentities($faqComment->getComment()) ?>
                </td>
              </tr>
                <?php
                $lastCommentId = $faqComment->getId();
            }
            ?>
        </table>
        <div class="text-right">
          <button class="btn btn-danger" id="submitFaqComments" type="submit" name="submit">
              <?= $PMF_LANG['ad_entry_delete'] ?>
          </button>
        </div>
      </form>
        <?php
    } else {
        echo '<p><strong>n/a</strong></p>';
    }

    $newsComments = $comment->getAllComments(CommentType::NEWS);

    printf("<header><h3>%s</h3></header>\n", $PMF_LANG['ad_comment_news']);
    if (count($newsComments)) {
        ?>
      <form id="newsCommentSelection" name="newsCommentSelection" method="post" accept-charset="utf-8">
        <input type="hidden" name="ajax" value="comment"/>
        <input type="hidden" name="ajaxaction" value="delete"/>
        <table class="table table-striped">
            <?php
            foreach ($newsComments as $newsComment) { ?>
              <tr id="comments_<?= $newsComment->getId() ?>">
                <td>
                  <label>
                    <input id="news_comments[<?= $newsComment->getId() ?>]"
                           name="news_comments[<?= $newsComment->getId() ?>]"
                           value="<?= $newsComment->getRecordId() ?>" type="checkbox">
                  </label>
                </td>
                <td>
                <span style="font-weight: bold;">
                    <a href="mailto:<?= $newsComment->getEmail() ?>">
                        <?= $newsComment->getUsername() ?>
                    </a> |
                    <?= $date->format(date('Y-m-d H:i', $faqComment->getDate())) ?> |
                    <a href="<?php printf('../?action=news&id=%d&artlang=%s', $faqComment->getRecordId(), $faqLangCode) ?>">
                        <i class="fa fa-newspaper-o" aria-hidden="true"></i>
                    </a>
                </span><br/>
                    <?= $newsComment->getComment() ?>
                </td>
              </tr>
                <?php
            }
            ?>
        </table>
        <div class="text-right">
          <button class="btn btn-danger" id="submitNewsComments" type="submit" name="submit">
              <?= $PMF_LANG['ad_entry_delete'] ?>
          </button>
        </div>
      </form>
        <?php
    } else {
        echo '<p><strong>n/a</strong></p>';
    }
    ?>

  <script>
    (() => {
      $('#submitFaqComments').on('click', () => {
        deleteComments('faq');
        return false;
      });
      $('#submitNewsComments').on('click', () => {
        deleteComments('news');
        return false;
      });
    })();

    function deleteComments(type) {
      const savingIndicator = $('#pmf-admin-saving-data-indicator'),
        returnMessage = $('#returnMessage'),
        comments = $('#' + type + 'CommentSelection').serialize();

      returnMessage.empty();
      $.ajax({
        type: 'POST',
        url: 'index.php?action=ajax&ajax=comment',
        data: comments,
        success: function (msg) {
          if (msg === 1) {
            savingIndicator.html('<i class="fa fa-cog fa-spin fa-fw"></i><span class="sr-only">Deleting ...</span>');
            $('tr td input:checked').parent().parent().parent().fadeOut('slow');
            savingIndicator.fadeOut('slow');
            returnMessage.html('<p class="alert alert-success"><?= $PMF_LANG['ad_entry_commentdelsuc'] ?></p>');
          } else {
            returnMessage.html('<p class="alert alert-danger"><?= addslashes($PMF_LANG['ad_entry_commentdelfail']) ?></p>');
          }
        }
      });
      return false;
    }

  </script>
    <?php
} else {
    echo $PMF_LANG['err_NotAuth'];
}