code fixes

This commit is contained in:
Dennis Eichhorn 2024-03-15 20:24:37 +00:00
parent f375214ced
commit 5065d38e2e
7 changed files with 53 additions and 21 deletions

View File

@ -40,11 +40,11 @@ use Modules\Admin\Models\ModuleStatusUpdateType;
use Modules\Admin\Models\NullAccount; use Modules\Admin\Models\NullAccount;
use Modules\Admin\Models\PermissionCategory; use Modules\Admin\Models\PermissionCategory;
use Modules\Admin\Models\SettingsEnum; use Modules\Admin\Models\SettingsEnum;
use Modules\Messages\Models\SettingsEnum as SettingsEnumMessages;
use Modules\Media\Models\Collection; use Modules\Media\Models\Collection;
use Modules\Media\Models\CollectionMapper; use Modules\Media\Models\CollectionMapper;
use Modules\Media\Models\UploadFile; use Modules\Media\Models\UploadFile;
use Modules\Messages\Models\EmailMapper; use Modules\Messages\Models\EmailMapper;
use Modules\Messages\Models\SettingsEnum as SettingsEnumMessages;
use phpOMS\Account\AccountStatus; use phpOMS\Account\AccountStatus;
use phpOMS\Account\AccountType; use phpOMS\Account\AccountType;
use phpOMS\Account\GroupStatus; use phpOMS\Account\GroupStatus;
@ -64,8 +64,8 @@ use phpOMS\Message\Http\HttpResponse;
use phpOMS\Message\Http\RequestMethod; use phpOMS\Message\Http\RequestMethod;
use phpOMS\Message\Http\RequestStatusCode; use phpOMS\Message\Http\RequestStatusCode;
use phpOMS\Message\Http\Rest; use phpOMS\Message\Http\Rest;
use phpOMS\Message\Mail\MailHandler;
use phpOMS\Message\Mail\DsnNotificationType; use phpOMS\Message\Mail\DsnNotificationType;
use phpOMS\Message\Mail\MailHandler;
use phpOMS\Message\Mail\Smtp; use phpOMS\Message\Mail\Smtp;
use phpOMS\Message\Mail\SubmitType; use phpOMS\Message\Mail\SubmitType;
use phpOMS\Message\NotificationLevel; use phpOMS\Message\NotificationLevel;
@ -257,6 +257,16 @@ final class ApiController extends Controller
return $handler; return $handler;
} }
/**
* Setup default values for emails (incl. basic templating)
*
* @param \Modules\Messages\Models\Email $mail Email
* @param string $language Email language (e.g. 'en', 'de')
*
* @return bool
*
* @since 1.0.0
*/
public function setupEmailDefaults(\Modules\Messages\Models\Email $mail, string $language = '') : bool public function setupEmailDefaults(\Modules\Messages\Models\Email $mail, string $language = '') : bool
{ {
/** @var \Model\Setting[] $emailSettings */ /** @var \Model\Setting[] $emailSettings */
@ -274,7 +284,7 @@ final class ApiController extends Controller
// @todo Implement a model reading system which allows to define alternative conditions/wheres // @todo Implement a model reading system which allows to define alternative conditions/wheres
// https://github.com/Karaka-Management/phpOMS/issues/365 // https://github.com/Karaka-Management/phpOMS/issues/365
if ($language !== '') { if ($language !== '') {
$mailL11n = $mail->getL11nByLanguage($language); $mailL11n = $mail->getL11nByLanguage($language);
$mail->subject = $mailL11n->subject; $mail->subject = $mailL11n->subject;
$mail->body = $mailL11n->body; $mail->body = $mailL11n->body;
$mail->bodyAlt = $mailL11n->bodyAlt; $mail->bodyAlt = $mailL11n->bodyAlt;
@ -288,6 +298,7 @@ final class ApiController extends Controller
); );
if (empty($templateSettings)) { if (empty($templateSettings)) {
/** @var \Model\Setting[] $templateSettings */
$templateSettings = $this->app->appSettings->get( $templateSettings = $this->app->appSettings->get(
names: [SettingsEnumMessages::HEADER_TEMPLATE, SettingsEnumMessages::FOOTER_TEMPLATE], names: [SettingsEnumMessages::HEADER_TEMPLATE, SettingsEnumMessages::FOOTER_TEMPLATE],
module: 'Messages', module: 'Messages',
@ -313,9 +324,9 @@ final class ApiController extends Controller
$mail->template = \array_merge( $mail->template = \array_merge(
$mail->template, $mail->template,
[ [
'{header_template}' => $header->body, '{header_template}' => $header->body,
'{header_template_alt}' => $header->bodyAlt, '{header_template_alt}' => $header->bodyAlt,
'{footer_template}' => $footer->body, '{footer_template}' => $footer->body,
'{footer_template_alt}' => $footer->bodyAlt, '{footer_template_alt}' => $footer->bodyAlt,
] ]
); );
@ -388,7 +399,7 @@ final class ApiController extends Controller
$mail->template, $mail->template,
[ [
'{reset_link}' => $resetLink, '{reset_link}' => $resetLink,
'{user_name}' => $account->login, '{user_name}' => $account->login,
] ]
); );
@ -523,7 +534,7 @@ final class ApiController extends Controller
$mail->template, $mail->template,
[ [
'{new_password}' => $pass, '{new_password}' => $pass,
'{user_name}' => $account->login, '{user_name}' => $account->login,
] ]
); );
@ -3722,7 +3733,7 @@ final class ApiController extends Controller
return; return;
} }
/** @var \Modules\Admin\Models\Address $address */ /** @var \phpOMS\Stdlib\Base\Address $address */
$address = AddressMapper::get()->where('id', (int) $request->getData('id'))->execute(); $address = AddressMapper::get()->where('id', (int) $request->getData('id'))->execute();
$this->deleteModelRelation($request->header->account, (int) $request->getData('account'), [$address->id], AccountMapper::class, 'addresses', 'account-address', $request->getOrigin()); $this->deleteModelRelation($request->header->account, (int) $request->getData('account'), [$address->id], AccountMapper::class, 'addresses', 'account-address', $request->getOrigin());
$this->deleteModel($request->header->account, $address, AddressMapper::class, 'address', $request->getOrigin()); $this->deleteModel($request->header->account, $address, AddressMapper::class, 'address', $request->getOrigin());

