!C99Shell v. 2.5 [PHP 8 Update] [24.05.2025]!

Software: Apache/2.4.41 (Ubuntu). PHP/8.0.30 

uname -a: Linux apirnd 5.4.0-204-generic #224-Ubuntu SMP Thu Dec 5 13:38:28 UTC 2024 x86_64 

uid=33(www-data) gid=33(www-data) groups=33(www-data) 

Safe-mode: OFF (not secure)

/var/www/html/queuepro/vendor/laravel/framework/src/Illuminate/Foundation/Console/   drwxrwxr-x
Free 13.26 GB of 57.97 GB (22.88%)
Home    Back    Forward    UPDIR    Refresh    Search    Buffer    Encoder    Tools    Proc.    FTP brute    Sec.    SQL    PHP-code    Update    Self remove    Logout    


Viewing file:     VendorPublishCommand.php (7.67 KB)      -rwxrwxr-x
Select action/file-type:
(+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php

namespace Illuminate\Foundation\Console;

use 
Illuminate\Console\Command;
use 
Illuminate\Filesystem\Filesystem;
use 
Illuminate\Foundation\Events\VendorTagPublished;
use 
Illuminate\Support\Arr;
use 
Illuminate\Support\ServiceProvider;
use 
Illuminate\Support\Str;
use 
League\Flysystem\Filesystem as Flysystem;
use 
League\Flysystem\Local\LocalFilesystemAdapter as LocalAdapter;
use 
League\Flysystem\MountManager;
use 
League\Flysystem\UnixVisibility\PortableVisibilityConverter;
use 
League\Flysystem\Visibility;

class 
VendorPublishCommand extends Command
{
    
/**
     * The filesystem instance.
     *
     * @var \Illuminate\Filesystem\Filesystem
     */
    
protected $files;

    
/**
     * The provider to publish.
     *
     * @var string
     */
    
protected $provider null;

    
/**
     * The tags to publish.
     *
     * @var array
     */
    
protected $tags = [];

    
/**
     * The console command signature.
     *
     * @var string
     */
    
protected $signature 'vendor:publish {--force : Overwrite any existing files}
                    {--all : Publish assets for all service providers without prompt}
                    {--provider= : The service provider that has assets you want to publish}
                    {--tag=* : One or many tags that have assets you want to publish}'
;

    
/**
     * The name of the console command.
     *
     * This name is used to identify the command during lazy loading.
     *
     * @var string|null
     */
    
protected static $defaultName 'vendor:publish';

    
/**
     * The console command description.
     *
     * @var string
     */
    
protected $description 'Publish any publishable assets from vendor packages';

    
/**
     * Create a new command instance.
     *
     * @param  \Illuminate\Filesystem\Filesystem  $files
     * @return void
     */
    
public function __construct(Filesystem $files)
    {
        
parent::__construct();

        
$this->files $files;
    }

    
/**
     * Execute the console command.
     *
     * @return void
     */
    
public function handle()
    {
        
$this->determineWhatShouldBePublished();

        foreach (
$this->tags ?: [null] as $tag) {
            
$this->publishTag($tag);
        }

        
$this->info('Publishing complete.');
    }

    
/**
     * Determine the provider or tag(s) to publish.
     *
     * @return void
     */
    
protected function determineWhatShouldBePublished()
    {
        if (
$this->option('all')) {
            return;
        }

        [
$this->provider$this->tags] = [
            
$this->option('provider'), (array) $this->option('tag'),
        ];

        if (! 
$this->provider && ! $this->tags) {
            
$this->promptForProviderOrTag();
        }
    }

    
/**
     * Prompt for which provider or tag to publish.
     *
     * @return void
     */
    
protected function promptForProviderOrTag()
    {
        
$choice $this->choice(
            
"Which provider or tag's files would you like to publish?",
            
$choices $this->publishableChoices()
        );

        if (
$choice == $choices[0] || is_null($choice)) {
            return;
        }

        
$this->parseChoice($choice);
    }

    
/**
     * The choices available via the prompt.
     *
     * @return array
     */
    
protected function publishableChoices()
    {
        return 
array_merge(
            [
'<comment>Publish files from all providers and tags listed below</comment>'],
            
preg_filter('/^/''<comment>Provider: </comment>'Arr::sort(ServiceProvider::publishableProviders())),
            
preg_filter('/^/''<comment>Tag: </comment>'Arr::sort(ServiceProvider::publishableGroups()))
        );
    }

    
/**
     * Parse the answer that was given via the prompt.
     *
     * @param  string  $choice
     * @return void
     */
    
protected function parseChoice($choice)
    {
        [
$type$value] = explode(': 'strip_tags($choice));

        if (
$type === 'Provider') {
            
$this->provider $value;
        } elseif (
$type === 'Tag') {
            
$this->tags = [$value];
        }
    }

    
/**
     * Publishes the assets for a tag.
     *
     * @param  string  $tag
     * @return mixed
     */
    
protected function publishTag($tag)
    {
        
$published false;

        
$pathsToPublish $this->pathsToPublish($tag);

        foreach (
$pathsToPublish as $from => $to) {
            
$this->publishItem($from$to);

            
$published true;
        }

        if (
$published === false) {
            
$this->comment('No publishable resources for tag ['.$tag.'].');
        } else {
            
$this->laravel['events']->dispatch(new VendorTagPublished($tag$pathsToPublish));
        }
    }

    
/**
     * Get all of the paths to publish.
     *
     * @param  string  $tag
     * @return array
     */
    
protected function pathsToPublish($tag)
    {
        return 
ServiceProvider::pathsToPublish(
            
$this->provider$tag
        
);
    }

    
/**
     * Publish the given item from and to the given location.
     *
     * @param  string  $from
     * @param  string  $to
     * @return void
     */
    
protected function publishItem($from$to)
    {
        if (
$this->files->isFile($from)) {
            return 
$this->publishFile($from$to);
        } elseif (
$this->files->isDirectory($from)) {
            return 
$this->publishDirectory($from$to);
        }

        
$this->error("Can't locate path: <{$from}>");
    }

    
/**
     * Publish the file to the given path.
     *
     * @param  string  $from
     * @param  string  $to
     * @return void
     */
    
protected function publishFile($from$to)
    {
        if (! 
$this->files->exists($to) || $this->option('force')) {
            
$this->createParentDirectory(dirname($to));

            
$this->files->copy($from$to);

            
$this->status($from$to'File');
        }
    }

    
/**
     * Publish the directory to the given directory.
     *
     * @param  string  $from
     * @param  string  $to
     * @return void
     */
    
protected function publishDirectory($from$to)
    {
        
$visibility PortableVisibilityConverter::fromArray([], Visibility::PUBLIC);

        
$this->moveManagedFiles(new MountManager([
            
'from' => new Flysystem(new LocalAdapter($from)),
            
'to' => new Flysystem(new LocalAdapter($to$visibility)),
        ]));

        
$this->status($from$to'Directory');
    }

    
/**
     * Move all the files in the given MountManager.
     *
     * @param  \League\Flysystem\MountManager  $manager
     * @return void
     */
    
protected function moveManagedFiles($manager)
    {
        foreach (
$manager->listContents('from://'true) as $file) {
            
$path Str::after($file['path'], 'from://');

            if (
$file['type'] === 'file' && (! $manager->fileExists('to://'.$path) || $this->option('force'))) {
                
$manager->write('to://'.$path$manager->read($file['path']));
            }
        }
    }

    
/**
     * Create the directory to house the published files if needed.
     *
     * @param  string  $directory
     * @return void
     */
    
protected function createParentDirectory($directory)
    {
        if (! 
$this->files->isDirectory($directory)) {
            
$this->files->makeDirectory($directory0755true);
        }
    }

    
/**
     * Write a status message to the console.
     *
     * @param  string  $from
     * @param  string  $to
     * @param  string  $type
     * @return void
     */
    
protected function status($from$to$type)
    {
        
$from str_replace(base_path(), ''realpath($from));

        
$to str_replace(base_path(), ''realpath($to));

        
$this->line('<info>Copied '.$type.'</info> <comment>['.$from.']</comment> <info>To</info> <comment>['.$to.']</comment>');
    }
}

:: Command execute ::

Enter:
 
Select:
 

:: Search ::
  - regexp 

:: Upload ::
 
[ Read-Only ]

:: Make Dir ::
 
[ Read-Only ]
:: Make File ::
 
[ Read-Only ]

:: Go Dir ::
 
:: Go File ::
 

--[ c99shell v. 2.5 [PHP 8 Update] [24.05.2025] | Generation time: 0.0059 ]--