registration fixes

This commit is contained in:
Dennis Eichhorn 2023-03-24 16:20:23 +01:00
parent e4c4b90170
commit b1a291e97c
73 changed files with 834 additions and 82 deletions

View File

@ -5,7 +5,7 @@
"type": 1,
"subtype": 1,
"name": "Messages",
"uri": "{/lang}/{/app}/messages/dashboard?{?}",
"uri": "{/base}/messages/dashboard?{?}",
"target": "self",
"icon": "fa fa-envelope",
"order": 10,
@ -19,7 +19,7 @@
"type": 3,
"subtype": 1,
"name": "Inbox",
"uri": "{/lang}/{/app}/messages/dashboard?{?}",
"uri": "{/base}/messages/dashboard?{?}",
"target": "self",
"icon": null,
"order": 1,
@ -34,7 +34,7 @@
"type": 3,
"subtype": 1,
"name": "Outbox",
"uri": "{/lang}/{/app}/messages/outbox?{?}",
"uri": "{/base}/messages/outbox?{?}",
"target": "self",
"icon": null,
"order": 5,
@ -49,7 +49,7 @@
"type": 3,
"subtype": 1,
"name": "Trash",
"uri": "{/lang}/{/app}/messages/trash?{?}",
"uri": "{/base}/messages/trash?{?}",
"target": "self",
"icon": null,
"order": 10,
@ -64,7 +64,7 @@
"type": 3,
"subtype": 1,
"name": "Spam",
"uri": "{/lang}/{/app}/messages/spam?{?}",
"uri": "{/base}/messages/spam?{?}",
"target": "self",
"icon": null,
"order": 15,
@ -79,7 +79,7 @@
"type": 3,
"subtype": 1,
"name": "Draft",
"uri": "{/lang}/{/app}/messages/draft?{?}",
"uri": "{/base}/messages/draft?{?}",
"target": "self",
"icon": null,
"order": 20,
@ -94,7 +94,7 @@
"type": 3,
"subtype": 1,
"name": "Settings",
"uri": "{/lang}/{/app}/messages/settings?{?}",
"uri": "{/base}/messages/settings?{?}",
"target": "self",
"icon": null,
"order": 50,

View File

@ -6,7 +6,7 @@
*
* @package Modules\Messages\Admin\Install
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @license OMS License 2.0
* @version 1.0.0
* @link https://jingga.app
*/
@ -20,7 +20,7 @@ use phpOMS\Application\ApplicationAbstract;
* Navigation class.
*
* @package Modules\Messages\Admin\Install
* @license OMS License 1.0
* @license OMS License 2.0
* @link https://jingga.app
* @since 1.0.0
*/

View File

@ -6,7 +6,7 @@
*
* @package Modules\Messages\Admin\Install
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @license OMS License 2.0
* @version 1.0.0
* @link https://jingga.app
*/
@ -20,7 +20,7 @@ use phpOMS\Application\ApplicationAbstract;
* Workflow class.
*
* @package Modules\Messages\Admin\Install
* @license OMS License 1.0
* @license OMS License 2.0
* @link https://jingga.app
* @since 1.0.0
*/

252
Admin/Install/db.json Normal file
View File

