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\PermissionCategory;
use Modules\Admin\Models\SettingsEnum;
use Modules\Messages\Models\SettingsEnum as SettingsEnumMessages;
use Modules\Media\Models\Collection;
use Modules\Media\Models\CollectionMapper;
use Modules\Media\Models\UploadFile;
use Modules\Messages\Models\EmailMapper;
use Modules\Messages\Models\SettingsEnum as SettingsEnumMessages;
use phpOMS\Account\AccountStatus;
use phpOMS\Account\AccountType;
use phpOMS\Account\GroupStatus;
@ -64,8 +64,8 @@ use phpOMS\Message\Http\HttpResponse;
use phpOMS\Message\Http\RequestMethod;
use phpOMS\Message\Http\RequestStatusCode;
use phpOMS\Message\Http\Rest;
use phpOMS\Message\Mail\MailHandler;
use phpOMS\Message\Mail\DsnNotificationType;
use phpOMS\Message\Mail\MailHandler;
use phpOMS\Message\Mail\Smtp;
use phpOMS\Message\Mail\SubmitType;
use phpOMS\Message\NotificationLevel;
@ -257,6 +257,16 @@ final class ApiController extends Controller
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
{
/** @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
// https://github.com/Karaka-Management/phpOMS/issues/365
if ($language !== '') {
$mailL11n = $mail->getL11nByLanguage($language);
$mailL11n = $mail->getL11nByLanguage($language);
$mail->subject = $mailL11n->subject;
$mail->body = $mailL11n->body;
$mail->bodyAlt = $mailL11n->bodyAlt;
@ -288,6 +298,7 @@ final class ApiController extends Controller
);
if (empty($templateSettings)) {
/** @var \Model\Setting[] $templateSettings */
$templateSettings = $this->app->appSettings->get(
names: [SettingsEnumMessages::HEADER_TEMPLATE, SettingsEnumMessages::FOOTER_TEMPLATE],
module: 'Messages',
@ -313,9 +324,9 @@ final class ApiController extends Controller
$mail->template = \array_merge(
$mail->template,
[
'{header_template}' => $header->body,
'{header_template}' => $header->body,
'{header_template_alt}' => $header->bodyAlt,
'{footer_template}' => $footer->body,
'{footer_template}' => $footer->body,
'{footer_template_alt}' => $footer->bodyAlt,
]
);
@ -388,7 +399,7 @@ final class ApiController extends Controller
$mail->template,
[
'{reset_link}' => $resetLink,
'{user_name}' => $account->login,
'{user_name}' => $account->login,
]
);
@ -523,7 +534,7 @@ final class ApiController extends Controller
$mail->template,
[
'{new_password}' => $pass,
'{user_name}' => $account->login,
'{user_name}' => $account->login,
]
);
@ -3722,7 +3733,7 @@ final class ApiController extends Controller
return;
}
/** @var \Modules\Admin\Models\Address $address */
/** @var \phpOMS\Stdlib\Base\Address $address */
$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->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
*
* @param mixed ...$data Generic data
* @param string ...$data Generic data
*
* @return void
*
@ -143,7 +143,7 @@ final class CliController extends Controller
// Enter read only mode
$setting->content = (string) ApplicationStatus::READ_ONLY;
$this->app->appSetting->save([$setting]);
$this->app->appSettings->save([$setting]);
$mapper = SettingMapper::yield()
->where('isEncrypted', true);
@ -164,6 +164,6 @@ final class CliController extends Controller
// Restore old mode
$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.
*
* @var Address[]
* @var \phpOMS\Stdlib\Base\Address[]
* @since 1.0.0
*/
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(
int $unitId,
string $module,
@ -284,7 +296,7 @@ class AccountMapper extends DataMapperFactory
{
$accounts = [];
$sql =<<<SQL
$sql = <<<SQL
SELECT account_permission_account as account
FROM account_permission
WHERE (account_permission_unit = {$unitId} OR account_permission_unit IS NULL)
@ -294,14 +306,14 @@ class AccountMapper extends DataMapperFactory
AND account_permission_hasread = 1;
SQL;
$query = new Builder(self::$db);
$results = $query->raw($sql)->execute()->fetchAll(\PDO::FETCH_ASSOC);
$query = new Builder(self::$db);
$results = $query->raw($sql)->execute()?->fetchAll(\PDO::FETCH_ASSOC) ?? [];
foreach ($results as $result) {
$accounts[] = (int) $result['account'];
}
$sql =<<<SQL
$sql = <<<SQL
SELECT account_group_account as account
FROM account_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;
SQL;
$query = new Builder(self::$db);
$results = $query->raw($sql)->execute()->fetchAll(\PDO::FETCH_ASSOC);
$query = new Builder(self::$db);
$results = $query->raw($sql)->execute()?->fetchAll(\PDO::FETCH_ASSOC) ?? [];
foreach ($results as $result) {
$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}>
* @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 = [
'country' => [

View File

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

View File

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