fix phpdoc
This commit is contained in:
@@ -83,7 +83,7 @@ class UserAclManagerProvider
|
||||
$aclManager = $this->aclManager;
|
||||
|
||||
if ($user->isPortal() && !$this->applicationState->isPortal()) {
|
||||
/** @var ?\Espo\Entities\Portal */
|
||||
/** @var ?\Espo\Entities\Portal $portal */
|
||||
$portal = $this->entityManager
|
||||
->getRDBRepository(User::ENTITY_TYPE)
|
||||
->getRelation($user, 'portals')
|
||||
|
||||
@@ -259,7 +259,7 @@ class NamespaceLoader
|
||||
$this->vendorNamespaces = [];
|
||||
|
||||
if ($useCache && $this->dataCache->has($this->cacheKey)) {
|
||||
/** @var ?array<string,mixed>*/
|
||||
/** @var ?array<string,mixed> $cachedData */
|
||||
$cachedData = $this->dataCache->get($this->cacheKey);
|
||||
|
||||
$this->vendorNamespaces = $cachedData;
|
||||
|
||||
@@ -170,7 +170,7 @@ class Helper
|
||||
throw new RuntimeException('Unknown database driver.');
|
||||
}
|
||||
|
||||
/** @var class-string<\Doctrine\DBAL\VersionAwarePlatformDriver> */
|
||||
/** @var class-string<\Doctrine\DBAL\VersionAwarePlatformDriver> $driverClass */
|
||||
$driverClass = $this->dbalDrivers[$driverName];
|
||||
|
||||
if (!class_exists($driverClass)) {
|
||||
@@ -193,7 +193,7 @@ class Helper
|
||||
$platformClass = $reflect->getShortName();
|
||||
|
||||
if (isset($this->dbalPlatforms[$platformClass])) {
|
||||
/** @var class-string<\Doctrine\DBAL\Platforms\AbstractPlatform> */
|
||||
/** @var class-string<\Doctrine\DBAL\Platforms\AbstractPlatform> $className */
|
||||
$className = $this->dbalPlatforms[$platformClass];
|
||||
|
||||
return new $className();
|
||||
@@ -363,7 +363,7 @@ class Helper
|
||||
|
||||
$sth->execute();
|
||||
|
||||
/** @var string|null|false */
|
||||
/** @var string|null|false $result */
|
||||
$result = $sth->fetchColumn();
|
||||
|
||||
if ($result === false || $result === null) {
|
||||
|
||||
@@ -201,20 +201,20 @@ class Converter
|
||||
$ormMetadata[$entityType]['skipRebuild'] = true;
|
||||
}
|
||||
|
||||
/** @var array<string,array<string,mixed>> */
|
||||
/** @var array<string,array<string,mixed>> $ormMetadata */
|
||||
$ormMetadata = Util::merge($ormMetadata, $this->convertEntity($entityType, $entityMetadata));
|
||||
}
|
||||
|
||||
$ormMetadata = $this->afterFieldsProcess($ormMetadata);
|
||||
|
||||
foreach ($ormMetadata as $entityType => $entityOrmMetadata) {
|
||||
/** @var array<string,array<string,mixed>> */
|
||||
/** @var array<string,array<string,mixed>> $ormMetadata */
|
||||
$ormMetadata = Util::merge(
|
||||
$ormMetadata,
|
||||
$this->createRelationsEntityDefs($entityType, $entityOrmMetadata)
|
||||
);
|
||||
|
||||
/** @var array<string,array<string,mixed>> */
|
||||
/** @var array<string,array<string,mixed>> $ormMetadata */
|
||||
$ormMetadata = Util::merge(
|
||||
$ormMetadata,
|
||||
$this->createAdditionalEntityTypes($entityType, $entityOrmMetadata)
|
||||
@@ -513,7 +513,7 @@ class Converter
|
||||
unset($fieldResult['unset']);
|
||||
}
|
||||
|
||||
/** @var array<string,mixed> */
|
||||
/** @var array<string,mixed> $ormMetadata */
|
||||
$ormMetadata = Util::merge($ormMetadata, $fieldResult);
|
||||
}
|
||||
|
||||
@@ -530,7 +530,7 @@ class Converter
|
||||
]
|
||||
];
|
||||
|
||||
/** @var array<string,mixed> */
|
||||
/** @var array<string,mixed> $ormMetadata */
|
||||
$ormMetadata = Util::merge($ormMetadata, $defaultMetadataPart);
|
||||
}
|
||||
}
|
||||
@@ -588,7 +588,7 @@ class Converter
|
||||
}
|
||||
|
||||
if (isset($fieldTypeMetadata['fieldDefs'])) {
|
||||
/** @var array<string,mixed> */
|
||||
/** @var array<string,mixed> $attributeParams */
|
||||
$attributeParams = Util::merge($attributeParams, $fieldTypeMetadata['fieldDefs']);
|
||||
}
|
||||
|
||||
@@ -644,7 +644,7 @@ class Converter
|
||||
$convertedLink = $this->getRelationManager()->convert($linkName, $linkParams, $entityType, $ormMetadata);
|
||||
|
||||
if (isset($convertedLink)) {
|
||||
/** @var array<string,mixed> */
|
||||
/** @var array<string,mixed> $relationships */
|
||||
$relationships = Util::merge($convertedLink, $relationships);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -169,7 +169,7 @@ class Converter
|
||||
|
||||
// Check if exist files in "Tables" directory and merge with ormMetadata.
|
||||
|
||||
/** @var array<string,mixed> */
|
||||
/** @var array<string,mixed> $ormMeta */
|
||||
$ormMeta = Util::merge($ormMeta, $this->getCustomTables($ormMeta));
|
||||
|
||||
if (isset($ormMeta['unsetIgnore'])) {
|
||||
@@ -187,14 +187,14 @@ class Converter
|
||||
|
||||
// unset some keys in orm
|
||||
if (isset($ormMeta['unset'])) {
|
||||
/** @var array<string,mixed> */
|
||||
/** @var array<string,mixed> $ormMeta */
|
||||
$ormMeta = Util::unsetInArray($ormMeta, $ormMeta['unset']);
|
||||
|
||||
unset($ormMeta['unset']);
|
||||
}
|
||||
|
||||
if (isset($protectedOrmMeta)) {
|
||||
/** @var array<string,mixed> */
|
||||
/** @var array<string,mixed> $ormMeta */
|
||||
$ormMeta = Util::merge($ormMeta, $protectedOrmMeta);
|
||||
}
|
||||
|
||||
@@ -566,7 +566,7 @@ class Converter
|
||||
);
|
||||
}
|
||||
|
||||
/** @var array<string,mixed> */
|
||||
/** @var array<string,mixed> $customTables */
|
||||
$customTables = Util::merge(
|
||||
$customTables,
|
||||
$this->loadData($this->pathProvider->getCustom() . $this->tablesPath)
|
||||
@@ -575,7 +575,7 @@ class Converter
|
||||
// Get custom tables from metadata 'additionalTables'.
|
||||
foreach ($ormMeta as $entityParams) {
|
||||
if (isset($entityParams['additionalTables']) && is_array($entityParams['additionalTables'])) {
|
||||
/** @var array<string,mixed> */
|
||||
/** @var array<string,mixed> $customTables */
|
||||
$customTables = Util::merge($customTables, $entityParams['additionalTables']);
|
||||
}
|
||||
}
|
||||
@@ -636,7 +636,7 @@ class Converter
|
||||
return $tables;
|
||||
}
|
||||
|
||||
/** @var string[] */
|
||||
/** @var string[] $fileList */
|
||||
$fileList = $this->fileManager->getFileList($path, false, '\.php$', true);
|
||||
|
||||
foreach ($fileList as $fileName) {
|
||||
@@ -652,7 +652,7 @@ class Converter
|
||||
continue;
|
||||
}
|
||||
|
||||
/** @var array<string,array<string,mixed>> */
|
||||
/** @var array<string,array<string,mixed>> $tables */
|
||||
$tables = Util::merge($tables, $fileData);
|
||||
}
|
||||
|
||||
|
||||
@@ -143,17 +143,17 @@ class Schema
|
||||
|
||||
protected function initFieldTypes(): void
|
||||
{
|
||||
/** @var string[] */
|
||||
/** @var string[] $typeList */
|
||||
$typeList = $this->fileManager->getFileList($this->fieldTypePath, false, '\.php$');
|
||||
|
||||
foreach ($typeList as $name) {
|
||||
/** @var string */
|
||||
/** @var string $typeName */
|
||||
$typeName = preg_replace('/Type\.php$/i', '', $name);
|
||||
$dbalTypeName = strtolower($typeName);
|
||||
|
||||
$filePath = Util::concatPath($this->fieldTypePath, $typeName . 'Type');
|
||||
|
||||
/** @var class-string<\Doctrine\DBAL\Types\Type> */
|
||||
/** @var class-string<\Doctrine\DBAL\Types\Type> $class */
|
||||
$class = Util::getClassName($filePath);
|
||||
|
||||
if (!Type::hasType($dbalTypeName)) {
|
||||
@@ -164,7 +164,7 @@ class Schema
|
||||
}
|
||||
|
||||
if (method_exists($class, 'getDbTypeName')) {
|
||||
/** @var callable */
|
||||
/** @var callable $getDbTypeNameCallable */
|
||||
$getDbTypeNameCallable = [$class, 'getDbTypeName'];
|
||||
|
||||
$dbTypeName = call_user_func($getDbTypeNameCallable);
|
||||
@@ -279,7 +279,7 @@ class Schema
|
||||
'afterRebuild',
|
||||
];
|
||||
|
||||
/** @var array<string,class-string<\Espo\Core\Utils\Database\Schema\BaseRebuildActions>> */
|
||||
/** @var array<string,class-string<\Espo\Core\Utils\Database\Schema\BaseRebuildActions>> $classes */
|
||||
$classes = $this->classMap->getData($this->rebuildActionsPath, null, $methodList);
|
||||
|
||||
$objects = [
|
||||
|
||||
@@ -83,7 +83,7 @@ class FulltextIndex extends BaseRebuildActions
|
||||
$query = "SHOW FULL COLUMNS FROM `". $tableName ."` WHERE Field = '" . $columnName . "'";
|
||||
|
||||
try {
|
||||
/** @var array{Type: string, Collation: string} */
|
||||
/** @var array{Type: string, Collation: string} $row */
|
||||
$row = $connection->fetchAssociative($query);
|
||||
}
|
||||
catch (Exception $e) {
|
||||
|
||||
@@ -86,7 +86,7 @@ class ClassMap
|
||||
$this->dataCache->has($cacheKey) &&
|
||||
$this->config->get('useCache')
|
||||
) {
|
||||
/** @var array<string,class-string> */
|
||||
/** @var array<string,class-string> $data */
|
||||
$data = $this->dataCache->get($cacheKey);
|
||||
}
|
||||
|
||||
@@ -142,7 +142,7 @@ class ClassMap
|
||||
|
||||
foreach ($dirs as $dir) {
|
||||
if (file_exists($dir)) {
|
||||
/** @var string[] */
|
||||
/** @var string[] $fileList */
|
||||
$fileList = $this->fileManager->getFileList($dir, $subDirs, '\.php$', true);
|
||||
|
||||
$this->fillHashFromFileList($fileList, $dir, $allowedMethods, $data);
|
||||
|
||||
@@ -789,7 +789,7 @@ class Manager
|
||||
*/
|
||||
public function removeInDir(string $path, bool $removeWithDir = false): bool
|
||||
{
|
||||
/** @var string[] */
|
||||
/** @var string[] $fileList */
|
||||
$fileList = $this->getFileList($path, false);
|
||||
|
||||
$result = true;
|
||||
@@ -1000,7 +1000,7 @@ class Manager
|
||||
*/
|
||||
public function getDirName(string $path, bool $isFullPath = true, bool $useIsDir = true): string
|
||||
{
|
||||
/** @var string */
|
||||
/** @var string $dirName */
|
||||
$dirName = preg_replace('/\/$/i', '', $path);
|
||||
|
||||
$dirName = ($useIsDir && is_dir($dirName)) ?
|
||||
|
||||
@@ -208,7 +208,7 @@ class Permission
|
||||
return false;
|
||||
}
|
||||
|
||||
/** @var array{mode: mixed}*/
|
||||
/** @var array{mode: mixed} $fileInfo */
|
||||
$fileInfo = stat($filePath);
|
||||
|
||||
return substr(base_convert((string) $fileInfo['mode'], 10, 8), -4);
|
||||
@@ -293,7 +293,7 @@ class Permission
|
||||
|
||||
$result = $this->chmodReal($path, $dirOctal);
|
||||
|
||||
/** @var string[] */
|
||||
/** @var string[] $allFiles */
|
||||
$allFiles = $this->fileManager->getFileList($path);
|
||||
|
||||
foreach ($allFiles as $item) {
|
||||
@@ -347,7 +347,7 @@ class Permission
|
||||
|
||||
$result = $this->chownReal($path, $user);
|
||||
|
||||
/** @var string[] */
|
||||
/** @var string[] $allFiles */
|
||||
$allFiles = $this->fileManager->getFileList($path);
|
||||
|
||||
foreach ($allFiles as $item) {
|
||||
@@ -401,7 +401,7 @@ class Permission
|
||||
|
||||
$result = $this->chgrpReal($path, $group);
|
||||
|
||||
/** @var string[] */
|
||||
/** @var string[] $allFiles */
|
||||
$allFiles = $this->fileManager->getFileList($path);
|
||||
|
||||
foreach ($allFiles as $item) {
|
||||
|
||||
@@ -83,16 +83,16 @@ class Unifier
|
||||
*/
|
||||
private function unifyArray(string $path, bool $noCustom = false)
|
||||
{
|
||||
/** @var array<string,mixed> */
|
||||
/** @var array<string,mixed> $data */
|
||||
$data = $this->unifySingle($this->pathProvider->getCore() . $path, true);
|
||||
|
||||
foreach ($this->getModuleList() as $moduleName) {
|
||||
$filePath = $this->pathProvider->getModule($moduleName) . $path;
|
||||
|
||||
/** @var array<string,mixed> */
|
||||
/** @var array<string,mixed> $newData */
|
||||
$newData = $this->unifySingle($filePath, true);
|
||||
|
||||
/** @var array<string,mixed> */
|
||||
/** @var array<string,mixed> $data */
|
||||
$data = Util::merge($data, $newData);
|
||||
}
|
||||
|
||||
@@ -102,7 +102,7 @@ class Unifier
|
||||
|
||||
$customFilePath = $this->pathProvider->getCustom() . $path;
|
||||
|
||||
/** @var array<string,mixed> */
|
||||
/** @var array<string,mixed> $newData */
|
||||
$newData = $this->unifySingle($customFilePath, true);
|
||||
|
||||
/** @var array<string,mixed> */
|
||||
@@ -115,18 +115,18 @@ class Unifier
|
||||
*/
|
||||
private function unifyObject(string $path, bool $noCustom = false, array $forceAppendPathList = [])
|
||||
{
|
||||
/** @var \stdClass */
|
||||
/** @var \stdClass $data */
|
||||
$data = $this->unifySingle($this->pathProvider->getCore() . $path, true);
|
||||
|
||||
foreach ($this->getModuleList() as $moduleName) {
|
||||
$filePath = $this->pathProvider->getModule($moduleName) . $path;
|
||||
|
||||
/** @var \stdClass */
|
||||
/** @var \stdClass $itemData */
|
||||
$itemData = $this->unifySingle($filePath, true);
|
||||
|
||||
$this->prepareItemDataObject($itemData, $forceAppendPathList);
|
||||
|
||||
/** @var \stdClass */
|
||||
/** @var \stdClass $data */
|
||||
$data = DataUtil::merge($data, $itemData);
|
||||
}
|
||||
|
||||
@@ -136,7 +136,7 @@ class Unifier
|
||||
|
||||
$customFilePath = $this->pathProvider->getCustom() . $path;
|
||||
|
||||
/** @var \stdClass */
|
||||
/** @var \stdClass $itemData */
|
||||
$itemData = $this->unifySingle($customFilePath, true);
|
||||
|
||||
$this->prepareItemDataObject($itemData, $forceAppendPathList);
|
||||
|
||||
@@ -92,7 +92,7 @@ class OrmMetadataData
|
||||
}
|
||||
|
||||
if ($this->useCache && $this->dataCache->has($this->cacheKey) && !$reload) {
|
||||
/** @var array<string,array<string,mixed>> */
|
||||
/** @var array<string,array<string,mixed>> $data */
|
||||
$data = $this->dataCache->get($this->cacheKey);
|
||||
|
||||
$this->data = $data;
|
||||
|
||||
@@ -263,32 +263,32 @@ class Route
|
||||
private function adjustPath(string $path): string
|
||||
{
|
||||
// to fast route format
|
||||
/** @var string */
|
||||
$pathFormatteted = preg_replace('/\:([a-zA-Z0-9]+)/', '{${1}}', trim($path));
|
||||
/** @var string $pathFormatted */
|
||||
$pathFormatted = preg_replace('/\:([a-zA-Z0-9]+)/', '{${1}}', trim($path));
|
||||
|
||||
if (substr($pathFormatteted, 0, 1) !== '/') {
|
||||
return '/' . $pathFormatteted;
|
||||
if (substr($pathFormatted, 0, 1) !== '/') {
|
||||
return '/' . $pathFormatted;
|
||||
}
|
||||
|
||||
return $pathFormatteted;
|
||||
return $pathFormatted;
|
||||
}
|
||||
|
||||
public static function detectBasePath(): string
|
||||
{
|
||||
/** @var string */
|
||||
/** @var string $serverScriptName */
|
||||
$serverScriptName = $_SERVER['SCRIPT_NAME'];
|
||||
|
||||
/** @var string */
|
||||
/** @var string $serverRequestUri */
|
||||
$serverRequestUri = $_SERVER['REQUEST_URI'];
|
||||
|
||||
/** @var string */
|
||||
/** @var string $scriptName */
|
||||
$scriptName = parse_url($serverScriptName , PHP_URL_PATH);
|
||||
|
||||
$scriptNameModified = str_replace('public/api/', 'api/', $scriptName);
|
||||
|
||||
$scriptDir = dirname($scriptNameModified);
|
||||
|
||||
/** @var string */
|
||||
/** @var string $uri */
|
||||
$uri = parse_url('http://any.com' . $serverRequestUri, PHP_URL_PATH);
|
||||
|
||||
if (stripos($uri, $scriptName) === 0) {
|
||||
@@ -306,10 +306,10 @@ class Route
|
||||
{
|
||||
$basePath = self::detectBasePath();
|
||||
|
||||
/** @var string */
|
||||
/** @var string $serverRequestUri */
|
||||
$serverRequestUri = $_SERVER['REQUEST_URI'];
|
||||
|
||||
/** @var string */
|
||||
/** @var string $uri */
|
||||
$uri = parse_url('http://any.com' . $serverRequestUri, PHP_URL_PATH);
|
||||
|
||||
if ($uri === $basePath) {
|
||||
|
||||
@@ -138,7 +138,7 @@ class ScheduledJob
|
||||
$command = isset($this->cronSetup[$OS]) ? $this->cronSetup[$OS] : $this->cronSetup['default'];
|
||||
|
||||
foreach ($data as $name => $value) {
|
||||
/** @var string */
|
||||
/** @var string $command */
|
||||
$command = str_replace('{' . $name . '}', $value ?? '', $command);
|
||||
}
|
||||
|
||||
|
||||
@@ -228,7 +228,7 @@ class SystemRequirements
|
||||
switch ($type) {
|
||||
case 'requiredPhpVersion':
|
||||
$actualVersion = $this->systemHelper->getPhpVersion();
|
||||
/** @var string */
|
||||
/** @var string $requiredVersion */
|
||||
$requiredVersion = $data;
|
||||
|
||||
$acceptable = true;
|
||||
|
||||
@@ -507,9 +507,9 @@ class Util
|
||||
*/
|
||||
public static function getClassName(string $filePath): string
|
||||
{
|
||||
/** @var string */
|
||||
/** @var string $className */
|
||||
$className = preg_replace('/\.php$/i', '', $filePath);
|
||||
/** @var string */
|
||||
/** @var string $className */
|
||||
$className = preg_replace('/^(application|custom)(\/|\\\)/i', '', $className);
|
||||
$className = static::toFormat($className, '\\');
|
||||
|
||||
@@ -858,7 +858,7 @@ class Util
|
||||
$sanitized = htmlspecialchars($text, \ENT_QUOTES | \ENT_HTML5, 'UTF-8');
|
||||
|
||||
foreach ($permittedHtmlTags as $htmlTag) {
|
||||
/** @var string */
|
||||
/** @var string $sanitized */
|
||||
$sanitized = preg_replace('/<(\/)?(' . $htmlTag . ')>/i', '<$1$2>', $sanitized);
|
||||
}
|
||||
|
||||
@@ -878,9 +878,9 @@ class Util
|
||||
];
|
||||
|
||||
$url = trim($url);
|
||||
/** @var string */
|
||||
/** @var string $url */
|
||||
$url = preg_replace('/\/\?$/', '', $url);
|
||||
/** @var string */
|
||||
/** @var string $url */
|
||||
$url = preg_replace('/\/$/', '', $url);
|
||||
|
||||
return $url . '/?' . http_build_query($params);
|
||||
@@ -910,9 +910,9 @@ class Util
|
||||
$newUrl = str_replace($urlQuery, http_build_query($params), $url);
|
||||
|
||||
if (empty($params)) {
|
||||
/** @var string */
|
||||
/** @var string $newUrl */
|
||||
$newUrl = preg_replace('/\/\?$/', '', $newUrl);
|
||||
/** @var string */
|
||||
/** @var string $newUrl */
|
||||
$newUrl = preg_replace('/\/$/', '', $newUrl);
|
||||
|
||||
$newUrl .= $suffix;
|
||||
|
||||
@@ -121,7 +121,7 @@ class Pusher implements WampServerInterface
|
||||
return;
|
||||
}
|
||||
|
||||
/** @var string */
|
||||
/** @var string $connectionId */
|
||||
/** @phpstan-ignore-next-line */
|
||||
$connectionId = $connection->resourceId;
|
||||
|
||||
@@ -180,7 +180,7 @@ class Pusher implements WampServerInterface
|
||||
return;
|
||||
}
|
||||
|
||||
/** @var string */
|
||||
/** @var string $connectionId */
|
||||
/** @phpstan-ignore-next-line */
|
||||
$connectionId = $connection->resourceId;
|
||||
|
||||
@@ -345,7 +345,7 @@ class Pusher implements WampServerInterface
|
||||
*/
|
||||
protected function subscribeUser(ConnectionInterface $connection, $userId)
|
||||
{
|
||||
/** @var string */
|
||||
/** @var string $resourceId */
|
||||
/** @phpstan-ignore-next-line */
|
||||
$resourceId = $connection->resourceId;
|
||||
|
||||
@@ -440,7 +440,7 @@ class Pusher implements WampServerInterface
|
||||
*/
|
||||
private function getUserIdByAuthToken($authToken)
|
||||
{
|
||||
/** @var string|null|false */
|
||||
/** @var string|null|false $result */
|
||||
$result = shell_exec($this->phpExecutablePath . " command.php AuthTokenCheck " . $authToken);
|
||||
|
||||
if ($result === null || $result === false) {
|
||||
@@ -551,7 +551,7 @@ class Pusher implements WampServerInterface
|
||||
continue;
|
||||
}
|
||||
|
||||
/** @var \Ratchet\Wamp\WampConnection */
|
||||
/** @var \Ratchet\Wamp\WampConnection $connection */
|
||||
$connection = $this->connections[$connectionId];
|
||||
|
||||
if (in_array($topicId, $this->connectionIdTopicIdListMap[$connectionId])) {
|
||||
|
||||
@@ -57,7 +57,7 @@ class SenderFactory implements Factory
|
||||
{
|
||||
$messager = $this->config->get('webSocketMessager') ?? self::DEFAULT_MESSAGER;
|
||||
|
||||
/** @var ?class-string<Sender> */
|
||||
/** @var ?class-string<Sender> $className */
|
||||
$className = $this->metadata->get(['app', 'webSocket', 'messagers', $messager, 'senderClassName']);
|
||||
|
||||
if (!$className) {
|
||||
|
||||
@@ -57,7 +57,7 @@ class SubscriberFactory implements Factory
|
||||
{
|
||||
$messager = $this->config->get('webSocketMessager') ?? self::DEFAULT_MESSAGER;
|
||||
|
||||
/** @var ?class-string<Subscriber> */
|
||||
/** @var ?class-string<Subscriber> $className */
|
||||
$className = $this->metadata->get(['app', 'webSocket', 'messagers', $messager, 'subscriberClassName']);
|
||||
|
||||
if (!$className) {
|
||||
|
||||
@@ -133,7 +133,7 @@ class Manager
|
||||
->find();
|
||||
|
||||
foreach ($list as $webhook) {
|
||||
/** @var string */
|
||||
/** @var string $event */
|
||||
$event = $webhook->getEvent();
|
||||
|
||||
$data[$event] = true;
|
||||
|
||||
Reference in New Issue
Block a user