@ -0,0 +1,252 @@
{
"messages_mail": {
"name": "messages_mail",
"fields": {
"messages_mail_id": {
"name": "messages_mail_id",
"type": "INT",
"null": false,
"primary": true,
"autoincrement": true
},
"messages_mail_msgid": {
"name": "messages_mail_msgid",
"type": "VARCHAR(255)",
"null": false
},
"messages_mail_status": {
"name": "messages_mail_status",
"type": "TINYINT",
"null": false
},
"messages_mail_to": {
"name": "messages_mail_to",
"type": "TEXT",
"null": false
},
"messages_mail_from": {
"name": "messages_mail_from",
"type": "VARCHAR(255)",
"null": false
},
"messages_mail_from_account": {
"name": "messages_mail_from_account",
"type": "INT",
"null": true,
"default": null,
"foreignTable": "account",
"foreignKey": "account_id"
},
"messages_mail_cc": {
"name": "messages_mail_cc",
"type": "TEXT",
"null": false
},
"messages_mail_bcc": {
"name": "messages_mail_bcc",
"type": "TEXT",
"null": false
},
"messages_mail_replyto": {
"name": "messages_mail_replyto",
"type": "TEXT",
"null": false
},
"messages_mail_confimation": {
"name": "messages_mail_confimation",
"type": "VARCHAR(255)",
"null": false
},
"messages_mail_subject": {
"name": "messages_mail_subject",
"type": "TEXT",
"null": false
},
"messages_mail_body": {
"name": "messages_mail_body",
"type": "TEXT",
"null": false
},
"messages_mail_bodyalt": {
"name": "messages_mail_bodyalt",
"type": "TEXT",
"null": false
},
"messages_mail_bodymime": {
"name": "messages_mail_bodymime",
"type": "TEXT",
"null": false
},
"messages_mail_ical": {
"name": "messages_mail_ical",
"type": "TEXT",
"null": false
},
"messages_mail_created_at": {
"name": "messages_mail_created_at",
"type": "DATETIME",
"null": false
},
"messages_mail_sent": {
"name": "messages_mail_sent",
"type": "DATETIME",
"null": true,
"default": null
},
"messages_mail_received": {
"name": "messages_mail_received",
"type": "DATETIME",
"null": true,
"default": null
},
"messages_mail_priority": {
"name": "messages_mail_priority",
"type": "TINYINT(1)",
"null": false
},
"messages_mail_encoding": {
"name": "messages_mail_encoding",
"type": "VARCHAR(255)",
"null": false
},
"messages_mail_contenttype": {
"name": "messages_mail_contenttype",
"type": "VARCHAR(255)",
"null": false
},
"messages_mail_charset": {
"name": "messages_mail_charset",
"type": "VARCHAR(255)",
"null": false
}
}
},
"messages_mail_media": {
"name": "messages_mail_media",
"fields": {
"messages_mail_media_id": {
"name": "messages_mail_media_id",
"type": "INT",
"null": false,
"primary": true,
"autoincrement": true
},
"messages_mail_media_src": {
"name": "messages_mail_media_src",
"type": "INT",
"null": false,
"foreignTable": "messages_mail",
"foreignKey": "messages_mail_id"
},
"messages_mail_media_dst": {
"name": "messages_mail_media_dst",
"type": "INT",
"null": false,
"foreignTable": "media",
"foreignKey": "media_id"
}
}
},
"messages_channel": {
"description": "Only for internal purposes, can be a server or group chat or 1v1 chat",
"name": "messages_channel",
"fields": {
"messages_channel_id": {
"name": "messages_channel_id",
"type": "INT",
"null": false,
"primary": true,
"autoincrement": true
},
"messages_channel_status": {
"name": "messages_channel_status",
"type": "TINYINT",
"null": false
},
"messages_mail_created_at": {
"name": "messages_mail_created_at",
"type": "DATETIME",
"null": false
},
"messages_mail_created_by": {
"name": "messages_mail_created_by",
"type": "INT",
"null": false,
"foreignTable": "account",
"foreignKey": "account_id"
}
}
},
"messages_channel_rel": {
"name": "messages_channel_rel",
"fields": {
"messages_channel_rel_id": {
"name": "messages_channel_rel_id",
"type": "INT",
"null": false,
"primary": true,
"autoincrement": true
},
"messages_channel_rel_channel": {
"name": "messages_channel_rel_channel",
"type": "INT",
"null": false,
"foreignTable": "messages_channel",
"foreignKey": "messages_channel_id"
},
"messages_channel_rel_account": {
"name": "messages_channel_rel_account",
"type": "INT",
"null": false,
"foreignTable": "account",
"foreignKey": "account_id"
}
}
},
"messages_msg": {
"name": "messages_msg",
"fields": {
"messages_msg_id": {
"name": "messages_msg_id",
"type": "INT",
"null": false,
"primary": true,
"autoincrement": true
},
"messages_msg_status": {
"name": "messages_msg_status",
"type": "TINYINT",
"null": false
},
"messages_msg_body": {
"name": "messages_msg_body",
"type": "TEXT",
"null": false
},
"messages_msg_bodyalt": {
"name": "messages_msg_bodyalt",
"type": "TEXT",
"null": false
},
"messages_mail_created_at": {
"name": "messages_mail_created_at",
"type": "DATETIME",
"null": false
},
"messages_mail_created_by": {
"name": "messages_mail_created_by",
"type": "INT",
"null": false,
"foreignTable": "account",
"foreignKey": "account_id"
},
"messages_mail_channel": {
"name": "messages_mail_channel",
"type": "INT",
"null": false,
"foreignTable": "messages_channel",
"foreignKey": "messages_channel_id"
}
}
}
}

View File

