mirror of
https://github.com/Karaka-Management/oms-Admin.git
synced 2026-01-11 13:38:39 +00:00
Quick backup before crash
This commit is contained in:
parent
1e5b0336bc
commit
9834a132de
|
|
@ -12,7 +12,8 @@
|
|||
*/
|
||||
declare(strict_types=1);
|
||||
|
||||
$data = $this->getData('data') ?? [];
|
||||
/** @var \phpOMS\Views\View $this */
|
||||
$data = $this->data['data'] ?? [];
|
||||
|
||||
$out = \fopen('php://output', 'w');
|
||||
if ($out !== false) {
|
||||
|
|
|
|||
|
|
@ -18,6 +18,11 @@ use PhpOffice\PhpSpreadsheet\Worksheet\PageSetup;
|
|||
|
||||
class DefaultExcel extends \PhpOffice\PhpSpreadsheet\Spreadsheet
|
||||
{
|
||||
/**
|
||||
* Constructor.
|
||||
*
|
||||
* @since 1.0.0
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
|
|
|
|||
|
|
@ -35,13 +35,14 @@ foreach ($data as $i => $row) {
|
|||
}
|
||||
|
||||
$file = \tempnam(\sys_get_temp_dir(), 'oms_');
|
||||
if ($file !== false) {
|
||||
$writer = IOFactory::createWriter($excel, 'Xlsx');
|
||||
$writer->save($file);
|
||||
|
||||
$writer = IOFactory::createWriter($excel, 'Xlsx');
|
||||
$writer->save($file);
|
||||
$content = \file_get_contents($file);
|
||||
if ($content !== false) {
|
||||
echo $content;
|
||||
}
|
||||
|
||||
$content = \file_get_contents($file);
|
||||
if ($content !== false) {
|
||||
echo $content;
|
||||
\unlink($file);
|
||||
}
|
||||
|
||||
\unlink($file);
|
||||
|
|
|
|||
|
|
@ -15,12 +15,14 @@ declare(strict_types=1);
|
|||
/**
|
||||
* Default PDF class.
|
||||
*
|
||||
* The TCPDF class must be included previously in the parent code.
|
||||
*
|
||||
* @package Modules\Media
|
||||
* @license OMS License 2.0
|
||||
* @link https://jingga.app
|
||||
* @since 1.0.0
|
||||
*
|
||||
* @phpstan-import-type TCPDF from ../../../../../Resources/tcpdf/tcpdf.php
|
||||
* @link ../../../../../../Resources/tcpdf/tcpdf.php
|
||||
*/
|
||||
class DefaultPdf extends TCPDF
|
||||
{
|
||||
|
|
|
|||
|
|
@ -38,8 +38,20 @@ class DefaultWord extends \PhpOffice\PhpWord\PhpWord
|
|||
*/
|
||||
public int $fontSize = 8;
|
||||
|
||||
/**
|
||||
* Doc language
|
||||
*
|
||||
* @var string
|
||||
* @since 1.0.0
|
||||
*/
|
||||
public string $language = 'en';
|
||||
|
||||
/**
|
||||
* Localization
|
||||
*
|
||||
* @var array
|
||||
* @since 1.0.0
|
||||
*/
|
||||
public array $lang = [
|
||||
'en' => [
|
||||
'Page' => 'Page',
|
||||
|
|
@ -59,6 +71,12 @@ class DefaultWord extends \PhpOffice\PhpWord\PhpWord
|
|||
],
|
||||
];
|
||||
|
||||
/**
|
||||
* Attributes
|
||||
*
|
||||
* @var string[]
|
||||
* @since 1.0.0
|
||||
*/
|
||||
public array $attributes = [
|
||||
'logo' => __DIR__ . '/../Web/Backend/img/logo.png',
|
||||
'title_name' => 'Jingga',
|
||||
|
|
@ -91,6 +109,13 @@ class DefaultWord extends \PhpOffice\PhpWord\PhpWord
|
|||
$this->addTableStyle('FooterTableStyle', $generalTableStyle);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create the first page
|
||||
*
|
||||
* @return \PhpOffice\PhpWord\Element\Section
|
||||
*
|
||||
* @since 1.0.0
|
||||
*/
|
||||
public function createFirstPage()
|
||||
{
|
||||
$section = $this->addSection([
|
||||
|
|
@ -167,6 +192,13 @@ class DefaultWord extends \PhpOffice\PhpWord\PhpWord
|
|||
return $section;
|
||||
}
|
||||
|
||||
/**
|
||||
* Create second page
|
||||
*
|
||||
* @return \PhpOffice\PhpWord\Element\Section
|
||||
*
|
||||
* @since 1.0.0
|
||||
*/
|
||||
public function createSecondPage()
|
||||
{
|
||||
$section = $this->addSection([
|
||||
|
|
|
|||
|
|
@ -30,9 +30,11 @@ $section = $word->createFirstPage();
|
|||
$file = \tempnam(\sys_get_temp_dir(), 'oms_');
|
||||
//$writer->save($file);
|
||||
|
||||
$content = \file_get_contents($file);
|
||||
if ($content !== false) {
|
||||
echo $content;
|
||||
}
|
||||
if ($file !== false) {
|
||||
$content = \file_get_contents($file);
|
||||
if ($content !== false) {
|
||||
echo $content;
|
||||
}
|
||||
|
||||
\unlink($file);
|
||||
\unlink($file);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -52,6 +52,10 @@ $tbl .= '</table>';
|
|||
\PhpOffice\PhpWord\Shared\Html::addHtml($section, $tbl, false, false);
|
||||
|
||||
$file = \tempnam(\sys_get_temp_dir(), 'oms_');
|
||||
if ($file === false) {
|
||||
return '';
|
||||
}
|
||||
|
||||
$writer->save($file);
|
||||
|
||||
echo \file_get_contents($file);
|
||||
|
|
|
|||
|
|
@ -35,6 +35,6 @@ if ($file !== false) {
|
|||
if ($content !== false) {
|
||||
echo $content;
|
||||
}
|
||||
}
|
||||
|
||||
\unlink($file);
|
||||
\unlink($file);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -800,7 +800,7 @@ final class ApiController extends Controller
|
|||
->execute();
|
||||
|
||||
if (($request->getData('localization_load') ?? '-1') !== '-1') {
|
||||
$locale = \explode('_', $request->getData('localization_load'));
|
||||
$locale = \explode('_', $request->getData('localization_load') ?? '');
|
||||
$old = clone $account->l11n;
|
||||
|
||||
$account->l11n->loadFromLanguage($locale[0], $locale[1]);
|
||||
|
|
@ -1458,7 +1458,12 @@ final class ApiController extends Controller
|
|||
);
|
||||
|
||||
if (!empty($defaultGroupSettings)) {
|
||||
$defaultGroupIds = \array_merge($defaultGroupIds, \json_decode($defaultGroupSettings->content, true));
|
||||
$temp = \json_decode($defaultGroupSettings->content, true);
|
||||
if (!\is_array($temp)) {
|
||||
$temp = [];
|
||||
}
|
||||
|
||||
$defaultGroupIds = \array_merge($defaultGroupIds, $temp);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -1471,7 +1476,12 @@ final class ApiController extends Controller
|
|||
);
|
||||
|
||||
if (!empty($defaultGroupSettings)) {
|
||||
$defaultGroupIds = \array_merge($defaultGroupIds, \json_decode($defaultGroupSettings->content, true));
|
||||
$temp = \json_decode($defaultGroupSettings->content, true);
|
||||
if (!\is_array($temp)) {
|
||||
$temp = [];
|
||||
}
|
||||
|
||||
$defaultGroupIds = \array_merge($defaultGroupIds, $temp);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -1668,9 +1678,14 @@ final class ApiController extends Controller
|
|||
);
|
||||
|
||||
if (!empty($defaultGroupSettings)) {
|
||||
$temp = \json_decode($defaultGroupSettings->content, true);
|
||||
if (!\is_array($temp)) {
|
||||
$temp = [];
|
||||
}
|
||||
|
||||
$defaultGroupIds = \array_merge(
|
||||
$defaultGroupIds,
|
||||
\json_decode($defaultGroupSettings->content, true)
|
||||
$temp
|
||||
);
|
||||
}
|
||||
}
|
||||
|
|
@ -1684,9 +1699,14 @@ final class ApiController extends Controller
|
|||
);
|
||||
|
||||
if (!empty($defaultGroupSettings)) {
|
||||
$temp = \json_decode($defaultGroupSettings->content, true);
|
||||
if (!\is_array($temp)) {
|
||||
$temp = [];
|
||||
}
|
||||
|
||||
$defaultGroupIds = \array_merge(
|
||||
$defaultGroupIds,
|
||||
\json_decode($defaultGroupSettings->content, true)
|
||||
$temp
|
||||
);
|
||||
}
|
||||
}
|
||||
|
|
@ -1736,7 +1756,7 @@ final class ApiController extends Controller
|
|||
$request->setData('create_profile', (string) true);
|
||||
$request->setData('name1', !$request->hasData('name1')
|
||||
? (!$request->hasData('user')
|
||||
? \explode('@', $request->getDataString('email'))[0]
|
||||
? \explode('@', $request->getDataString('email') ?? '')[0]
|
||||
: $request->getDataString('user')
|
||||
)
|
||||
: $request->getDataString('name1')
|
||||
|
|
@ -1768,6 +1788,61 @@ final class ApiController extends Controller
|
|||
|
||||
++$tries;
|
||||
} while ($dataChange->id === 0 && $tries < 5);
|
||||
|
||||
$handler = $this->setUpServerMailHandler();
|
||||
|
||||
/** @var \Model\Setting[] $emailSettings */
|
||||
$emailSettings = $this->app->appSettings->get(
|
||||
names: [SettingsEnum::MAIL_SERVER_ADDR, SettingsEnum::LOGIN_MAIL_REGISTRATION_TEMPLATE],
|
||||
module: 'Admin'
|
||||
);
|
||||
|
||||
/** @var \Modules\Messages\Models\Email $mail */
|
||||
$mail = EmailMapper::get()
|
||||
->with('l11n')
|
||||
->where('id', (int) $emailSettings[SettingsEnum::LOGIN_MAIL_REGISTRATION_TEMPLATE]->content)
|
||||
->where('l11n/language', $response->header->l11n->language)
|
||||
->execute();
|
||||
|
||||
$mail->setFrom($emailSettings[SettingsEnum::MAIL_SERVER_ADDR]->content);
|
||||
$mail->addTo((string) $request->getData('email'));
|
||||
|
||||
// @todo: load default l11n if no translation is available
|
||||
$mailL11n = $mail->getL11nByLanguage($response->header->l11n->language);
|
||||
|
||||
$mail->subject = $mailL11n->subject;
|
||||
|
||||
// @todo: improve, the /tld link could be api.myurl.com which of course is not the url of the respective app.
|
||||
// Maybe store the uri in the $app model? or store all urls in the config file
|
||||
$mail->body = \str_replace(
|
||||
[
|
||||
'{confirmation_link}',
|
||||
'{user_name}',
|
||||
],
|
||||
[
|
||||
UriFactory::hasQuery('/' . \strtolower($app->name))
|
||||
? UriFactory::build('{/' . \strtolower($app->name) . '}/' . \strtolower($app->name) . '/signup/confirmation?hash=' . $dataChange->getHash())
|
||||
: UriFactory::build('{/tld}/{/lang}/' . \strtolower($app->name) . '/signup/confirmation?hash=' . $dataChange->getHash()),
|
||||
$account->login,
|
||||
],
|
||||
$mailL11n->body
|
||||
);
|
||||
|
||||
$mail->bodyAlt = \str_replace(
|
||||
[
|
||||
'{confirmation_link}',
|
||||
'{user_name}',
|
||||
],
|
||||
[
|
||||
UriFactory::hasQuery('/' . \strtolower($app->name))
|
||||
? UriFactory::build('{/' . \strtolower($app->name) . '}/' . \strtolower($app->name) . '/signup/confirmation?hash=' . $dataChange->getHash())
|
||||
: UriFactory::build('{/tld}/{/lang}/' . \strtolower($app->name) . '/signup/confirmation?hash=' . $dataChange->getHash()),
|
||||
$account->login,
|
||||
],
|
||||
$mailL11n->bodyAlt
|
||||
);
|
||||
|
||||
$handler->send($mail);
|
||||
}
|
||||
|
||||
// Create client
|
||||
|
|
@ -1794,60 +1869,6 @@ final class ApiController extends Controller
|
|||
}
|
||||
}
|
||||
|
||||
$handler = $this->setUpServerMailHandler();
|
||||
|
||||
$emailSettings = $this->app->appSettings->get(
|
||||
names: [SettingsEnum::MAIL_SERVER_ADDR, SettingsEnum::LOGIN_MAIL_REGISTRATION_TEMPLATE],
|
||||
module: 'Admin'
|
||||
);
|
||||
|
||||
/** @var \Modules\Messages\Models\Email $mail */
|
||||
$mail = EmailMapper::get()
|
||||
->with('l11n')
|
||||
->where('id', (int) $emailSettings[SettingsEnum::LOGIN_MAIL_REGISTRATION_TEMPLATE]->content)
|
||||
->where('l11n/language', $response->header->l11n->language)
|
||||
->execute();
|
||||
|
||||
$mail->setFrom($emailSettings[SettingsEnum::MAIL_SERVER_ADDR]->content);
|
||||
$mail->addTo((string) $request->getData('email'));
|
||||
|
||||
// @todo: load default l11n if no translation is available
|
||||
$mailL11n = $mail->getL11nByLanguage($response->header->l11n->language);
|
||||
|
||||
$mail->subject = $mailL11n->subject;
|
||||
|
||||
// @todo: improve, the /tld link could be api.myurl.com which of course is not the url of the respective app.
|
||||
// Maybe store the uri in the $app model? or store all urls in the config file
|
||||
$mail->body = \str_replace(
|
||||
[
|
||||
'{confirmation_link}',
|
||||
'{user_name}',
|
||||
],
|
||||
[
|
||||
UriFactory::hasQuery('/' . \strtolower($app->name))
|
||||
? UriFactory::build('{/' . \strtolower($app->name) . '}/' . \strtolower($app->name) . '/signup/confirmation?hash=' . $dataChange->getHash())
|
||||
: UriFactory::build('{/tld}/{/lang}/' . \strtolower($app->name) . '/signup/confirmation?hash=' . $dataChange->getHash()),
|
||||
$account->login,
|
||||
],
|
||||
$mailL11n->body
|
||||
);
|
||||
|
||||
$mail->bodyAlt = \str_replace(
|
||||
[
|
||||
'{confirmation_link}',
|
||||
'{user_name}',
|
||||
],
|
||||
[
|
||||
UriFactory::hasQuery('/' . \strtolower($app->name))
|
||||
? UriFactory::build('{/' . \strtolower($app->name) . '}/' . \strtolower($app->name) . '/signup/confirmation?hash=' . $dataChange->getHash())
|
||||
: UriFactory::build('{/tld}/{/lang}/' . \strtolower($app->name) . '/signup/confirmation?hash=' . $dataChange->getHash()),
|
||||
$account->login,
|
||||
],
|
||||
$mailL11n->bodyAlt
|
||||
);
|
||||
|
||||
$handler->send($mail);
|
||||
|
||||
$this->fillJsonResponse(
|
||||
$request,
|
||||
$response,
|
||||
|
|
@ -2029,7 +2050,7 @@ final class ApiController extends Controller
|
|||
$account->l11n
|
||||
->loadFromLanguage(
|
||||
$locale[0] ?? $this->app->l11nServer->language,
|
||||
$locale[1] ?? $this->app->l11nServer->getCountry()
|
||||
$locale[1] ?? $this->app->l11nServer->country
|
||||
);
|
||||
}
|
||||
|
||||
|
|
@ -2527,12 +2548,12 @@ final class ApiController extends Controller
|
|||
? new GroupPermission((int) $request->getData('permissionref'))
|
||||
: new AccountPermission((int) $request->getData('permissionref'));
|
||||
|
||||
$permission->setUnit($request->getDataInt('permissionunit'));
|
||||
$permission->setApp($request->getDataInt('permissionapp'));
|
||||
$permission->setModule($request->getDataString('permissionmodule'));
|
||||
$permission->setCategory($request->getDataInt('permissioncategory'));
|
||||
$permission->setElement($request->getDataInt('permissionelement'));
|
||||
$permission->setComponent($request->getDataInt('permissioncomponent'));
|
||||
$permission->unit = $request->getDataInt('permissionunit');
|
||||
$permission->app = $request->getDataInt('permissionapp');
|
||||
$permission->module = $request->getDataString('permissionmodule');
|
||||
$permission->category = $request->getDataInt('permissioncategory');
|
||||
$permission->element = $request->getDataInt('permissionelement');
|
||||
$permission->component = $request->getDataInt('permissioncomponent');
|
||||
$permission->setPermission(
|
||||
($request->getDataInt('permissionread') ?? 0)
|
||||
| ($request->getDataInt('permissioncreate') ?? 0)
|
||||
|
|
@ -2613,12 +2634,12 @@ final class ApiController extends Controller
|
|||
*/
|
||||
private function updatePermissionFromRequest(RequestAbstract $request, PermissionAbstract $permission) : PermissionAbstract
|
||||
{
|
||||
$permission->setUnit($request->getDataInt('permissionunit') ?? $permission->getUnit());
|
||||
$permission->setApp($request->getDataInt('permissionapp') ?? $permission->getApp());
|
||||
$permission->setModule($request->getDataString('permissionmodule') ?? $permission->getModule());
|
||||
$permission->setCategory($request->getDataInt('permissioncategory') ?? $permission->getCategory());
|
||||
$permission->setElement($request->getDataInt('permissionelement') ?? $permission->getElement());
|
||||
$permission->setComponent($request->getDataInt('permissioncomponent') ?? $permission->getComponent());
|
||||
$permission->unit = $request->getDataInt('permissionunit') ?? $permission->unit;
|
||||
$permission->app = $request->getDataInt('permissionapp') ?? $permission->app;
|
||||
$permission->module = $request->getDataString('permissionmodule') ?? $permission->module;
|
||||
$permission->category = $request->getDataInt('permissioncategory') ?? $permission->category;
|
||||
$permission->element = $request->getDataInt('permissionelement') ?? $permission->element;
|
||||
$permission->component = $request->getDataInt('permissioncomponent') ?? $permission->component;
|
||||
$permission->setPermission(($request->getDataInt('permissioncreate') ?? 0)
|
||||
| ($request->getDataInt('permissionread') ?? 0)
|
||||
| ($request->getDataInt('permissionupdate') ?? 0)
|
||||
|
|
|
|||
|
|
@ -694,10 +694,10 @@ final class BackendController extends Controller
|
|||
|
||||
$id = $request->getDataString('id') ?? '';
|
||||
|
||||
/** @var null|\Model\NullSetting|\Model\Setting[] $settings */
|
||||
/** @var \Model\Setting[] $settings */
|
||||
$settings = SettingMapper::getAll()->where('module', $id)->execute();
|
||||
if ($settings->id > 0) {
|
||||
$view->data['settings'] = \is_array($settings) ? $settings : [$settings];
|
||||
if (empty($settings)) {
|
||||
$view->data['settings'] = $settings;
|
||||
}
|
||||
|
||||
$class = '\\Modules\\' . $request->getData('id') . '\\Models\\SettingsEnum';
|
||||
|
|
|
|||
|
|
@ -21,6 +21,9 @@ namespace Modules\Admin\Models;
|
|||
* @license OMS License 2.0
|
||||
* @link https://jingga.app
|
||||
* @since 1.0.0
|
||||
*
|
||||
* @template T of Account
|
||||
* @extends AccountMapper<T>
|
||||
*/
|
||||
final class AccountCredentialMapper extends AccountMapper
|
||||
{
|
||||
|
|
|
|||
|
|
@ -46,7 +46,7 @@ class AccountExternal
|
|||
* @var int
|
||||
* @since 1.0.0
|
||||
*/
|
||||
private int $subtype = AccountExternalSubtype::STRIPE;
|
||||
public int $subtype = AccountExternalSubtype::STRIPE;
|
||||
|
||||
/**
|
||||
* External status.
|
||||
|
|
|
|||
|
|
@ -24,7 +24,7 @@ use phpOMS\DataStorage\Database\Mapper\DataMapperFactory;
|
|||
* @link https://jingga.app
|
||||
* @since 1.0.0
|
||||
*
|
||||
* @template T of AccoutExternal
|
||||
* @template T of AccountExternal
|
||||
* @extends DataMapperFactory<T>
|
||||
*/
|
||||
class AccountExternalMapper extends DataMapperFactory
|
||||
|
|
|
|||
|
|
@ -25,7 +25,7 @@ use phpOMS\DataStorage\Database\Mapper\DataMapperFactory;
|
|||
* @link https://jingga.app
|
||||
* @since 1.0.0
|
||||
*
|
||||
* @template T of PermissionAbstract
|
||||
* @template T of \phpOMS\Account\PermissionAbstract
|
||||
* @extends DataMapperFactory<T>
|
||||
*/
|
||||
final class PermissionAbstractMapper extends DataMapperFactory
|
||||
|
|
|
|||
|
|
@ -318,12 +318,12 @@ echo $this->data['nav']->render(); ?>
|
|||
<td><a href="#"><i class="fa fa-times"></i></a>
|
||||
<td><a href="#"><i class="fa fa-cogs"></i></a>
|
||||
<td><?= $value->id; ?>
|
||||
<td><?= $value->getUnit(); ?>
|
||||
<td><?= $value->getApp(); ?>
|
||||
<td><?= $value->getModule(); ?>
|
||||
<td><?= $value->getCategory(); ?>
|
||||
<td><?= $value->getElement(); ?>
|
||||
<td><?= $value->getComponent(); ?>
|
||||
<td><?= $this->printHtml($value->unit); ?>
|
||||
<td><?= $this->printHtml($value->app); ?>
|
||||
<td><?= $this->printHtml($value->module); ?>
|
||||
<td><?= $this->printHtml($value->category); ?>
|
||||
<td><?= $this->printHtml($value->element); ?>
|
||||
<td><?= $this->printHtml($value->component); ?>
|
||||
<td>
|
||||
<?= (PermissionType::CREATE | $permission) === $permission ? 'C' : ''; ?>
|
||||
<?= (PermissionType::READ | $permission) === $permission ? 'R' : ''; ?>
|
||||
|
|
|
|||
|
|
@ -269,12 +269,12 @@ echo $this->data['nav']->render(); ?>
|
|||
<td><a href="#"><i class="fa fa-times"></i></a>
|
||||
<td><i class="fa fa-cogs update btn"></i>
|
||||
<td><?= $value->id; ?>
|
||||
<td data-tpl-text="/unit" data-tpl-value="/unit"><?= $value->getUnit(); ?>
|
||||
<td data-tpl-text="/app" data-tpl-value="/app"><?= $value->getApp(); ?>
|
||||
<td data-tpl-text="/module" data-tpl-value="/module"><?= $value->getModule(); ?>
|
||||
<td data-tpl-text="/type" data-tpl-value="/type"><?= $value->getCategory(); ?>
|
||||
<td data-tpl-text="/ele" data-tpl-value="/ele"><?= $value->getElement(); ?>
|
||||
<td data-tpl-text="/comp" data-tpl-value="/comp"><?= $value->getComponent(); ?>
|
||||
<td data-tpl-text="/unit" data-tpl-value="/unit"><?= $this->printHtml($value->unit); ?>
|
||||
<td data-tpl-text="/app" data-tpl-value="/app"><?= $this->printHtml($value->app); ?>
|
||||
<td data-tpl-text="/module" data-tpl-value="/module"><?= $this->printHtml($value->module); ?>
|
||||
<td data-tpl-text="/type" data-tpl-value="/type"><?= $this->printHtml($value->category); ?>
|
||||
<td data-tpl-text="/ele" data-tpl-value="/ele"><?= $this->printHtml($value->element); ?>
|
||||
<td data-tpl-text="/comp" data-tpl-value="/comp"><?= $this->printHtml($value->component); ?>
|
||||
<td>
|
||||
<?php if ((PermissionType::CREATE | $permission) === $permission) : ?>
|
||||
<span data-tpl-text="/perm/c" data-tpl-value="/perm/c" data-value="<?= PermissionType::CREATE; ?>">C</span>
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user