type fixes
This commit is contained in:
@@ -93,6 +93,7 @@ class AccessChecker implements AccessEntityCREDChecker
|
||||
}
|
||||
|
||||
if ($parent->getEntityType() === 'Note') {
|
||||
/** @var Note $parent */
|
||||
$result = $this->checkEntityReadNoteParent($user, $parent);
|
||||
|
||||
if ($result !== null) {
|
||||
|
||||
@@ -42,6 +42,9 @@ use Espo\Core\{
|
||||
AclManager,
|
||||
};
|
||||
|
||||
/**
|
||||
* @implements AccessEntityCREDSChecker<User>
|
||||
*/
|
||||
class AccessChecker implements AccessEntityCREDSChecker
|
||||
{
|
||||
use DefaultAccessCheckerDependency;
|
||||
@@ -132,6 +135,8 @@ class AccessChecker implements AccessEntityCREDSChecker
|
||||
|
||||
public function checkEntityStream(User $user, Entity $entity, ScopeData $data): bool
|
||||
{
|
||||
/** @var User $entity */
|
||||
|
||||
return $this->aclManager->checkUserPermission($user, $entity, 'user');
|
||||
}
|
||||
}
|
||||
|
||||
@@ -45,6 +45,9 @@ use Espo\Core\{
|
||||
Portal\Acl\Traits\DefaultAccessCheckerDependency,
|
||||
};
|
||||
|
||||
/**
|
||||
* @implements AccessEntityCREDChecker<User>
|
||||
*/
|
||||
class AccessChecker implements AccessEntityCREDChecker
|
||||
{
|
||||
use DefaultAccessCheckerDependency;
|
||||
@@ -94,6 +97,7 @@ class AccessChecker implements AccessEntityCREDChecker
|
||||
}
|
||||
|
||||
if ($parent->getEntityType() === 'Note') {
|
||||
/** @var Note $parent */
|
||||
$result = $this->checkEntityReadNoteParent($user, $parent);
|
||||
|
||||
if ($result !== null) {
|
||||
|
||||
@@ -44,6 +44,8 @@ class Company implements WhereBuilder
|
||||
{
|
||||
public function build(Entity $entity): ?WhereItem
|
||||
{
|
||||
assert($entity instanceof CoreEntity);
|
||||
|
||||
$orBuilder = OrGroup::createBuilder();
|
||||
|
||||
$toCheck = false;
|
||||
|
||||
@@ -47,6 +47,8 @@ class Person implements WhereBuilder
|
||||
{
|
||||
public function build(Entity $entity): ?WhereItem
|
||||
{
|
||||
assert($entity instanceof CoreEntity);
|
||||
|
||||
$orBuilder = OrGroup::createBuilder();
|
||||
|
||||
$toCheck = false;
|
||||
|
||||
@@ -39,6 +39,9 @@ use Espo\Core\{
|
||||
|
||||
use Espo\Repositories\Email as EmailRepository;
|
||||
|
||||
/**
|
||||
* @implements Loader<\Espo\Entities\Email>
|
||||
*/
|
||||
class AddressDataLoader implements Loader
|
||||
{
|
||||
private $entityManager;
|
||||
|
||||
@@ -39,6 +39,9 @@ use Espo\Core\{
|
||||
|
||||
use Espo\Repositories\Import as ImportRepository;
|
||||
|
||||
/**
|
||||
* @implements Loader<\Espo\Entities\Import>
|
||||
*/
|
||||
class CountsLoader implements Loader
|
||||
{
|
||||
private $entityManager;
|
||||
|
||||
@@ -36,6 +36,9 @@ use Espo\ORM\Entity;
|
||||
|
||||
use Espo\Entities\User;
|
||||
|
||||
/**
|
||||
* @implements LinkHook<\Espo\Entities\Team>
|
||||
*/
|
||||
class BeforeLinkUserCheck implements LinkHook
|
||||
{
|
||||
public function process(Entity $entity, string $link, Entity $foreignEntity): void
|
||||
@@ -44,6 +47,8 @@ class BeforeLinkUserCheck implements LinkHook
|
||||
return;
|
||||
}
|
||||
|
||||
assert($foreignEntity instanceof User);
|
||||
|
||||
$this->processUserCheck($foreignEntity);
|
||||
}
|
||||
|
||||
|
||||
@@ -29,6 +29,11 @@
|
||||
|
||||
namespace Espo\Core\Acl;
|
||||
|
||||
/**
|
||||
* @template TEntity of \Espo\ORM\Entity
|
||||
* @extends AccessEntityCreateChecker<TEntity>, AccessEntityCreateChecker<TEntity>, AccessEntityReadChecker<TEntity>,
|
||||
* AccessEntityEditChecker<TEntity>, AccessEntityDeleteChecker<TEntity>
|
||||
*/
|
||||
interface AccessEntityCREDChecker extends
|
||||
|
||||
AccessEntityCreateChecker,
|
||||
|
||||
@@ -29,6 +29,11 @@
|
||||
|
||||
namespace Espo\Core\Acl;
|
||||
|
||||
/**
|
||||
* @template TEntity of \Espo\ORM\Entity
|
||||
* @extends AccessEntityCreateChecker<TEntity>, AccessEntityCreateChecker<TEntity>, AccessEntityReadChecker<TEntity>,
|
||||
* AccessEntityEditChecker<TEntity>, AccessEntityDeleteChecker<TEntity>, AccessEntityStreamChecker<TEntity>
|
||||
*/
|
||||
interface AccessEntityCREDSChecker extends
|
||||
|
||||
AccessEntityCreateChecker,
|
||||
|
||||
@@ -30,13 +30,17 @@
|
||||
namespace Espo\Core\Acl;
|
||||
|
||||
use Espo\ORM\Entity;
|
||||
|
||||
use Espo\Entities\User;
|
||||
|
||||
/**
|
||||
* @template TEntity of Entity
|
||||
*/
|
||||
interface AccessEntityCreateChecker extends AccessCreateChecker
|
||||
{
|
||||
/**
|
||||
* Check 'create' access for an entity.
|
||||
*
|
||||
* @phpstan-param TEntity $entity
|
||||
*/
|
||||
public function checkEntityCreate(User $user, Entity $entity, ScopeData $data): bool;
|
||||
}
|
||||
|
||||
@@ -30,13 +30,17 @@
|
||||
namespace Espo\Core\Acl;
|
||||
|
||||
use Espo\ORM\Entity;
|
||||
|
||||
use Espo\Entities\User;
|
||||
|
||||
/**
|
||||
* @template TEntity of Entity
|
||||
*/
|
||||
interface AccessEntityDeleteChecker extends AccessDeleteChecker
|
||||
{
|
||||
/**
|
||||
* Check 'delete' access for an entity.
|
||||
*
|
||||
* @phpstan-param TEntity $entity
|
||||
*/
|
||||
public function checkEntityDelete(User $user, Entity $entity, ScopeData $data): bool;
|
||||
}
|
||||
|
||||
@@ -30,13 +30,17 @@
|
||||
namespace Espo\Core\Acl;
|
||||
|
||||
use Espo\ORM\Entity;
|
||||
|
||||
use Espo\Entities\User;
|
||||
|
||||
/**
|
||||
* @template TEntity of Entity
|
||||
*/
|
||||
interface AccessEntityEditChecker extends AccessEditChecker
|
||||
{
|
||||
/**
|
||||
* Check 'edit' access for an entity.
|
||||
*
|
||||
* @phpstan-param TEntity $entity
|
||||
*/
|
||||
public function checkEntityEdit(User $user, Entity $entity, ScopeData $data): bool;
|
||||
}
|
||||
|
||||
@@ -30,13 +30,17 @@
|
||||
namespace Espo\Core\Acl;
|
||||
|
||||
use Espo\ORM\Entity;
|
||||
|
||||
use Espo\Entities\User;
|
||||
|
||||
/**
|
||||
* @template TEntity of Entity
|
||||
*/
|
||||
interface AccessEntityReadChecker extends AccessReadChecker
|
||||
{
|
||||
/**
|
||||
* Check 'read' access for entity.
|
||||
*
|
||||
* @phpstan-param TEntity $entity
|
||||
*/
|
||||
public function checkEntityRead(User $user, Entity $entity, ScopeData $data): bool;
|
||||
}
|
||||
|
||||
@@ -30,13 +30,17 @@
|
||||
namespace Espo\Core\Acl;
|
||||
|
||||
use Espo\ORM\Entity;
|
||||
|
||||
use Espo\Entities\User;
|
||||
|
||||
/**
|
||||
* @template TEntity of Entity
|
||||
*/
|
||||
interface AccessEntityStreamChecker extends AccessStreamChecker
|
||||
{
|
||||
/**
|
||||
* Check 'stream' access for an entity.
|
||||
*
|
||||
* @phpstan-param TEntity $entity
|
||||
*/
|
||||
public function checkEntityStream(User $user, Entity $entity, ScopeData $data): bool;
|
||||
}
|
||||
|
||||
@@ -34,7 +34,13 @@ use Espo\ORM\{
|
||||
Entity,
|
||||
};
|
||||
|
||||
/**
|
||||
* @template TEntity of Entity
|
||||
*/
|
||||
interface WhereBuilder
|
||||
{
|
||||
/**
|
||||
* @phpstan-param TEntity $entity
|
||||
*/
|
||||
public function build(Entity $entity): ?WhereItem;
|
||||
}
|
||||
|
||||
@@ -35,8 +35,13 @@ use Espo\Core\FieldProcessing\Loader\Params;
|
||||
|
||||
/**
|
||||
* Processes loading special fields before output.
|
||||
*
|
||||
* @template TEntity of Entity
|
||||
*/
|
||||
interface Loader
|
||||
{
|
||||
/**
|
||||
* @phpstan-param TEntity $entity
|
||||
*/
|
||||
public function process(Entity $entity, Params $params): void;
|
||||
}
|
||||
|
||||
@@ -31,7 +31,13 @@ namespace Espo\Core\Record\Hook;
|
||||
|
||||
use Espo\ORM\Entity;
|
||||
|
||||
/**
|
||||
* @template TEntity of Entity
|
||||
*/
|
||||
interface LinkHook
|
||||
{
|
||||
/**
|
||||
* @phpstan-param TEntity $entity
|
||||
*/
|
||||
public function process(Entity $entity, string $link, Entity $foreignEntity): void;
|
||||
}
|
||||
|
||||
@@ -87,7 +87,7 @@ class Pdf implements EntryPoint
|
||||
->setHeader('Content-Disposition', 'inline; filename="' . basename($fileName) . '"');
|
||||
|
||||
if (!$request->getServerParam('HTTP_ACCEPT_ENCODING')) {
|
||||
$response->setHeader('Content-Length', strlen($contents));
|
||||
$response->setHeader('Content-Length', (string) strlen($contents));
|
||||
}
|
||||
|
||||
$response->writeBody($contents);
|
||||
|
||||
@@ -30,8 +30,8 @@
|
||||
namespace Espo\Hooks\Common;
|
||||
|
||||
use Espo\ORM\Entity;
|
||||
|
||||
use Espo\Core\FieldProcessing\SaveProcessor;
|
||||
use Espo\Core\ORM\Entity as CoreEntity;
|
||||
|
||||
class FieldProcessing
|
||||
{
|
||||
@@ -50,6 +50,10 @@ class FieldProcessing
|
||||
return;
|
||||
}
|
||||
|
||||
if (!$entity instanceof CoreEntity) {
|
||||
return;
|
||||
}
|
||||
|
||||
$this->saveProcessor->process($entity, $options);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -30,6 +30,7 @@
|
||||
namespace Espo\Hooks\Common;
|
||||
|
||||
use Espo\ORM\Entity;
|
||||
use Espo\Core\ORM\Entity as CoreEntity;
|
||||
|
||||
use Espo\Core\{
|
||||
Utils\Metadata,
|
||||
@@ -60,6 +61,10 @@ class Webhook
|
||||
return;
|
||||
}
|
||||
|
||||
if (!$entity instanceof CoreEntity) {
|
||||
return;
|
||||
}
|
||||
|
||||
if ($entity->isNew()) {
|
||||
$this->webhookManager->processCreate($entity);
|
||||
}
|
||||
@@ -78,6 +83,10 @@ class Webhook
|
||||
return;
|
||||
}
|
||||
|
||||
if (!$entity instanceof CoreEntity) {
|
||||
return;
|
||||
}
|
||||
|
||||
$this->webhookManager->processDelete($entity);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -31,6 +31,7 @@ namespace Espo\Hooks\Note;
|
||||
|
||||
use Espo\Tools\Notification\NoteMentionHookProcessor;
|
||||
use Espo\ORM\Entity;
|
||||
use Espo\Entities\Note;
|
||||
|
||||
class Mentions
|
||||
{
|
||||
@@ -49,6 +50,8 @@ class Mentions
|
||||
return;
|
||||
}
|
||||
|
||||
assert($entity instanceof Note);
|
||||
|
||||
$this->processor->beforeSave($entity);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -31,6 +31,7 @@ namespace Espo\Hooks\Note;
|
||||
|
||||
use Espo\ORM\Entity;
|
||||
use Espo\Tools\Notification\NoteHookProcessor;
|
||||
use Espo\Entities\Note;
|
||||
|
||||
class Notifications
|
||||
{
|
||||
@@ -49,6 +50,8 @@ class Notifications
|
||||
return;
|
||||
}
|
||||
|
||||
assert($entity instanceof Note);
|
||||
|
||||
$this->processor->afterSave($entity);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -47,6 +47,8 @@ class Numbers
|
||||
|
||||
public function beforeSave(Entity $entity): void
|
||||
{
|
||||
assert($entity instanceof Sms);
|
||||
|
||||
$this->processNumbers($entity);
|
||||
}
|
||||
|
||||
|
||||
@@ -76,7 +76,7 @@ class Attachment extends Database implements
|
||||
}
|
||||
}
|
||||
|
||||
protected function processBeforeSaveNew(Entity $entity): void
|
||||
protected function processBeforeSaveNew(AttachmentEntity $entity): void
|
||||
{
|
||||
if (!$entity->get('storage')) {
|
||||
$defaultStorage = $this->config->get('defaultFileStorage');
|
||||
|
||||
Reference in New Issue
Block a user