@ -6,7 +6,7 @@
*
* @package Modules\Messages\Admin
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @license OMS License 2.0
* @version 1.0.0
* @link https://jingga.app
*/
@ -14,13 +14,19 @@ declare(strict_types=1);
namespace Modules\Messages\Admin;
use phpOMS\Application\ApplicationAbstract;
use phpOMS\Message\Http\HttpRequest;
use phpOMS\Message\Http\HttpResponse;
use phpOMS\Module\InstallerAbstract;
use phpOMS\Module\ModuleInfo;
use phpOMS\System\File\PathException;
use phpOMS\Uri\HttpUri;
/**
* Installer class.
*
* @package Modules\Messages\Admin
* @license OMS License 1.0
* @license OMS License 2.0
* @link https://jingga.app
* @since 1.0.0
*/
@ -33,4 +39,111 @@ final class Installer extends InstallerAbstract
* @since 1.0.0
*/
public const PATH = __DIR__;
/**
* Install data from providing modules.
*
* The data can be either directories which should be created or files which should be "uploaded"
*
* @param ApplicationAbstract $app Application
* @param array $data Additional data
*
* @return array
*
* @throws PathException
* @throws \Exception
*
* @since 1.0.0
*/
public static function installExternal(ApplicationAbstract $app, array $data) : array
{
try {
$app->dbPool->get()->con->query('select 1 from `editor_doc`');
} catch (\Exception $e) {
return []; // @codeCoverageIgnore
}
if (!\is_file($data['path'] ?? '')) {
throw new PathException($data['path'] ?? '');
}
$messageFile = \file_get_contents($data['path'] ?? '');
if ($messageFile === false) {
throw new PathException($data['path'] ?? ''); // @codeCoverageIgnore
}
$messageData = \json_decode($messageFile, true) ?? [];
if ($messageData === false) {
throw new \Exception(); // @codeCoverageIgnore
}
$result = [
'email_template' => [],
];
$apiApp = new class() extends ApplicationAbstract
{
protected string $appName = 'Api';
};
$apiApp->dbPool = $app->dbPool;
$apiApp->unitId = $app->unitId;
$apiApp->accountManager = $app->accountManager;
$apiApp->appSettings = $app->appSettings;
$apiApp->moduleManager = $app->moduleManager;
$apiApp->eventManager = $app->eventManager;
/** @var array{type:array} $messageData */
foreach ($messageData as $message) {
switch ($message['type']) {
case 'email_template':
$result['email_template'][] = self::createMessageTemplate($apiApp, $message);
break;
default:
}
}
return $result;
}
/**
* Create message template.
*
* @param ApplicationAbstract $app Application
* @param array $data Type info
*
* @return array
*
* @since 1.0.0
*/
private static function createMessageTemplate(ApplicationAbstract $app, array $data) : array
{
/** @var \Modules\Messages\Controller\ApiController $module */
$module = $app->moduleManager->get('Messages');
$response = new HttpResponse();
$request = new HttpRequest(new HttpUri(''));
$request->header->account = 1;
$request->setData('from', $data['from'] ?? '');
$request->setData('to', $data['to'] ?? null);
$request->setData('cc', $data['cc'] ?? null);
$request->setData('bcc', $data['bcc'] ?? null);
$request->setData('subject', $data['subject'] ?? '');
$request->setData('ishtml', $data['ishtml'] ?? false);
$request->setData('body', $data['body'] ?? '');
$request->setData('bodyalt', $data['bodyalt'] ?? '');
$request->setData('send', $data['send'] ?? false);
$module->apiEmailCreate($request, $response);
$responseData = $response->get('');
if (!\is_array($responseData)) {
return [];
}
return !\is_array($responseData['response'])
? $responseData['response']->toArray()
: $responseData['response'];
}
}

View File

@ -6,7 +6,7 @@
*
* @package Modules
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @license OMS License 2.0
* @version 1.0.0
* @link https://jingga.app
*/

View File

@ -6,7 +6,7 @@
*
* @package Modules\Messages\Admin
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @license OMS License 2.0
* @version 1.0.0
* @link https://jingga.app
*/
@ -20,7 +20,7 @@ use phpOMS\Module\StatusAbstract;
* Status class.
*
* @package Modules\Messages\Admin
* @license OMS License 1.0
* @license OMS License 2.0
* @link https://jingga.app
* @since 1.0.0
*/

View File

@ -6,7 +6,7 @@
*
* @package Modules\Messages\Admin
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @license OMS License 2.0
* @version 1.0.0
* @link https://jingga.app
*/
@ -20,7 +20,7 @@ use phpOMS\Module\UninstallerAbstract;
* Uninstaller class.
*
* @package Modules\Messages\Admin
* @license OMS License 1.0
* @license OMS License 2.0
* @link https://jingga.app
* @since 1.0.0
*/

View File

