mirror of
https://github.com/Karaka-Management/oms-Media.git
synced 2026-02-06 12:38:41 +00:00
Quick backup before crash
This commit is contained in:
parent
10b99b6f27
commit
53d38e71cb
|
|
@ -34,6 +34,8 @@ use Modules\Media\Models\Reference;
|
|||
use Modules\Media\Models\ReferenceMapper;
|
||||
use Modules\Media\Models\UploadFile;
|
||||
use Modules\Media\Models\UploadStatus;
|
||||
use Modules\Media\Theme\Backend\Components\Media\ElementView;
|
||||
use Modules\Media\Views\MediaView;
|
||||
use Modules\Tag\Models\NullTag;
|
||||
use phpOMS\Account\PermissionType;
|
||||
use phpOMS\Application\ApplicationAbstract;
|
||||
|
|
@ -1137,6 +1139,16 @@ final class ApiController extends Controller
|
|||
$response->set('export', $view);
|
||||
}
|
||||
|
||||
/**
|
||||
* Decrypt an encrypted media element
|
||||
*
|
||||
* @param Media $media Media model
|
||||
* @param RequestAbstract $request Request model
|
||||
*
|
||||
* @return Media
|
||||
*
|
||||
* @since 1.0.0
|
||||
*/
|
||||
private function prepareEncryptedMedia(Media $media, RequestAbstract $request) : Media
|
||||
{
|
||||
$path = '';
|
||||
|
|
@ -1148,6 +1160,8 @@ final class ApiController extends Controller
|
|||
|
||||
$path = '../../../Temp/' . $randomName . '.' . $media->getExtension();
|
||||
$absolutePath = __DIR__ . '/' . $path;
|
||||
|
||||
++$counter;
|
||||
} while (!\is_file($absolutePath) && $counter < 1000);
|
||||
|
||||
if ($counter >= 1000) {
|
||||
|
|
@ -1182,8 +1196,8 @@ final class ApiController extends Controller
|
|||
*/
|
||||
public function createView(Media $media, RequestAbstract $request, ResponseAbstract $response) : View
|
||||
{
|
||||
$view = new View($this->app->l11nManager, $request, $response);
|
||||
$view->data['media'] = $media;
|
||||
$view = new ElementView($this->app->l11nManager, $request, $response);
|
||||
$view->media = $media;
|
||||
|
||||
if (!\headers_sent()) {
|
||||
$response->endAllOutputBuffering(); // for large files
|
||||
|
|
@ -1205,6 +1219,34 @@ final class ApiController extends Controller
|
|||
$view->data['head'] = $head;
|
||||
|
||||
switch (\strtolower($media->extension)) {
|
||||
case 'jpg':
|
||||
case 'jpeg':
|
||||
case 'gif':
|
||||
case 'png':
|
||||
$view->setTemplate('/Modules/Media/Theme/Backend/Components/Media/image_raw');
|
||||
break;
|
||||
case 'pdf':
|
||||
$view->setTemplate('/Modules/Media/Theme/Backend/Components/Media/pdf_raw');
|
||||
break;
|
||||
case 'c':
|
||||
case 'cpp':
|
||||
case 'h':
|
||||
case 'php':
|
||||
case 'js':
|
||||
case 'css':
|
||||
case 'rs':
|
||||
case 'py':
|
||||
case 'r':
|
||||
$view->setTemplate('/Modules/Media/Theme/Backend/Components/Media/text_raw');
|
||||
break;
|
||||
case 'txt':
|
||||
case 'cfg':
|
||||
case 'log':
|
||||
$view->setTemplate('/Modules/Media/Theme/Backend/Components/Media/text_raw');
|
||||
break;
|
||||
case 'md':
|
||||
$view->setTemplate('/Modules/Media/Theme/Backend/Components/Media/markdown_raw');
|
||||
break;
|
||||
case 'xls':
|
||||
case 'xlsx':
|
||||
$view->setTemplate('/Modules/Media/Theme/Api/spreadsheetAsHtml');
|
||||
|
|
@ -1213,6 +1255,15 @@ final class ApiController extends Controller
|
|||
case 'docx':
|
||||
$view->setTemplate('/Modules/Media/Theme/Api/wordAsHtml');
|
||||
break;
|
||||
case 'mp3':
|
||||
$view->setTemplate('/Modules/Media/Theme/Backend/Components/Media/audio_raw');
|
||||
break;
|
||||
case 'mp4':
|
||||
case 'mpeg':
|
||||
$view->setTemplate('/Modules/Media/Theme/Backend/Components/Media/video_raw');
|
||||
break;
|
||||
default:
|
||||
$view->setTemplate('/Modules/Media/Theme/Backend/Components/Media/default');
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -96,7 +96,8 @@ final class BackendController extends Controller
|
|||
/** @var Media[] $media */
|
||||
$media = $mediaMapper->execute();
|
||||
|
||||
$collectionMapper = CollectionMapper::getParentCollection($path)->where('tags/title/language', $request->header->l11n->language);
|
||||
$collectionMapper = CollectionMapper::getParentCollection($path)
|
||||
->where('tags/title/language', $request->header->l11n->language);
|
||||
|
||||
if (!$hasPermission) {
|
||||
$permWhere = PermissionAbstractMapper::helper($this->app->dbPool->get('select'))
|
||||
|
|
@ -112,9 +113,10 @@ final class BackendController extends Controller
|
|||
$collectionMapper->where('', $permWhere);
|
||||
}
|
||||
|
||||
/** @var \Modules\Media\Models\Collection $collection */
|
||||
$collection = $collectionMapper->execute();
|
||||
|
||||
if ((\is_array($collection) || $collection->id === 0) && \is_dir(__DIR__ . '/../Files' . $path)) {
|
||||
if ((empty($collection) || $collection->id === 0) && \is_dir(__DIR__ . '/../Files' . $path)) {
|
||||
$collection = new Collection();
|
||||
$collection->name = \basename($path);
|
||||
$collection->setVirtualPath(\dirname($path));
|
||||
|
|
|
|||
|
|
@ -247,7 +247,7 @@ class Media implements \JsonSerializable
|
|||
*/
|
||||
public function encrypt(string $key, string $outputPath = null) : bool
|
||||
{
|
||||
return EncryptionHelper::encryptFile($this->getAbsolutePath(), $outputPath, $key);
|
||||
return EncryptionHelper::encryptFile($this->getAbsolutePath(), $outputPath ?? $this->getAbsolutePath(), $key);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -262,7 +262,7 @@ class Media implements \JsonSerializable
|
|||
*/
|
||||
public function decrypt(string $key, string $outputPath = null) : bool
|
||||
{
|
||||
return EncryptionHelper::decryptFile($this->getAbsolutePath(), $outputPath, $key);
|
||||
return EncryptionHelper::decryptFile($this->getAbsolutePath(), $outputPath ?? $this->getAbsolutePath(), $key);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@ declare(strict_types=1);
|
|||
use Modules\Media\Models\NullMedia;
|
||||
|
||||
/** @var \Modules\Media\Models\Media $media */
|
||||
$media = $this->getData('media') ?? new NullMedia();
|
||||
$media = $this->media ?? new NullMedia();
|
||||
|
||||
$fp = \fopen(($media->isAbsolute ? '' : __DIR__ . '/../../../../') . $media->getPath(), 'r');
|
||||
\fpassthru($fp);
|
||||
|
|
|
|||
|
|
@ -31,10 +31,10 @@ class ElementView extends MediaView
|
|||
/**
|
||||
* Media files
|
||||
*
|
||||
* @var \Modules\Media\Models\Media
|
||||
* @var null|\Modules\Media\Models\Media
|
||||
* @since 1.0.0
|
||||
*/
|
||||
protected Media $media;
|
||||
public ?Media $media = null;
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
|
|
@ -42,7 +42,7 @@ class ElementView extends MediaView
|
|||
public function render(mixed ...$data) : string
|
||||
{
|
||||
/** @var array{0:\Modules\Media\Models\Media} $data */
|
||||
$this->media = $data[0];
|
||||
$this->media = $data[0] ?? $this->media;
|
||||
|
||||
return parent::render();
|
||||
}
|
||||
|
|
|
|||
21
Theme/Backend/Components/Media/audio_raw.tpl.php
Executable file
21
Theme/Backend/Components/Media/audio_raw.tpl.php
Executable file
|
|
@ -0,0 +1,21 @@
|
|||
<?php
|
||||
/**
|
||||
* Karaka
|
||||
*
|
||||
* PHP Version 8.1
|
||||
*
|
||||
* @package Template
|
||||
* @copyright Dennis Eichhorn
|
||||
* @license OMS License 2.0
|
||||
* @version 1.0.0
|
||||
* @link https://jingga.app
|
||||
*/
|
||||
declare(strict_types=1);
|
||||
|
||||
use phpOMS\Uri\UriFactory;
|
||||
|
||||
?>
|
||||
<audio width="100%" controls>
|
||||
<source src="<?= UriFactory::build('{/api}media/export?id=' . $this->media->id); ?>" type="audio/<?= $this->media->extension; ?>">
|
||||
Your browser does not support HTML audio.
|
||||
</audio>
|
||||
22
Theme/Backend/Components/Media/image_raw.tpl.php
Executable file
22
Theme/Backend/Components/Media/image_raw.tpl.php
Executable file
|
|
@ -0,0 +1,22 @@
|
|||
<?php
|
||||
/**
|
||||
* Karaka
|
||||
*
|
||||
* PHP Version 8.1
|
||||
*
|
||||
* @package Template
|
||||
* @copyright Dennis Eichhorn
|
||||
* @license OMS License 2.0
|
||||
* @version 1.0.0
|
||||
* @link https://jingga.app
|
||||
*/
|
||||
declare(strict_types=1);
|
||||
|
||||
use phpOMS\Uri\UriFactory;
|
||||
|
||||
?>
|
||||
|
||||
<img alt="<?= $this->printHtml($this->media->name); ?>" style="max-width: 100%" src="<?= $this->media->id !== 0
|
||||
? UriFactory::build('{/api}media/export?id=' . $this->media->id)
|
||||
: UriFactory::build('{/api}media/export?path=' . \urlencode($this->media->getPath()));
|
||||
?>">
|
||||
21
Theme/Backend/Components/Media/markdown_raw.tpl.php
Executable file
21
Theme/Backend/Components/Media/markdown_raw.tpl.php
Executable file
|
|
@ -0,0 +1,21 @@
|
|||
<?php
|
||||
/**
|
||||
* Karaka
|
||||
*
|
||||
* PHP Version 8.1
|
||||
*
|
||||
* @package Template
|
||||
* @copyright Dennis Eichhorn
|
||||
* @license OMS License 2.0
|
||||
* @version 1.0.0
|
||||
* @link https://jingga.app
|
||||
*/
|
||||
declare(strict_types=1);
|
||||
|
||||
use phpOMS\Utils\Parser\Markdown\Markdown;
|
||||
|
||||
?>
|
||||
|
||||
<article><?= Markdown::parse(
|
||||
$this->getFileContent(($this->media->isAbsolute ? '' : __DIR__ . '/../../../../../../') . $this->media->getPath())
|
||||
); ?></article>
|
||||
19
Theme/Backend/Components/Media/pdf_raw.tpl.php
Executable file
19
Theme/Backend/Components/Media/pdf_raw.tpl.php
Executable file
|
|
@ -0,0 +1,19 @@
|
|||
<?php
|
||||
/**
|
||||
* Karaka
|
||||
*
|
||||
* PHP Version 8.1
|
||||
*
|
||||
* @package Modules\Media
|
||||
* @copyright Dennis Eichhorn
|
||||
* @license OMS License 2.0
|
||||
* @version 1.0.0
|
||||
* @link https://jingga.app
|
||||
*/
|
||||
declare(strict_types=1);
|
||||
|
||||
use \phpOMS\Uri\UriFactory;
|
||||
|
||||
?>
|
||||
|
||||
<iframe class="col-simple" id="iHelperFrame" src="<?= UriFactory::build('Resources/mozilla/Pdf/web/viewer.html?file=' . \urlencode(UriFactory::build('{/api}media/export?id=' . $this->media->id))); ?>" allowfullscreen></iframe>
|
||||
3
Theme/Backend/Components/Media/text_raw.tpl.php
Executable file
3
Theme/Backend/Components/Media/text_raw.tpl.php
Executable file
|
|
@ -0,0 +1,3 @@
|
|||
<pre class="textContent" data-tpl-text="/media/content" data-tpl-value="/media/content"><?= $this->printHtml(
|
||||
$this->getFileContent(($this->media->isAbsolute ? '' : __DIR__ . '/../../../../../../') . $this->media->getPath())
|
||||
); ?>
|
||||
22
Theme/Backend/Components/Media/video_raw.tpl.php
Executable file
22
Theme/Backend/Components/Media/video_raw.tpl.php
Executable file
|
|
@ -0,0 +1,22 @@
|
|||
<?php
|
||||
/**
|
||||
* Karaka
|
||||
*
|
||||
* PHP Version 8.1
|
||||
*
|
||||
* @package Template
|
||||
* @copyright Dennis Eichhorn
|
||||
* @license OMS License 2.0
|
||||
* @version 1.0.0
|
||||
* @link https://jingga.app
|
||||
*/
|
||||
declare(strict_types=1);
|
||||
|
||||
use phpOMS\Uri\UriFactory;
|
||||
|
||||
?>
|
||||
|
||||
<video width="100%" controls>
|
||||
<source src="<?= UriFactory::build('{/api}media/export?id=' . $this->media->id); ?>" type="video/<?= $this->media->extension; ?>">
|
||||
Your browser does not support HTML video.
|
||||
</video>
|
||||
|
|
@ -74,7 +74,7 @@ class BaseView extends View
|
|||
$this->form = $data[0];
|
||||
$this->name = $data[1] ?? 'UNDEFINED';
|
||||
$this->virtualPath = $data[2] ?? $this->virtualPath;
|
||||
$this->files = $data[3] ?? $this->files;
|
||||
$this->files = $data[3] ?? $this->files;
|
||||
return parent::render();
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -63,7 +63,7 @@ use phpOMS\Uri\UriFactory;
|
|||
<section class="portlet">
|
||||
<div class="portlet-head"><?= $this->getHtml('Files', 'Media', 'Backend'); ?><i class="lni lni-download download btn end-xs"></i></div>
|
||||
<div class="slider">
|
||||
<table class="default">
|
||||
<table id="iFiles" class="default">
|
||||
<thead>
|
||||
<tr>
|
||||
<td>
|
||||
|
|
@ -82,7 +82,7 @@ use phpOMS\Uri\UriFactory;
|
|||
<?php foreach ($this->files as $file) : ?>
|
||||
<tr data-tpl-value="/id" data-value="" data-uuid="" data-name="media-list">
|
||||
<td><label class="radio" for="iFile-<?= $file->id; ?>">
|
||||
<input id="iFile-<?= $file->id; ?>" type="radio" name="media_file" value="1"<?= \end($this->files)->id === $file->id ? ' checked' : ''; ?>>
|
||||
<input id="iFile-<?= $file->id; ?>" type="radio" name="media_file" value="<?= $file->id; ?>"<?= \end($this->files)->id === $file->id ? ' checked' : ''; ?>>
|
||||
<span class="checkmark"></span>
|
||||
</label>
|
||||
<td data-tpl-text="/id" data-tpl-value="/id" data-value=""><?= $this->printHtml((string) $file->id); ?></td>
|
||||
|
|
@ -101,7 +101,7 @@ use phpOMS\Uri\UriFactory;
|
|||
<section id="mediaFile" class="portlet col-simple">
|
||||
<div class="portlet-body col-simple">
|
||||
<?php if (!empty($this->files)) : ?>
|
||||
<iframe class="col-simple" id="iMediaFile" src="Resources/mozilla/Pdf/web/viewer.html?file=<?= \urlencode(UriFactory::build('{/api}media/export?id=' . \end($this->files)->id)); ?>" loading="lazy" allowfullscreen></iframe>
|
||||
<iframe class="col-simple" id="iMediaFile" data-src="<?= UriFactory::build('{/api}media/export') . '?id={!#iFiles [name=media_file]:checked}&type=html'; ?>" allowfullscreen></iframe>
|
||||
<?php else : ?>
|
||||
<img width="100%" src="Web/Backend/img/logo_grey.png">
|
||||
<?php endif; ?>
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user