HEX
Server: LiteSpeed
System: Linux d8 4.18.0-553.30.1.lve.el8.x86_64 #1 SMP Tue Dec 3 01:21:19 UTC 2024 x86_64
User: wbwebdes (3015)
PHP: 8.1.31
Disabled: exec,system,passthru,shell_exec,proc_close,proc_open,dl,popen,show_source,posix_kill,posix_mkfifo,posix_getpwuid,posix_setpgid,posix_setsid,posix_setuid,posix_setgid,posix_seteuid,posix_setegid,posix_uname
Upload Files
File: /home/wbwebdes/domains/survey.wb-webdesign.com/private_html/application/core/LSFileHelper.php
<?php

/*
 * LimeSurvey
 * Copyright (C) 2019 The LimeSurvey Project Team / Carsten Schmitz
 * All rights reserved.
 * License: GNU/GPL License v2 or later, see LICENSE.php
 * LimeSurvey is free software. This version may have been modified pursuant
 * to the GNU General Public License, and as distributed it includes or
 * is derivative of works licensed under the GNU General Public License or
 * other free or open source software licenses.
 * See COPYRIGHT.php for copyright notices and details.
 *
 * Extend CFileHelper to allow update of
 * - magic database (can be set by MAGIC env, but unsure user can do it)
 * - magic file (return PHP array of extension by mime-type)
 * @author Denis Chenu
 * @version 1.0.0
 *
 */

class LSFileHelper extends CFileHelper
{

    /**
     * @inheritdoc
     * Can not call parent since usage of self::getMimeType
     * Set $magicFile (php array) from config (if is null)
     * @see https://www.yiiframework.com/doc/api/1.1/CFileHelper#getExtensionByMimeType-detail
     * @return string|null extension name. Null is returned if the extension cannot be determined.
     */
    public static function getExtensionByMimeType($file, $magicFile = null)
    {
        static $mimeTypes,$customMimeTypes = array();
        if (empty($magicFile) && Yii::app()->getConfig('magic_file')) {
            $magicFile = Yii::app()->getConfig('magic_file');
        }
        if (empty($magicFile) && $mimeTypes === null) {
            $mimeTypes=require(Yii::getPathOfAlias('application.core.utils.fileExtensions').'.php');
        } elseif ($magicFile !== null && !isset($customMimeTypes[$magicFile])) {
            $customMimeTypes[$magicFile] = require($magicFile);
        }
        $mime = self::getMimeType($file);
        if ($mime !== null) {
            $mime = strtolower($mime);
            if ($magicFile === null && isset($mimeTypes[$mime])) {
                return $mimeTypes[$mime];
            } elseif ($magicFile !== null && isset($customMimeTypes[$magicFile][$mime])) {
                return $customMimeTypes[$magicFile][$mime];
            }
        }
        return null;
    }

    /**
     * @inheritdoc
     * Set $magicFile (magic dataBase) from config (if is null)
     * Use the magic file set by user only iof needed (else keep pĥp default or MAGIC env)
     * @see https://www.php.net/manual/en/function.finfo-open.php
     * @return string|null string if the MIME type. Null is returned if the MIME type cannot be determined.
     */
    public static function getMimeType($file, $magicFile = null, $checkExtension = true)
    {
        $mimeType = parent::getMimeType($file, $magicFile, $checkExtension);
        /* Parent already return something valid : return */
        if ((!empty($magicFile) && $mimeType != "application/octet-stream")) {
            return $mimeType;
        }
        /* magic_database not set : return */
        if (is_null(App()->getConfig('magic_database'))) {
            return $mimeType;
        }
        /* Use parent with magic_database from config */
        $magicFile = Yii::app()->getConfig('magic_database');
        // Some PHP version can throw Notice with some files, disable this notice issue #15565
        $iErrorReportingState = error_reporting();
        error_reporting(0);
        $mimeType = parent::getMimeType($file, $magicFile, $checkExtension);
        error_reporting($iErrorReportingState);
        return $mimeType;
    }
}