@ -6,7 +6,7 @@
*
* @package Modules\Messages\Admin
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @license OMS License 2.0
* @version 1.0.0
* @link https://jingga.app
*/
@ -20,7 +20,7 @@ use phpOMS\Module\UpdaterAbstract;
* Updater class.
*
* @package Modules\Messages\Admin
* @license OMS License 1.0
* @license OMS License 2.0
* @link https://jingga.app
* @since 1.0.0
*/

View File

@ -0,0 +1,145 @@
<?php
/**
* Karaka
*
* PHP Version 8.1
*
* @package Modules\Messages
* @copyright Dennis Eichhorn
* @license OMS License 2.0
* @version 1.0.0
* @link https://jingga.app
*/
declare(strict_types=1);
namespace Modules\Messages\Controller;
use Modules\Admin\Models\NullAccount;
use Modules\Messages\Models\Email;
use Modules\Messages\Models\EmailMapper;
use phpOMS\Message\Http\RequestStatusCode;
use phpOMS\Message\NotificationLevel;
use phpOMS\Message\RequestAbstract;
use phpOMS\Message\ResponseAbstract;
use phpOMS\Model\Message\FormValidation;
/**
* Media class.
*
* @package Modules\Messages
* @license OMS License 2.0
* @link https://jingga.app
* @since 1.0.0
*/
final class ApiController extends Controller
{
/**
* Api method to create tag
*
* @param RequestAbstract $request Request
* @param ResponseAbstract $response Response
* @param mixed $data Generic data
*
* @return void
*
* @api
*
* @since 1.0.0
*/
public function apiEmailCreate(RequestAbstract $request, ResponseAbstract $response, mixed $data = null) : void
{
if (!empty($val = $this->validateEmailCreate($request))) {
$response->set('email_create', new FormValidation($val));
$response->header->status = RequestStatusCode::R_400;
return;
}
$email = $this->createEmailFromRequest($request);
$this->createModel($request->header->account, $email, EmailMapper::class, 'email', $request->getOrigin());
$this->fillJsonResponse($request, $response, NotificationLevel::OK, 'Email', 'Email successfully created', $email);
}
/**
* Validate email create request
*
* @param RequestAbstract $request Request
*
* @return array<string, bool>
*
* @since 1.0.0
*/
private function validateEmailCreate(RequestAbstract $request) : array
{
$val = [];
if (($val['subject'] = empty($request->getData('subject')))
|| ($val['body'] = empty($request->getData('body')))
) {
return $val;
}
return [];
}
/**
* Method to create email from request.
*
* @param RequestAbstract $request Request
*
* @return Email
*
* @since 1.0.0
*/
private function createEmailFromRequest(RequestAbstract $request) : Email
{
$email = new Email();
if ($request->hasData('from')) {
$from = $request->getDataJson('from');
$email->setFrom($from['address'] ?? '', $from['name'] ?? '');
}
if ($request->hasData('to')) {
$tos = $request->getDataJson('to');
foreach ($tos as $to) {
$email->addTo($to['address'] ?? '', $to['name'] ?? '');
}
}
if ($request->hasData('cc')) {
$ccs = $request->getDataJson('cc');
foreach ($ccs as $cc) {
$email->addCC($cc['address'] ?? '', $cc['name'] ?? '');
}
}
if ($request->hasData('bcc')) {
$bccs = $request->getDataJson('bcc');
foreach ($bccs as $bcc) {
$email->addBCC($bcc['address'] ?? '', $bcc['name'] ?? '');
}
}
$email->account = new NullAccount($request->getDataInt('account') ?? $request->header->account);
$email->setHtml($request->getDataBool('ishtml') ?? false);
$email->subject = $request->getDataString('subject') ?? '';
if ($request->getDataBool('ishtml') ?? false) {
$email->msgHTML($request->getDataString('body') ?? '');
} else {
$email->body = $request->getDataString('body') ?? '';
}
$email->bodyAlt = $request->getDataString('bodyalt') ?? '';
return $email;
}
}

View File

@ -6,7 +6,7 @@
*
* @package Modules\Messages
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @license OMS License 2.0
* @version 1.0.0
* @link https://jingga.app
*/
@ -23,7 +23,7 @@ use phpOMS\Views\View;
* Messages controller class.
*
* @package Modules\Messages
* @license OMS License 1.0
* @license OMS License 2.0
* @link https://jingga.app
* @since 1.0.0
* @codeCoverageIgnore

View File

@ -6,7 +6,7 @@
*
* @package Modules\Messages
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @license OMS License 2.0
* @version 1.0.0
* @link https://jingga.app
*/
@ -20,7 +20,7 @@ use phpOMS\Module\ModuleAbstract;
* Messages controller class.
*
* @package Modules\Messages
* @license OMS License 1.0
* @license OMS License 2.0
* @link https://jingga.app
* @since 1.0.0
*/