View File

@ -127,7 +127,7 @@ final class CliController extends Controller
/** /**
* Api method to make a call to the cli app * Api method to make a call to the cli app
* *
* @param mixed ...$data Generic data * @param string ...$data Generic data
* *
* @return void * @return void
* *
@ -143,7 +143,7 @@ final class CliController extends Controller
// Enter read only mode // Enter read only mode
$setting->content = (string) ApplicationStatus::READ_ONLY; $setting->content = (string) ApplicationStatus::READ_ONLY;
$this->app->appSetting->save([$setting]); $this->app->appSettings->save([$setting]);
$mapper = SettingMapper::yield() $mapper = SettingMapper::yield()
->where('isEncrypted', true); ->where('isEncrypted', true);
@ -164,6 +164,6 @@ final class CliController extends Controller
// Restore old mode // Restore old mode
$setting->content = $oldMode; $setting->content = $oldMode;
$this->app->appSetting->save([$setting]); $this->app->appSettings->save([$setting]);
} }
} }

View File

@ -59,7 +59,7 @@ class Account extends \phpOMS\Account\Account
/** /**
* Location data. * Location data.
* *
* @var Address[] * @var \phpOMS\Stdlib\Base\Address[]
* @since 1.0.0 * @since 1.0.0
*/ */
public array $addresses = []; public array $addresses = [];

View File

