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/category.edit.php
<?php

/**
 * Edits a category.
 *
 * 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 2003-2022 phpMyFAQ Team
 * @license http://www.mozilla.org/MPL/2.0/ Mozilla Public License Version 2.0
 * @link https://www.phpmyfaq.de
 * @since 2003-03-10
 */

use phpMyFAQ\Category;
use phpMyFAQ\Category\CategoryPermission;
use phpMyFAQ\Filter;
use phpMyFAQ\Helper\UserHelper;

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

$currentUserId = $user->getUserId();

if ($user->perm->hasPermission($user->getUserId(), 'editcateg')) {
    $categoryId = Filter::filterInput(INPUT_GET, 'cat', FILTER_VALIDATE_INT, 0);

    $category = new Category($faqConfig, [], false);
    $category->setUser($currentAdminUser);
    $category->setGroups($currentAdminGroups);

    $categoryPermission = new CategoryPermission($faqConfig);

    $userHelper = new UserHelper($user);

    $categoryData = $category->getCategoryData($categoryId);
    $userPermission = $categoryPermission->get(CategoryPermission::USER, [$categoryId]);

    if ($userPermission[0] == -1) {
        $allUsers = true;
        $restrictedUsers = false;
    } else {
        $allUsers = false;
        $restrictedUsers = true;
    }

    $groupPermission = $categoryPermission->get(CategoryPermission::GROUP, [$categoryId]);
    if ($groupPermission[0] == -1) {
        $allGroups = true;
        $restrictedGroups = false;
    } else {
        $allGroups = false;
        $restrictedGroups = true;
    }

    $header = $PMF_LANG['ad_categ_edit_1'] . ' "' . $categoryData->getName() . '" ' . $PMF_LANG['ad_categ_edit_2'];
    ?>
        <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-folder"></i> <?= $header ?>
          </h1>
        </div>

        <div class="row">
          <div class="col-lg-12">
          <form enctype="multipart/form-data" action="?action=updatecategory" method="post">
            <input type="hidden" name="id" value="<?= $categoryId ?>">
            <input type="hidden" id="catlang" name="catlang" value="<?= $categoryData->getLang() ?>">
            <input type="hidden" name="parent_id" value="<?= $categoryData->getParentId() ?>">
            <input type="hidden" name="csrf" value="<?= $user->getCsrfTokenFromSession() ?>">
            <input type="hidden" name="existing_image" value="<?= $categoryData->getImage() ?>"
                   id="pmf-category-existing-image">

            <div class="form-group row">
              <label class="col-lg-2 col-form-label">
                  <?= $PMF_LANG['ad_categ_titel'] ?>:
              </label>
              <div class="col-lg-4">
                <input type="text" id="name" name="name" value="<?= $categoryData->getName() ?>"
                       class="form-control">
              </div>
            </div>

            <div class="form-group row">
              <label class="col-lg-2 col-form-label">
                  <?= $PMF_LANG['ad_categ_desc'] ?>:
              </label>
              <div class="col-lg-4">
                <textarea id="description" name="description" rows="3"
                          class="form-control"><?= $categoryData->getDescription() ?></textarea>
              </div>
            </div>

            <div class="form-group row">
              <div class="offset-lg-2 col-lg-4">
                <div class="checkbox">
                  <label>
                    <input type="checkbox" name="active" value="1"
                        <?= (1 === (int)$categoryData->getActive() ? 'checked' : '') ?>>
                      <?= $PMF_LANG['ad_user_active'] ?>
                  </label>
                </div>
              </div>
            </div>

            <div class="form-group row">
              <div class="offset-lg-2 col-lg-4">
                <div class="checkbox">
                  <label>
                    <input type="checkbox" name="show_home" value="1"
                        <?= (1 === (int)$categoryData->getShowHome() ? 'checked' : '') ?>>
                      <?= $PMF_LANG['ad_user_show_home'] ?>
                  </label>
                </div>
              </div>
            </div>


            <div class="form-group row">
              <label class="col-lg-2 col-form-label" for="pmf-category-image-upload">
                  <?= $PMF_LANG['ad_category_image'] ?>
              </label>
              <div class="col-lg-4">
                <div class="form-group">
                  <div class="custom-file">
                    <input type="file" class="custom-file-input" name="image" id="pmf-category-image-upload"
                           value="<?= $categoryData->getImage() ?>">
                    <label class="custom-file-label" for="pmf-category-image-upload" id="pmf-category-image-label">
                        <?= $categoryData->getImage() ?>
                    </label>
                  </div>
                </div>
                <div class="form-group">
                  <button type="button" class="btn btn-info" id="button-reset-category-image">
                    Reset category image
                  </button>
                </div>
              </div>
            </div>

            <div class="form-group row">
              <label class="col-lg-2 col-form-label" for="user_id">
                  <?= $PMF_LANG['ad_categ_owner'] ?>
              </label>
              <div class="col-lg-4">
                <select id="user_id" name="user_id" class="form-control">
                    <?= $userHelper->getAllUserOptions($categoryData->getUserId()) ?>
                </select>
              </div>
            </div>
              <?php if ($faqConfig->get('security.permLevel') != 'basic') { ?>
                <div class="form-group row">
                  <label class="col-lg-2 col-form-label" for="group_id"><?= $PMF_LANG['ad_categ_moderator'] ?>:</label>
                  <div class="col-lg-4">
                    <select name="group_id" id="group_id" class="form-control">
                        <?= $user->perm->getAllGroupsOptions([$categoryData->getGroupId()], $user) ?>
                    </select>
                  </div>
                </div>

                <div class="form-group row">
                  <label class="col-lg-2 col-form-label" for="grouppermission">
                      <?= $PMF_LANG['ad_entry_grouppermission'] ?>
                  </label>
                  <div class="col-lg-4">
                    <div class="radio">
                      <input type="radio" id="grouppermission" name="grouppermission" value="all"
                          <?php echo($allGroups ? 'checked' : '') ?>>
                        <?= $PMF_LANG['ad_entry_all_groups'] ?>
                    </div>
                    <label class="radio">
                      <input type="radio" name="grouppermission" value="restricted"
                          <?php echo($restrictedGroups ? 'checked' : '') ?>>
                        <?= $PMF_LANG['ad_entry_restricted_groups'] ?>
                    </label>
                    <select name="restricted_groups[]" size="3" class="form-control" multiple>
                        <?= $user->perm->getAllGroupsOptions($groupPermission, $user) ?>
                    </select>
                  </div>
                </div>
              <?php } else { ?>
                <input type="hidden" name="grouppermission" value="all">
              <?php } ?>
            <div class="form-group row">
              <label class="col-lg-2 col-form-label">
                  <?= $PMF_LANG['ad_entry_userpermission'] ?>
              </label>
              <div class="col-lg-4">
                <div class="radio">
                  <input type="radio" name="userpermission" value="all"
                      <?= ($allUsers ? 'checked' : '') ?>>
                    <?= $PMF_LANG['ad_entry_all_users'] ?>
                </div>
                <div class="radio">
                  <input type="radio" name="userpermission" value="restricted"
                      <?= ($restrictedUsers ? 'checked' : '') ?>>
                    <?= $PMF_LANG['ad_entry_restricted_users'] ?>
                </div>
                <select name="restricted_users" class="form-control">
                    <?= $userHelper->getAllUserOptions($userPermission[0]) ?>
                </select>
              </div>
            </div>

            <div class="form-group row">
              <div class="offset-lg-2 col-lg-4">
                <button class="btn btn-primary" type="submit" name="submit">
                    <?= $PMF_LANG['ad_categ_updatecateg'] ?>
                </button>
              </div>
            </div>
          </form>
          </div>
        </div>
        <script>
          document.addEventListener('DOMContentLoaded', () => {
            bsCustomFileInput.init();

            const resetButton = document.getElementById('button-reset-category-image');
            const categoryExistingImage = document.getElementById('pmf-category-existing-image');
            const categoryImageInput = document.getElementById('pmf-category-image-upload');
            const categoryImageLabel = document.getElementById('pmf-category-image-label');
            resetButton.addEventListener('click', () => {
              categoryImageInput.value = '';
              categoryExistingImage.value = '';
              categoryImageLabel.innerHTML = '';
            });
          });
        </script>
    <?php
} else {
    echo $PMF_LANG['err_NotAuth'];
}