0
Models/Channel.php Normal file
View File

0
Models/ChannelMapper.php Normal file
View File

82
Models/Email.php Normal file
View File

@ -0,0 +1,82 @@
<?php
/**
* Karaka
*
* PHP Version 8.1
*
* @package Modules\Messages\Models
* @copyright Dennis Eichhorn
* @license OMS License 2.0
* @version 1.0.0
* @link https://jingga.app
*/
declare(strict_types=1);
namespace Modules\Messages\Models;
use Modules\Admin\Models\Account;
use Modules\Admin\Models\NullAccount;
use phpOMS\Message\Mail\Email as MailEmail;
/**
* Null bill type class.
*
* @package Modules\Messages\Models
* @license OMS License 2.0
* @link https://jingga.app
* @since 1.0.0
*/
final class Email extends MailEmail implements \JsonSerializable
{
/**
* Mail id.
*
* @var int
* @since 1.0.0
*/
protected int $id = 0;
public Account $account;
public \DateTimeImmutable $createdAt;
public int $status = 0;
private array $media = [];
public function __construct()
{
$this->account = new NullAccount();
$this->createdAt = new \DateTimeImmutable('now');
}
/**
* Get id
*
* @return int
*
* @since 1.0.0
*/
public function getId() : int
{
return $this->id;
}
/**
* {@inheritdoc}
*/
public function toArray() : array
{
return [
'id' => $this->id,
];
}
/**
* {@inheritdoc}
*/
public function jsonSerialize() : mixed
{
return $this->toArray();
}
}

113
Models/EmailMapper.php Normal file
View File

@ -0,0 +1,113 @@
<?php
/**
* Karaka
*
* PHP Version 8.1
*
* @package Modules\Messages\Models
* @copyright Dennis Eichhorn
* @license OMS License 2.0
* @version 1.0.0
* @link https://jingga.app
*/
declare(strict_types=1);
namespace Modules\Messages\Models;
use Modules\Admin\Models\AccountMapper;
use Modules\Media\Models\MediaMapper;
use phpOMS\DataStorage\Database\Mapper\DataMapperFactory;
/**
* Mapper class.
*
* @package Modules\Messages\Models
* @license OMS License 2.0
* @link https://jingga.app
* @since 1.0.0
*/
final class EmailMapper extends DataMapperFactory
{
/**
* Columns.
*
* @var array<string, array{name:string, type:string, internal:string, autocomplete?:bool, readonly?:bool, writeonly?:bool, annotations?:array}>
* @since 1.0.0
*/
public const COLUMNS = [
'messages_mail_id' => ['name' => 'messages_mail_id', 'type' => 'int', 'internal' => 'id'],
'messages_mail_msgid' => ['name' => 'messages_mail_msgid', 'type' => 'string', 'internal' => 'messageId'],
'messages_mail_status' => ['name' => 'messages_mail_status', 'type' => 'int', 'internal' => 'status'],
'messages_mail_to' => ['name' => 'messages_mail_to', 'type' => 'Json', 'internal' => 'to'],
'messages_mail_from' => ['name' => 'messages_mail_from', 'type' => 'Json', 'internal' => 'from'],
'messages_mail_from_account' => ['name' => 'messages_mail_from_account', 'type' => 'int', 'internal' => 'account'],
'messages_mail_cc' => ['name' => 'messages_mail_cc', 'type' => 'Json', 'internal' => 'cc'],
'messages_mail_bcc' => ['name' => 'messages_mail_bcc', 'type' => 'Json', 'internal' => 'bcc'],
'messages_mail_replyto' => ['name' => 'messages_mail_replyto', 'type' => 'Json', 'internal' => 'replyTo'],
'messages_mail_confimation' => ['name' => 'messages_mail_confimation', 'type' => 'string', 'internal' => 'confirmationAddress'],
'messages_mail_subject' => ['name' => 'messages_mail_subject', 'type' => 'string', 'internal' => 'subject'],
'messages_mail_body' => ['name' => 'messages_mail_body', 'type' => 'string', 'internal' => 'body'],
'messages_mail_bodyalt' => ['name' => 'messages_mail_bodyalt', 'type' => 'string', 'internal' => 'bodyAlt'],
'messages_mail_bodymime' => ['name' => 'messages_mail_bodymime', 'type' => 'string', 'internal' => 'bodyMime'],
'messages_mail_ical' => ['name' => 'messages_mail_ical', 'type' => 'string', 'internal' => 'ical'],
'messages_mail_created_at' => ['name' => 'messages_mail_created_at', 'type' => 'DateTimeImmutable', 'internal' => 'createdAt'],
'messages_mail_sent' => ['name' => 'messages_mail_sent', 'type' => 'DateTimeImmutable', 'internal' => 'createdAt'],
'messages_mail_received' => ['name' => 'messages_mail_received', 'type' => 'DateTimeImmutable', 'internal' => 'createdAt'],
'messages_mail_priority' => ['name' => 'messages_mail_priority', 'type' => 'int', 'internal' => 'priority'],
'messages_mail_encoding' => ['name' => 'messages_mail_encoding', 'type' => 'string', 'internal' => 'encoding'],
'messages_mail_contenttype' => ['name' => 'messages_mail_contenttype', 'type' => 'string', 'internal' => 'contentType'],
'messages_mail_charset' => ['name' => 'messages_mail_charset', 'type' => 'string', 'internal' => 'charset'],
];
/**
* Has many relation.
*
* @var array<string, array{mapper:class-string, table:string, self?:?string, external?:?string, column?:string}>
* @since 1.0.0
*/
public const HAS_MANY = [
'media' => [
'mapper' => MediaMapper::class,
'table' => 'messages_mail_media',
'external' => 'messages_mail_media_dst',
'self' => 'messages_mail_media_src',
],
];
/**
* Belongs to.
*
* @var array<string, array{mapper:class-string, external:string, column?:string, by?:string}>
* @since 1.0.0
*/
public const BELONGS_TO = [
'account' => [
'mapper' => AccountMapper::class,
'external' => 'messages_mail_from_account',
],
];
/**
* Primary table.
*
* @var string
* @since 1.0.0
*/
public const TABLE = 'messages_mail';
/**
* Created at.
*
* @var string
* @since 1.0.0
*/
public const CREATED_AT = 'messages_mail_created_at';
/**
* Primary field name.
*
* @var string
* @since 1.0.0
*/
public const PRIMARYFIELD = 'messages_mail_id';
}

