diff --git a/application/Espo/Services/ActionHistoryRecord.php b/application/Espo/Services/ActionHistoryRecord.php index 2d6b72bf24..db33aae1d6 100644 --- a/application/Espo/Services/ActionHistoryRecord.php +++ b/application/Espo/Services/ActionHistoryRecord.php @@ -29,6 +29,9 @@ namespace Espo\Services; +/** + * @extends Record<\Espo\Entities\ActionHistoryRecord> + */ class ActionHistoryRecord extends Record { protected $actionHistoryDisabled = true; diff --git a/application/Espo/Services/Attachment.php b/application/Espo/Services/Attachment.php index 27628d41c6..1a59c4e477 100644 --- a/application/Espo/Services/Attachment.php +++ b/application/Espo/Services/Attachment.php @@ -41,6 +41,9 @@ use Espo\Entities\Attachment as AttachmentEntity; use stdClass; +/** + * @extends Record<\Espo\Entities\Attachment> + */ class Attachment extends Record { /** diff --git a/application/Espo/Services/AuthLogRecord.php b/application/Espo/Services/AuthLogRecord.php index c1393c7fc9..a31e4a3a77 100644 --- a/application/Espo/Services/AuthLogRecord.php +++ b/application/Espo/Services/AuthLogRecord.php @@ -29,6 +29,9 @@ namespace Espo\Services; +/** + * @extends Record<\Espo\Entities\AuthLogRecord> + */ class AuthLogRecord extends Record { protected $internalAttributeList = []; diff --git a/application/Espo/Services/AuthToken.php b/application/Espo/Services/AuthToken.php index 272a648446..f287a811c4 100644 --- a/application/Espo/Services/AuthToken.php +++ b/application/Espo/Services/AuthToken.php @@ -31,6 +31,9 @@ namespace Espo\Services; use stdClass; +/** + * @extends Record<\Espo\Entities\AuthToken> + */ class AuthToken extends Record { protected $actionHistoryDisabled = true; diff --git a/application/Espo/Services/DashboardTemplate.php b/application/Espo/Services/DashboardTemplate.php index 399afa8f0d..f819d5b21d 100644 --- a/application/Espo/Services/DashboardTemplate.php +++ b/application/Espo/Services/DashboardTemplate.php @@ -36,6 +36,9 @@ use Espo\Core\Exceptions\Forbidden; use Espo\Entities\User; +/** + * @extends Record<\Espo\Entities\DashboardTemplate> + */ class DashboardTemplate extends Record { protected function applyLayout(Entity $preferences, Entity $template, bool $append): void diff --git a/application/Espo/Services/Email.php b/application/Espo/Services/Email.php index 82bad7122e..e3316c5e66 100644 --- a/application/Espo/Services/Email.php +++ b/application/Espo/Services/Email.php @@ -61,6 +61,9 @@ use Exception; use Throwable; use stdClass; +/** + * @extends Record<\Espo\Entities\Email> + */ class Email extends Record implements Di\EmailSenderAware, diff --git a/application/Espo/Services/EmailAccount.php b/application/Espo/Services/EmailAccount.php index 1dbb4b3fbb..8d3476165c 100644 --- a/application/Espo/Services/EmailAccount.php +++ b/application/Espo/Services/EmailAccount.php @@ -46,6 +46,9 @@ use Espo\Core\Di; use Throwable; use stdClass; +/** + * @extends Record<\Espo\Entities\EmailAccount> + */ class EmailAccount extends Record implements Di\CryptAware diff --git a/application/Espo/Services/EmailAddress.php b/application/Espo/Services/EmailAddress.php index 40b4deb336..3afb98a416 100644 --- a/application/Espo/Services/EmailAddress.php +++ b/application/Espo/Services/EmailAddress.php @@ -34,6 +34,9 @@ use Espo\Entities\EmailAddress as EmailAddressEntity; use Espo\ORM\Query\SelectBuilder as QueryBuilder; +/** + * @extends Record<\Espo\Entities\EmailAddress> + */ class EmailAddress extends Record { const ERASED_PREFIX = 'ERASED:'; diff --git a/application/Espo/Services/EmailFilter.php b/application/Espo/Services/EmailFilter.php index 68f792c7f3..d3e46284d1 100644 --- a/application/Espo/Services/EmailFilter.php +++ b/application/Espo/Services/EmailFilter.php @@ -33,11 +33,15 @@ use Espo\ORM\Entity; use Espo\Core\Exceptions\Forbidden; +/** + * @extends Record<\Espo\Entities\EmailFilter> + */ class EmailFilter extends Record { protected function beforeCreateEntity(Entity $entity, $data) { parent::beforeCreateEntity($entity, $data); + if (!$this->getAcl()->check($entity, 'edit')) { throw new Forbidden(); } diff --git a/application/Espo/Services/EmailFolder.php b/application/Espo/Services/EmailFolder.php index 32a7f0469c..125e57df2b 100644 --- a/application/Espo/Services/EmailFolder.php +++ b/application/Espo/Services/EmailFolder.php @@ -38,6 +38,9 @@ use Espo\Core\Exceptions\Error; use Espo\Core\Di; +/** + * @extends Record<\Espo\Entities\EmailFolder> + */ class EmailFolder extends Record implements Di\LanguageAware { use Di\LanguageSetter; diff --git a/application/Espo/Services/EmailTemplate.php b/application/Espo/Services/EmailTemplate.php index 55e1c8767d..b60035cdbc 100644 --- a/application/Espo/Services/EmailTemplate.php +++ b/application/Espo/Services/EmailTemplate.php @@ -45,6 +45,9 @@ use Espo\Core\Di; use stdClass; +/** + * @extends Record<\Espo\Entities\EmailTemplate> + */ class EmailTemplate extends Record implements Di\FieldUtilAware diff --git a/application/Espo/Services/EmailTemplateCategory.php b/application/Espo/Services/EmailTemplateCategory.php index 2b8aa57a44..ff82214b2b 100644 --- a/application/Espo/Services/EmailTemplateCategory.php +++ b/application/Espo/Services/EmailTemplateCategory.php @@ -29,7 +29,12 @@ namespace Espo\Services; -class EmailTemplateCategory extends \Espo\Services\RecordTree +use Espo\Services\RecordTree; + +/** + * @extends RecordTree<\Espo\Entities\EmailTemplateCategory> + */ +class EmailTemplateCategory extends RecordTree { protected $categoryField = 'category'; } diff --git a/application/Espo/Services/ExternalAccount.php b/application/Espo/Services/ExternalAccount.php index 9bea909f69..be059eb7c3 100644 --- a/application/Espo/Services/ExternalAccount.php +++ b/application/Espo/Services/ExternalAccount.php @@ -48,6 +48,9 @@ use Espo\Entities\Integration as IntegrationEntity; use Exception; +/** + * @extends Record<\Espo\Entities\ExternalAccount> + */ class ExternalAccount extends Record implements Di\HookManagerAware { use Di\HookManagerSetter; diff --git a/application/Espo/Services/Import.php b/application/Espo/Services/Import.php index 75cf2dd74a..bace138528 100644 --- a/application/Espo/Services/Import.php +++ b/application/Espo/Services/Import.php @@ -41,6 +41,9 @@ use Espo\Core\{ use Espo\Services\Record; +/** + * @extends Record<\Espo\Entities\Import> + */ class Import extends Record { public function findLinked(string $id, string $link, SearchParams $searchParams): RecordCollection diff --git a/application/Espo/Services/InboundEmail.php b/application/Espo/Services/InboundEmail.php index d9afa97c71..2ecb5eaeed 100644 --- a/application/Espo/Services/InboundEmail.php +++ b/application/Espo/Services/InboundEmail.php @@ -45,6 +45,9 @@ use Espo\Core\Di; use Throwable; +/** + * @extends Record<\Espo\Entities\InboundEmail> + */ class InboundEmail extends RecordService implements Di\CryptAware, diff --git a/application/Espo/Services/Job.php b/application/Espo/Services/Job.php index ac7a64eaee..4131a3a613 100644 --- a/application/Espo/Services/Job.php +++ b/application/Espo/Services/Job.php @@ -29,6 +29,9 @@ namespace Espo\Services; +/** + * @extends Record<\Espo\Entities\Job> + */ class Job extends Record { protected $forceSelectAllAttributes = true; diff --git a/application/Espo/Services/LeadCapture.php b/application/Espo/Services/LeadCapture.php index ca05750052..6e9ad5f67c 100644 --- a/application/Espo/Services/LeadCapture.php +++ b/application/Espo/Services/LeadCapture.php @@ -43,6 +43,9 @@ use Espo\Core\{ use stdClass; +/** + * @extends Record<\Espo\Entities\LeadCapture> + */ class LeadCapture extends Record { /** diff --git a/application/Espo/Services/LeadCaptureLogRecord.php b/application/Espo/Services/LeadCaptureLogRecord.php index 4aa8025aa4..65dd891679 100644 --- a/application/Espo/Services/LeadCaptureLogRecord.php +++ b/application/Espo/Services/LeadCaptureLogRecord.php @@ -29,6 +29,9 @@ namespace Espo\Services; +/** + * @extends Record<\Espo\Entities\LeadCaptureLogRecord> + */ class LeadCaptureLogRecord extends Record { diff --git a/application/Espo/Services/Note.php b/application/Espo/Services/Note.php index a6dbe3fef7..29cfab19e1 100644 --- a/application/Espo/Services/Note.php +++ b/application/Espo/Services/Note.php @@ -45,6 +45,9 @@ use Espo\ORM\Entity; use stdClass; +/** + * @extends Record<\Espo\Entities\Note> + */ class Note extends Record { protected function afterCreateEntity(Entity $entity, $data) diff --git a/application/Espo/Services/Notification.php b/application/Espo/Services/Notification.php index 00cb7a1168..77a165bff6 100644 --- a/application/Espo/Services/Notification.php +++ b/application/Espo/Services/Notification.php @@ -38,6 +38,9 @@ use Espo\Entities\User; use Espo\Tools\Stream\NoteAccessControl; +/** + * @extends Record<\Espo\Entities\Notification> + */ class Notification extends \Espo\Services\Record { protected $actionHistoryDisabled = true; diff --git a/application/Espo/Services/Portal.php b/application/Espo/Services/Portal.php index 5fc757a9e5..f038c7240a 100644 --- a/application/Espo/Services/Portal.php +++ b/application/Espo/Services/Portal.php @@ -36,6 +36,9 @@ use Espo\Entities\Portal as PortalEntity; use Espo\Core\Di; +/** + * @extends Record<\Espo\Entities\Portal> + */ class Portal extends Record implements Di\FileManagerAware, diff --git a/application/Espo/Services/PortalRole.php b/application/Espo/Services/PortalRole.php index e02d64489b..aa9e1c4d67 100644 --- a/application/Espo/Services/PortalRole.php +++ b/application/Espo/Services/PortalRole.php @@ -33,6 +33,9 @@ use Espo\ORM\Entity; use Espo\Core\Di; +/** + * @extends Record<\Espo\Entities\PortalRole> + */ class PortalRole extends Record implements Di\FileManagerAware, diff --git a/application/Espo/Services/Record.php b/application/Espo/Services/Record.php index 8c7ed4fb8b..3ca22e9193 100644 --- a/application/Espo/Services/Record.php +++ b/application/Espo/Services/Record.php @@ -64,8 +64,6 @@ class Record extends RecordService implements Di\InjectableFactoryAware, Di\SelectBuilderFactoryAware, Di\LogAware, - - /** for backward compatibility, to be removed */ \Espo\Core\Interfaces\Injectable { use Di\AclManagerSetter; diff --git a/application/Espo/Services/RecordTree.php b/application/Espo/Services/RecordTree.php index b9031d3735..f68eeab6f1 100644 --- a/application/Espo/Services/RecordTree.php +++ b/application/Espo/Services/RecordTree.php @@ -48,6 +48,10 @@ use Espo\Core\Acl\Exceptions\NotImplemented; use stdClass; +/** + * @template TEntity of Entity + * @extends Record + */ class RecordTree extends Record { const MAX_DEPTH = 2; diff --git a/application/Espo/Services/Role.php b/application/Espo/Services/Role.php index c8f5e465aa..29e4905771 100644 --- a/application/Espo/Services/Role.php +++ b/application/Espo/Services/Role.php @@ -33,6 +33,9 @@ use Espo\ORM\Entity; use Espo\Core\Di; +/** + * @extends Record<\Espo\Entities\Role> + */ class Role extends Record implements Di\FileManagerAware, diff --git a/application/Espo/Services/ScheduledJob.php b/application/Espo/Services/ScheduledJob.php index 7ab9cedc21..37868fe75f 100644 --- a/application/Espo/Services/ScheduledJob.php +++ b/application/Espo/Services/ScheduledJob.php @@ -37,6 +37,9 @@ use Cron\CronExpression; use Exception; +/** + * @extends Record<\Espo\Entities\ScheduledJob> + */ class ScheduledJob extends Record { /** Should not be removed. */ diff --git a/application/Espo/Services/Team.php b/application/Espo/Services/Team.php index adb61d2d72..8653dfc6e3 100644 --- a/application/Espo/Services/Team.php +++ b/application/Espo/Services/Team.php @@ -35,6 +35,9 @@ use Espo\Core\Select\SearchParams; use Espo\Core\Di; +/** + * @extends Record<\Espo\Entities\Team> + */ class Team extends Record implements Di\FileManagerAware, diff --git a/application/Espo/Services/User.php b/application/Espo/Services/User.php index fd2eb58af0..36b0e9abc6 100644 --- a/application/Espo/Services/User.php +++ b/application/Espo/Services/User.php @@ -58,6 +58,9 @@ use Espo\ORM\Entity; use stdClass; use Exception; +/** + * @extends Record<\Espo\Entities\User> + */ class User extends Record implements Di\TemplateFileManagerAware, diff --git a/application/Espo/Services/Webhook.php b/application/Espo/Services/Webhook.php index 152219cb37..8530dda618 100644 --- a/application/Espo/Services/Webhook.php +++ b/application/Espo/Services/Webhook.php @@ -37,6 +37,9 @@ use Espo\Entities\User; use stdClass; +/** + * @extends Record<\Espo\Entities\Webhook> + */ class Webhook extends Record implements Di\WebhookManagerAware