@ -275,6 +275,18 @@ class AccountMapper extends DataMapperFactory
} }
} }
/**
* Find accounts that have read permission
*
* @param int $unitId Unit id
* @param string $module Module name
* @param int $category Category
* @param int $element Element id
*
* @return int[] Account ids
*
* @since 1.0.0
*/
public static function findReadPermission( public static function findReadPermission(
int $unitId, int $unitId,
string $module, string $module,
@ -284,7 +296,7 @@ class AccountMapper extends DataMapperFactory
{ {
$accounts = []; $accounts = [];
$sql =<<<SQL $sql = <<<SQL
SELECT account_permission_account as account SELECT account_permission_account as account
FROM account_permission FROM account_permission
WHERE (account_permission_unit = {$unitId} OR account_permission_unit IS NULL) WHERE (account_permission_unit = {$unitId} OR account_permission_unit IS NULL)
@ -294,14 +306,14 @@ class AccountMapper extends DataMapperFactory
AND account_permission_hasread = 1; AND account_permission_hasread = 1;
SQL; SQL;
$query = new Builder(self::$db); $query = new Builder(self::$db);
$results = $query->raw($sql)->execute()->fetchAll(\PDO::FETCH_ASSOC); $results = $query->raw($sql)->execute()?->fetchAll(\PDO::FETCH_ASSOC) ?? [];
foreach ($results as $result) { foreach ($results as $result) {
$accounts[] = (int) $result['account']; $accounts[] = (int) $result['account'];
} }
$sql =<<<SQL $sql = <<<SQL
SELECT account_group_account as account SELECT account_group_account as account
FROM account_group FROM account_group
LEFT JOIN group_permission ON account_group.account_group_group = group_permission.group_permission_group LEFT JOIN group_permission ON account_group.account_group_group = group_permission.group_permission_group
@ -312,8 +324,8 @@ class AccountMapper extends DataMapperFactory
AND group_permission_hasread = 1; AND group_permission_hasread = 1;
SQL; SQL;
$query = new Builder(self::$db); $query = new Builder(self::$db);
$results = $query->raw($sql)->execute()->fetchAll(\PDO::FETCH_ASSOC); $results = $query->raw($sql)->execute()?->fetchAll(\PDO::FETCH_ASSOC) ?? [];
foreach ($results as $result) { foreach ($results as $result) {
$accounts[] = (int) $result['account']; $accounts[] = (int) $result['account'];

View File

@ -97,6 +97,15 @@ final class LocalizationMapper extends DataMapperFactory
* *
* @var array<string, array{mapper:class-string, external:string, by?:string, column?:string, conditional?:bool}> * @var array<string, array{mapper:class-string, external:string, by?:string, column?:string, conditional?:bool}>
* @since 1.0.0 * @since 1.0.0
*
* @question Is there a real significant difference between by and column?
* By defines the reference id
* Column defines the data which is stored in the variable IFF a scalar type should be stored instead of an object
* Maybe using a flag instead of column would be better: e.g. useScalar = true -> don't create object
* But sometimes we don't define 'by' if the 'by' is the primary key:
* by => id
* column => whatever
* But we don't type this and only define column.
*/ */
public const OWNS_ONE = [ public const OWNS_ONE = [
'country' => [ 'country' => [

View File

@ -73,7 +73,7 @@ class AddressView extends View
/** /**
* Reference id * Reference id
* *
* @var string * @var int
* @since 1.0.0 * @since 1.0.0
*/ */
public int $refId = 0; public int $refId = 0;

View File

@ -33,7 +33,7 @@ class ContactView extends View
/** /**
* Contact * Contact
* *
* @var Modules\Admin\Models\Contact[] * @var \Modules\Admin\Models\Contact[]
* @since 1.0.0 * @since 1.0.0
*/ */
public array $contacts = []; public array $contacts = [];
@ -73,7 +73,7 @@ class ContactView extends View
/** /**
* Reference id * Reference id
* *
* @var string * @var int
* @since 1.0.0 * @since 1.0.0
*/ */
public int $refId = 0; public int $refId = 0;