47
Models/NullEmail.php Normal file
View File

@ -0,0 +1,47 @@
<?php
/**
* Karaka
*
* PHP Version 8.1
*
* @package Modules\Messages\Models
* @copyright Dennis Eichhorn
* @license OMS License 2.0
* @version 1.0.0
* @link https://jingga.app
*/
declare(strict_types=1);
namespace Modules\Messages\Models;
/**
* Null bill type class.
*
* @package Modules\Messages\Models
* @license OMS License 2.0
* @link https://jingga.app
* @since 1.0.0
*/
final class NullEmail extends Email
{
/**
* Constructor
*
* @param int $id Model id
*
* @since 1.0.0
*/
public function __construct(int $id = 0)
{
$this->id = $id;
parent::__construct();
}
/**
* {@inheritdoc}
*/
public function jsonSerialize() : mixed
{
return ['id' => $this->id];
}
}

View File

@ -6,7 +6,7 @@
*
* @package Modules\Messages\Models
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @license OMS License 2.0
* @version 1.0.0
* @link https://jingga.app
*/
@ -20,7 +20,7 @@ use phpOMS\Stdlib\Base\Enum;
* Permision state enum.
*
* @package Modules\Messages\Models
* @license OMS License 1.0
* @license OMS License 2.0
* @link https://jingga.app
* @since 1.0.0
*/

0
Models/Server.php Normal file
View File

0
Models/ServerMapper.php Normal file
View File

View File

@ -6,7 +6,7 @@
*
* @package Modules\Localization
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @license OMS License 2.0
* @version 1.0.0
* @link https://jingga.app
*/

View File

@ -6,7 +6,7 @@
*
* @package Modules\Localization
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @license OMS License 2.0
* @version 1.0.0
* @link https://jingga.app
*/

View File

@ -6,7 +6,7 @@
*
* @package Modules\Localization
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @license OMS License 2.0
* @version 1.0.0
* @link https://jingga.app
*/

View File

@ -6,7 +6,7 @@
*
* @package Modules\Localization
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @license OMS License 2.0
* @version 1.0.0
* @link https://jingga.app
*/

View File

@ -6,7 +6,7 @@
*
* @package Modules\Localization
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @license OMS License 2.0
* @version 1.0.0
* @link https://jingga.app
*/

View File

@ -6,7 +6,7 @@
*
* @package Modules\Localization
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @license OMS License 2.0
* @version 1.0.0
* @link https://jingga.app
*/

View File

@ -6,7 +6,7 @@
*
* @package Modules\Localization
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @license OMS License 2.0
* @version 1.0.0
* @link https://jingga.app
*/

