Admidio/admidio

View on GitHub
adm_program/modules/documents-files/rename.php

Summary

Maintainability
A
0 mins
Test Coverage
<?php
/**
 ***********************************************************************************************
 * Rename a file or a folder of documents & files module
 *
 * @copyright The Admidio Team
 * @see https://www.admidio.org/
 * @license https://www.gnu.org/licenses/gpl-2.0.html GNU General Public License v2.0 only
 *
 * Parameters:
 *
 * folder_uuid :  UUID of the folder that should be renamed
 * file_uuid   :  UUID of the file that should be renamed
 ***********************************************************************************************
 */
use Admidio\Exception;
use Admidio\UserInterface\Form;

try {
    require_once(__DIR__ . '/../../system/common.php');
    require(__DIR__ . '/../../system/login_valid.php');

    // Initialize and check the parameters
    $getFolderUuid = admFuncVariableIsValid($_GET, 'folder_uuid', 'uuid');
    $getFileUuid = admFuncVariableIsValid($_GET, 'file_uuid', 'uuid');

    // set headline of the script
    if ($getFileUuid !== '') {
        $headline = $gL10n->get('SYS_EDIT_FILE');
    } else {
        $headline = $gL10n->get('SYS_EDIT_FOLDER');
    }

    // check if the module is enabled and disallow access if it's disabled
    if (!$gSettingsManager->getBool('documents_files_module_enabled')) {
        throw new Exception('SYS_MODULE_DISABLED');
    }

    $gNavigation->addUrl(CURRENT_URL, $headline);

    // check the rights of the current folder
    // user must be administrator or must have the right to upload files
    $targetFolder = new TableFolder($gDb);
    $targetFolder->getFolderForDownload($getFolderUuid);

    if (!$targetFolder->hasUploadRight()) {
        throw new Exception('SYS_NO_RIGHTS');
    }

    $originalName = '';
    $fileType = '';

    if ($getFileUuid !== '') {
        // get recordset of current file from database
        $file = new TableFile($gDb);
        $file->getFileForDownload($getFileUuid);

        $originalName = pathinfo($file->getValue('fil_name'), PATHINFO_FILENAME);
        $fileType = pathinfo($file->getValue('fil_name'), PATHINFO_EXTENSION);
        $userFileUploaded = new User($gDb, $gProfileFields, $file->getValue('fil_usr_id'));
        $nameUserCreated = $userFileUploaded->getValue('FIRST_NAME') . ' ' . $userFileUploaded->getValue('LAST_NAME');
        $timestampUserCreated = $file->getValue('fil_timestamp');

        $formValues['new_name'] = $originalName;
        $formValues['new_description'] = $file->getValue('fil_description');
    } else {
        // main folder should not be renamed
        if ($targetFolder->getValue('fol_fol_id_parent') === '') {
            throw new Exception('SYS_INVALID_PAGE_VIEW');
        }

        // read folder data to rename the folder
        $originalName = $targetFolder->getValue('fol_name');
        $userFolderCreated = new User($gDb, $gProfileFields, $targetFolder->getValue('fol_usr_id'));
        $nameUserCreated = $userFolderCreated->getValue('FIRST_NAME') . ' ' . $userFolderCreated->getValue('LAST_NAME');
        $timestampUserCreated = $targetFolder->getValue('fol_timestamp');

        $formValues['new_name'] = $originalName;
        $formValues['new_description'] = $targetFolder->getValue('fol_description');
    }

    // create html page object
    $page = new HtmlPage('admidio-documents-files-rename', $headline);

    // create html form
    $form = new Form(
        'edit_download_form',
        'modules/documents-files.rename.tpl',
        SecurityUtils::encodeUrl(ADMIDIO_URL . FOLDER_MODULES . '/documents-files/documents_files_function.php', array('mode' => 'rename', 'folder_uuid' => $getFolderUuid, 'file_uuid' => $getFileUuid)),
        $page
    );
    if ($getFileUuid !== '') {
        $form->addInput(
            'file_type',
            $gL10n->get('SYS_FILE_TYPE'),
            $fileType,
            array('property' => Form::FIELD_DISABLED, 'class' => 'form-control-small')
        );
    }
    $form->addInput(
        'previous_name',
        $gL10n->get('SYS_PREVIOUS_NAME'),
        $originalName,
        array('property' => Form::FIELD_DISABLED)
    );
    $form->addInput(
        'new_name',
        $gL10n->get('SYS_NEW_NAME'),
        $formValues['new_name'],
        array('maxLength' => 255, 'property' => Form::FIELD_REQUIRED, 'helpTextId' => 'SYS_FILE_NAME_RULES')
    );
    $form->addMultilineTextInput(
        'new_description',
        $gL10n->get('SYS_DESCRIPTION'),
        $formValues['new_description'],
        4,
        array('maxLength' => 255)
    );
    $form->addSubmitButton(
        'btn_rename',
        $gL10n->get('SYS_SAVE'),
        array('icon' => 'bi-check-lg', 'class' => 'offset-sm-3')
    );

    $page->assignSmartyVariable('nameUserCreated', $nameUserCreated);
    $page->assignSmartyVariable('timestampUserCreated', $timestampUserCreated);
    $form->addToHtmlPage();
    $gCurrentSession->addFormObject($form);
    $page->show();
} catch (Exception $e) {
    $gMessage->show($e->getMessage());
}