HEX
Server: Apache/2.4.65 (Debian)
System: Linux web6 5.10.0-36-amd64 #1 SMP Debian 5.10.244-1 (2025-09-29) x86_64
User: innocamp (1028)
PHP: 7.4.33
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
File: //home/.Trash/i8s/public_html/wp-content/plugins/duplicator/src/Libs/Snap/SnapCode.php
<?php

/**
 *
 * @package   Duplicator
 * @copyright (c) 2022, Snap Creek LLC
 */

namespace Duplicator\Libs\Snap;

use Exception;

/**
 * Snap code generator utils
 */
class SnapCode
{
    /**
     * Get class code from file
     *
     * @param string $file              file path
     * @param bool   $wrapNamespace     if true wrap name space with brackets
     * @param bool   $removeFirstPHPTag if true removes opening php tah
     * @param bool   $removeBalnkLines  if true remove blank lines
     * @param bool   $removeComments    if true remove comments
     * @param bool   $required          if true and file can't be read then throw and exception else return empty string
     *
     * @return string
     */
    public static function getSrcClassCode(
        $file,
        $wrapNamespace = true,
        $removeFirstPHPTag = false,
        $removeBalnkLines = true,
        $removeComments = true,
        $required = true
    ) {
        if (!is_file($file) || !is_readable($file)) {
            if ($required) {
                throw new Exception('Code file "' . $file . '" don\'t exists');
            }
            return '';
        }

        if (($src = file_get_contents($file)) === false) {
            if ($required) {
                throw new Exception('Can\'t read code file "' . $file . '"');
            }
            return '';
        }

        if ($removeFirstPHPTag) {
            $src = preg_replace('/^(<\?php)/', "", $src);
        }

        if ($wrapNamespace) {
            $src = preg_replace('/(.*^\s*)(namespace.*?)(;)(.*)/sm', "$2 {\n$4}", $src);
        }

        if ($removeComments) {
            $src = preg_replace('/^\s*\/\*.*?\*\//sm', '', $src);
            $src = preg_replace('/^\s*\/\/.*$/m', '', $src);
        }

        if ($removeBalnkLines) {
            $src = preg_replace('/\n\s*\n/s', "\n", $src);
        }

        return $src;
    }
}