View File

@ -6,7 +6,7 @@
*
* @package Modules\Localization
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @license OMS License 2.0
* @version 1.0.0
* @link https://jingga.app
*/

View File

@ -6,7 +6,7 @@
*
* @package Modules\Localization
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @license OMS License 2.0
* @version 1.0.0
* @link https://jingga.app
*/

View File

@ -6,7 +6,7 @@
*
* @package Modules\Localization
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @license OMS License 2.0
* @version 1.0.0
* @link https://jingga.app
*/

View File

@ -6,7 +6,7 @@
*
* @package Modules\Localization
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @license OMS License 2.0
* @version 1.0.0
* @link https://jingga.app
*/

View File

@ -6,7 +6,7 @@
*
* @package Modules\Localization
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @license OMS License 2.0
* @version 1.0.0
* @link https://jingga.app
*/

View File

@ -6,7 +6,7 @@
*
* @package Modules\Localization
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @license OMS License 2.0
* @version 1.0.0
* @link https://jingga.app
*/

View File

@ -6,7 +6,7 @@
*
* @package Modules\Localization
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @license OMS License 2.0
* @version 1.0.0
* @link https://jingga.app
*/

View File

@ -6,7 +6,7 @@
*
* @package Modules\Localization
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @license OMS License 2.0
* @version 1.0.0
* @link https://jingga.app
*/

View File

@ -6,7 +6,7 @@
*
* @package Modules\Localization
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @license OMS License 2.0
* @version 1.0.0
* @link https://jingga.app
*/

View File

@ -6,7 +6,7 @@
*
* @package Modules\Localization
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @license OMS License 2.0
* @version 1.0.0
* @link https://jingga.app
*/

View File

@ -6,7 +6,7 @@
*
* @package Modules\Localization
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @license OMS License 2.0
* @version 1.0.0
* @link https://jingga.app
*/

View File

@ -6,7 +6,7 @@
*
* @package Modules\Localization
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @license OMS License 2.0
* @version 1.0.0
* @link https://jingga.app
*/

View File

@ -6,7 +6,7 @@
*
* @package Modules\Localization
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @license OMS License 2.0
* @version 1.0.0
* @link https://jingga.app
*/

View File

@ -6,7 +6,7 @@
*
* @package Modules\Localization
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @license OMS License 2.0
* @version 1.0.0
* @link https://jingga.app
*/

View File

@ -6,7 +6,7 @@
*
* @package Modules\Localization
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @license OMS License 2.0
* @version 1.0.0
* @link https://jingga.app
*/

View File

@ -6,7 +6,7 @@
*
* @package Modules\Localization
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @license OMS License 2.0
* @version 1.0.0
* @link https://jingga.app
*/

View File

@ -6,7 +6,7 @@
*
* @package Modules\Localization
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @license OMS License 2.0
* @version 1.0.0
* @link https://jingga.app
*/

View File

@ -6,7 +6,7 @@
*
* @package Modules\Localization
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @license OMS License 2.0
* @version 1.0.0
* @link https://jingga.app
*/

View File

@ -6,7 +6,7 @@
*
* @package Modules\Localization
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @license OMS License 2.0
* @version 1.0.0
* @link https://jingga.app
*/

View File

@ -6,7 +6,7 @@
*
* @package Modules\Localization
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @license OMS License 2.0
* @version 1.0.0
* @link https://jingga.app
*/

View File

@ -6,7 +6,7 @@
*
* @package Modules\Localization
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @license OMS License 2.0
* @version 1.0.0
* @link https://jingga.app
*/

View File

@ -6,7 +6,7 @@
*
* @package Modules\Localization
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @license OMS License 2.0
* @version 1.0.0
* @link https://jingga.app
*/

View File

@ -6,7 +6,7 @@
*
* @package Modules\Localization
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @license OMS License 2.0
* @version 1.0.0
* @link https://jingga.app
*/

View File

@ -6,7 +6,7 @@
*
* @package Modules\Localization
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @license OMS License 2.0
* @version 1.0.0
* @link https://jingga.app
*/

View File

@ -6,7 +6,7 @@
*
* @package Modules\Localization
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @license OMS License 2.0
* @version 1.0.0
* @link https://jingga.app
*/

View File

@ -6,7 +6,7 @@
*
* @package Modules\Localization
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @license OMS License 2.0
* @version 1.0.0
* @link https://jingga.app
*/

View File

@ -6,7 +6,7 @@
*
* @package Modules\Localization
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @license OMS License 2.0
* @version 1.0.0
* @link https://jingga.app
*/

View File

@ -6,7 +6,7 @@
*
* @package Modules\Localization
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @license OMS License 2.0
* @version 1.0.0
* @link https://jingga.app
*/

View File

@ -6,7 +6,7 @@
*
* @package Modules\Localization
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @license OMS License 2.0
* @version 1.0.0
* @link https://jingga.app
*/

View File

@ -6,7 +6,7 @@
*
* @package Modules\Localization
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @license OMS License 2.0
* @version 1.0.0
* @link https://jingga.app
*/

View File

@ -6,7 +6,7 @@
*
* @package Modules\Localization
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @license OMS License 2.0
* @version 1.0.0
* @link https://jingga.app
*/

View File

@ -6,7 +6,7 @@
*
* @package Modules\Localization
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @license OMS License 2.0
* @version 1.0.0
* @link https://jingga.app
*/

View File

@ -6,7 +6,7 @@
*
* @package Modules\Localization
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @license OMS License 2.0
* @version 1.0.0
* @link https://jingga.app
*/

View File

@ -6,7 +6,7 @@
*
* @package Modules\Localization
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @license OMS License 2.0
* @version 1.0.0
* @link https://jingga.app
*/

View File

@ -6,7 +6,7 @@
*
* @package Modules\Localization
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @license OMS License 2.0
* @version 1.0.0
* @link https://jingga.app
*/

View File

@ -6,7 +6,7 @@
*
* @package Modules\Localization
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @license OMS License 2.0
* @version 1.0.0
* @link https://jingga.app
*/

View File

@ -6,7 +6,7 @@
*
* @package Modules\Localization
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @license OMS License 2.0
* @version 1.0.0
* @link https://jingga.app
*/

View File

@ -6,7 +6,7 @@
*
* @package Modules\Messages
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @license OMS License 2.0
* @version 1.0.0
* @link https://jingga.app
*/

View File

@ -6,7 +6,7 @@
*
* @package Modules\Messages
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @license OMS License 2.0
* @version 1.0.0
* @link https://jingga.app
*/
@ -44,7 +44,7 @@ echo $this->getData('nav')->render(); ?>
<tbody>
<?php $count = 0;
foreach ($messages as $key => $value) : ++$count;
$url = UriFactory::build('{/lang}/{/app}/messages/mail/single?{?}&id=' . $value->uid); ?>
$url = UriFactory::build('{/base}/messages/mail/single?{?}&id=' . $value->uid); ?>
<tr>
<td><span class="check"><input type="checkbox" name=""></span>
<td><a href="<?= $url; ?>"<?= $this->printHtml($value->seen == 0 ? ' class="unseen"' : ''); ?>></a>
@ -66,7 +66,7 @@ echo $this->getData('nav')->render(); ?>
<div class="col-xs-12 col-md-3">
<div class="box">
<a tabindex="0" class="button" href="<?= UriFactory::build('{/lang}/{/app}/messages/mail/create'); ?>"><i class="fa fa-pencil"></i> <?= $this->getHtml('Create', '0', '0'); ?></a>
<a tabindex="0" class="button" href="<?= UriFactory::build('{/base}/messages/mail/create'); ?>"><i class="fa fa-pencil"></i> <?= $this->getHtml('Create', '0', '0'); ?></a>
</div>
<div class="portlet">

View File

@ -6,7 +6,7 @@
*
* @package Modules\Messages
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @license OMS License 2.0
* @version 1.0.0
* @link https://jingga.app
*/

View File

@ -6,7 +6,7 @@
*
* @package Modules\Messages
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @license OMS License 2.0
* @version 1.0.0
* @link https://jingga.app
*/

View File

@ -6,7 +6,7 @@
*
* @package Modules\Messages
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @license OMS License 2.0
* @version 1.0.0
* @link https://jingga.app
*/

View File

@ -6,7 +6,7 @@
*
* @package Modules\Messages
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @license OMS License 2.0
* @version 1.0.0
* @link https://jingga.app
*/

View File

@ -6,7 +6,7 @@
*
* @package Modules\Messages
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @license OMS License 2.0
* @version 1.0.0
* @link https://jingga.app
*/

View File

@ -6,7 +6,7 @@
*
* @package tests
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @license OMS License 2.0
* @version 1.0.0
* @link https://jingga.app
*/

View File

@ -6,7 +6,7 @@
*
* @package Modules/tests
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @license OMS License 2.0
* @version 1.0.0
* @link https://jingga.app
*/
@ -20,7 +20,7 @@ namespace tests;
* Autoloader class.
*
* @package tests
* @license OMS License 1.0
* @license OMS License 2.0
* @link https://jingga.app
* @since 1.0.0
*/