Compare commits

..

12 Commits

494 changed files with 765 additions and 49208 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 MiB

View File

@@ -102,6 +102,8 @@ gitGraph
commit id: "2025-02-25 " tag: "3.2.1"
commit id: "2025-04-08" tag: "3.2.1-1"
commit id: "2025-08-19" tag: "3.2.2-1"
checkout support/2.7
commit id: "2025-10-07" tag: "2.7.13"
```
To learn more, check the [iTop community versions history on the official wiki](https://www.itophub.io/wiki/page?id=latest:release:start).

View File

@@ -7,6 +7,17 @@ Here are some guidelines that will help us integrate your work!
## Contributions
```
_ _ _ _ _ __ _
| | | | __ _ ___| | _| |_ ___ | |__ ___ _ __ / _| ___ ___| |_
| |_| |/ _` |/ __| |/ / __/ _ \| '_ \ / _ \ '__| |_ / _ \/ __| __|
| _ | (_| | (__| <| || (_) | |_) | __/ | | _| __/\__ \ |_
|_| |_|\__,_|\___|_|\_\\__\___/|_.__/ \___|_| |_| \___||___/\__|
```
This repository is part of Hacktoberfest. Contributions are welcome! Feel free to suggest improvements, add translation, fix bugs, or propose new features. Thank you for contributing !
### Subjects
You are welcome to create pull requests on any of those subjects:
@@ -161,4 +172,4 @@ We have one sticker per contribution type. You might get multiple stickers with
Here is the design of each stickers for year 2024:
![iTop stickers 2024](.doc/contributing-guide/2024.contributing-stickers-side-by-side.png)
![iTop stickers 2025](.doc/contributing-guide/2025.contributing-stickers-side-by-side.png)

View File

@@ -99,6 +99,7 @@ We would like to give a special thank you 🤗 to the people from the community
- Goethals, Stefan
- Giuva, Vincenzo Katriel (a.k.a [@DarkNight97boss](https://github.com/DarkNight97boss))
- Gumble, David
- Håkon, Harnes (a.k.a [@hakonharnes](https://github.com/hakonharnes))
- Heloir, Arthur
- Janssens, Jelle (a.k.a [@janssensjelle](https://github.com/janssensjelle))
- Ji, Leeb (冀利斌) (a.k.a [@chileeb](https://github.com/chileeb))

View File

@@ -0,0 +1,23 @@
<?php
/**
* Login page extensibility
*
* @api
* @package UIExtensibilityAPI
* @since 3.x.x
*/
interface iTokenLoginUIExtension
{
/**
* @return array
* @api
*/
public function GetTokenInfo() : array;
/**
* @return array
* @api
*/
public function GetUserLogin(array $aTokenInfo) : string;
}

View File

@@ -562,70 +562,7 @@ Call $this->AddInitialAttributeFlags($sAttCode, $iFlags) for all the initial att
</event_data>
</event>
</events>
<forms>
<form id="DashletHeaderDynamicProperties" xsi:type="FormType">
<form_types>
<form_type id="title" xsi:type="TextType">
<options>
<label>UI:DashletHeaderDynamic:Prop-Title</label>
<default>UI:DashletHeaderDynamic:Prop-Title:Default</default>
</options>
</form_type>
<form_type id="icon" xsi:type="IconType">
<options>
<label>UI:DashletHeaderDynamic:Prop-Icon</label>
<default>images/icons/icons8-customer.svg</default>
</options>
</form_type>
<form_type id="subtitle" xsi:type="TextType">
<options>
<label>UI:DashletHeaderDynamic:Prop-Subtitle</label>
<default>UI:DashletHeaderDynamic:Prop-Subtitle:Default</default>
</options>
</form_type>
<form_type id="query" xsi:type="QueryType">
<options>
<label>UI:DashletHeaderDynamic:Prop-Query</label>
<default>SELECT Contact</default>
</options>
</form_type>
<form_type id="group_by" xsi:type="GroupByAttcodeType">
<options>
<label>UI:DashletHeaderDynamic:Prop-GroupBy</label>
<default>status</default>
<class_source>query</class_source>
</options>
</form_type>
<form_type id="values" xsi:type="ValuesFromAttcodeType">
<options>
<label>UI:DashletHeaderDynamic:Prop-Values</label>
<default>
<values>
<value id="active"/>
<value id="inactive"/>
</values>
</default>
<attcode_source>group_by</attcode_source>
</options>
</form_type>
</form_types>
</form>
</forms>
<meta>
<form_type_definitions>
<form_type_definition id="IconType">
<options>
<option id="label">
<mandatory>true</mandatory>
<type>string</type>
</option>
<option id="default">
<mandatory>true</mandatory>
<type>string</type>
</option>
</options>
</form_type_definition>
</form_type_definitions>
<classes>
<class id="cmdbAbstractObject" _delta="define">
<methods>

View File

@@ -9,7 +9,7 @@ use Combodo\iTop\Application\Helper\Session;
* @license http://opensource.org/licenses/AGPL-3.0
*/
class LoginBasic extends AbstractLoginFSMExtension
class LoginBasic extends AbstractLoginFSMExtension implements iTokenLoginUIExtension
{
/**
* Return the list of supported login modes for this plugin
@@ -143,4 +143,21 @@ class LoginBasic extends AbstractLoginFSMExtension
}
return array($sAuthUser, $sAuthPwd);
}
public function GetTokenInfo(): array
{
return $this->GetAuthUserAndPassword();
}
public function GetUserLogin(array $aTokenInfo): string
{
$sLogin = $aTokenInfo[0];
$sLoginMode = 'basic';
if (UserRights::CheckCredentials($sLogin, $aTokenInfo[1], $sLoginMode, 'internal'))
{
return $sLogin;
}
throw new Exception("Cannot CheckCredentials user login ($sLogin) with ($sLoginMode) mode");
}
}

View File

@@ -12,7 +12,7 @@ use Combodo\iTop\Application\Helper\Session;
*
* @since 2.7.0
*/
class LoginForm extends AbstractLoginFSMExtension implements iLoginUIExtension
class LoginForm extends AbstractLoginFSMExtension implements iLoginUIExtension, iTokenLoginUIExtension
{
private $bForceFormOnError = false;
@@ -32,8 +32,7 @@ class LoginForm extends AbstractLoginFSMExtension implements iLoginUIExtension
protected function OnReadCredentials(&$iErrorCode)
{
if (!Session::IsSet('login_mode') || Session::Get('login_mode') == 'form') {
$sAuthUser = utils::ReadPostedParam('auth_user', '', 'raw_data');
$sAuthPwd = utils::ReadPostedParam('auth_pwd', null, 'raw_data');
list($sAuthUser, $sAuthPwd) = $this->GetTokenInfo();
if ($this->bForceFormOnError || empty($sAuthUser) || empty($sAuthPwd))
{
if (array_key_exists('HTTP_X_COMBODO_AJAX', $_SERVER))
@@ -68,8 +67,7 @@ class LoginForm extends AbstractLoginFSMExtension implements iLoginUIExtension
{
if (Session::Get('login_mode') == 'form')
{
$sAuthUser = utils::ReadPostedParam('auth_user', '', 'raw_data');
$sAuthPwd = utils::ReadPostedParam('auth_pwd', null, 'raw_data');
list($sAuthUser, $sAuthPwd) = $this->GetTokenInfo();
if (!UserRights::CheckCredentials($sAuthUser, $sAuthPwd, Session::Get('login_mode'), 'internal'))
{
$iErrorCode = LoginWebPage::EXIT_CODE_WRONGCREDENTIALS;
@@ -153,4 +151,23 @@ class LoginForm extends AbstractLoginFSMExtension implements iLoginUIExtension
return $oLoginContext;
}
public function GetTokenInfo(): array
{
$sAuthUser = utils::ReadPostedParam('auth_user', '', 'raw_data');
$sAuthPwd = utils::ReadPostedParam('auth_pwd', null, 'raw_data');
return [$sAuthUser, $sAuthPwd];
}
public function GetUserLogin(array $aTokenInfo): string
{
$sLogin = $aTokenInfo[0];
$sLoginMode = 'form';
if (UserRights::CheckCredentials($sLogin, $aTokenInfo[1], $sLoginMode, 'internal'))
{
return $sLogin;
}
throw new Exception("Cannot CheckCredentials user login ($sLogin) with ($sLoginMode) mode");
}
}

View File

@@ -9,7 +9,7 @@ use Combodo\iTop\Application\Helper\Session;
* @license http://opensource.org/licenses/AGPL-3.0
*/
class LoginURL extends AbstractLoginFSMExtension
class LoginURL extends AbstractLoginFSMExtension implements iTokenLoginUIExtension
{
/**
* @var bool
@@ -30,9 +30,7 @@ class LoginURL extends AbstractLoginFSMExtension
{
if (!Session::IsSet('login_mode') && !$this->bErrorOccurred)
{
$sAuthUser = utils::ReadParam('auth_user', '', false, 'raw_data');
$sAuthPwd = utils::ReadParam('auth_pwd', null, false, 'raw_data');
if (!empty($sAuthUser) && !empty($sAuthPwd))
list($sAuthUser, $sAuthPwd) = $this->GetTokenInfo();
{
Session::Set('login_mode', 'url');
}
@@ -53,8 +51,7 @@ class LoginURL extends AbstractLoginFSMExtension
{
if (Session::Get('login_mode') == 'url')
{
$sAuthUser = utils::ReadParam('auth_user', '', false, 'raw_data');
$sAuthPwd = utils::ReadParam('auth_pwd', null, false, 'raw_data');
list($sAuthUser, $sAuthPwd) = $this->GetTokenInfo();
if (!UserRights::CheckCredentials($sAuthUser, $sAuthPwd, Session::Get('login_mode'), 'internal'))
{
$iErrorCode = LoginWebPage::EXIT_CODE_WRONGCREDENTIALS;
@@ -92,4 +89,23 @@ class LoginURL extends AbstractLoginFSMExtension
}
return LoginWebPage::LOGIN_FSM_CONTINUE;
}
public function GetTokenInfo(): array
{
$sAuthUser = utils::ReadParam('auth_user', '', false, 'raw_data');
$sAuthPwd = utils::ReadParam('auth_pwd', null, false, 'raw_data');
return [$sAuthUser, $sAuthPwd];
}
public function GetUserLogin(array $aTokenInfo): string
{
$sLogin = $aTokenInfo[0];
$sLoginMode = 'url';
if (UserRights::CheckCredentials($sLogin, $aTokenInfo[1], $sLoginMode, 'internal'))
{
return $sLogin;
}
throw new Exception("Cannot CheckCredentials user login ($sLogin) with ($sLoginMode) mode");
}
}

View File

@@ -581,6 +581,26 @@ class LoginWebPage extends NiceWebPage
return $aPlugins;
}
public static function GetCurrentLoginPlugin(string $sCurrentLoginMode) : iLoginExtension
{
/** @var iLoginExtension $oLoginExtensionInstance */
foreach (MetaModel::EnumPlugins('iLoginFSMExtension') as $oLoginExtensionInstance)
{
$aLoginModes = $oLoginExtensionInstance->ListSupportedLoginModes();
$aLoginModes = (is_array($aLoginModes) ? $aLoginModes : array());
foreach ($aLoginModes as $sLoginMode)
{
// Keep only the plugins for the current login mode + before + after
if ($sLoginMode == $sCurrentLoginMode)
{
return $oLoginExtensionInstance;
}
}
}
throw new \Exception("should not happen");
}
/**
* Advance Login Finite State Machine to the next step
*

View File

@@ -42,7 +42,6 @@ register_shutdown_function(function()
$sReservedMemory = null;
if (!is_null($err = error_get_last()) && ($err['type'] == E_ERROR))
{
var_export($err);
// Remove stack trace from MySQLException (since 2.7.2 see N°3174)
$sMessage = $err['message'];
if (strpos($sMessage, 'MySQLException') !== false) {

View File

@@ -24,7 +24,6 @@
"soundasleep/html2text": "~2.1",
"symfony/console": "~6.4.0",
"symfony/dotenv": "~6.4.0",
"symfony/form": "^6.4",
"symfony/framework-bundle": "~6.4.0",
"symfony/http-foundation": "~6.4.0",
"symfony/http-kernel": "~6.4.0",

487
composer.lock generated
View File

@@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
"content-hash": "a8ec6335b5ece43315f493dc1bf72b51",
"content-hash": "e297f28f87219c0cc7ffb4f4a7ee5449",
"packages": [
{
"name": "apereo/phpcas",
@@ -2748,107 +2748,6 @@
],
"time": "2025-07-15T12:02:45+00:00"
},
{
"name": "symfony/form",
"version": "v6.4.26",
"source": {
"type": "git",
"url": "https://github.com/symfony/form.git",
"reference": "b40cdbe70be9274ea807ef61da7d0f8d1c70dc51"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/form/zipball/b40cdbe70be9274ea807ef61da7d0f8d1c70dc51",
"reference": "b40cdbe70be9274ea807ef61da7d0f8d1c70dc51",
"shasum": ""
},
"require": {
"php": ">=8.1",
"symfony/deprecation-contracts": "^2.5|^3",
"symfony/event-dispatcher": "^5.4|^6.0|^7.0",
"symfony/options-resolver": "^5.4|^6.0|^7.0",
"symfony/polyfill-ctype": "~1.8",
"symfony/polyfill-intl-icu": "^1.21",
"symfony/polyfill-mbstring": "~1.0",
"symfony/property-access": "^5.4|^6.0|^7.0",
"symfony/service-contracts": "^2.5|^3"
},
"conflict": {
"symfony/console": "<5.4",
"symfony/dependency-injection": "<5.4",
"symfony/doctrine-bridge": "<5.4.21|>=6,<6.2.7",
"symfony/error-handler": "<5.4",
"symfony/framework-bundle": "<5.4",
"symfony/http-kernel": "<5.4",
"symfony/translation": "<5.4.35|>=6.0,<6.3.12|>=6.4,<6.4.3|>=7.0,<7.0.3",
"symfony/translation-contracts": "<2.5",
"symfony/twig-bridge": "<6.3"
},
"require-dev": {
"doctrine/collections": "^1.0|^2.0",
"symfony/config": "^5.4|^6.0|^7.0",
"symfony/console": "^5.4|^6.0|^7.0",
"symfony/dependency-injection": "^5.4|^6.0|^7.0",
"symfony/expression-language": "^5.4|^6.0|^7.0",
"symfony/html-sanitizer": "^6.1|^7.0",
"symfony/http-foundation": "^5.4|^6.0|^7.0",
"symfony/http-kernel": "^5.4|^6.0|^7.0",
"symfony/intl": "^5.4|^6.0|^7.0",
"symfony/security-core": "^6.2|^7.0",
"symfony/security-csrf": "^5.4|^6.0|^7.0",
"symfony/translation": "^5.4.35|~6.3.12|^6.4.3|^7.0.3",
"symfony/uid": "^5.4|^6.0|^7.0",
"symfony/validator": "^5.4|^6.0|^7.0",
"symfony/var-dumper": "^5.4|^6.0|^7.0"
},
"type": "library",
"autoload": {
"psr-4": {
"Symfony\\Component\\Form\\": ""
},
"exclude-from-classmap": [
"/Tests/"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Fabien Potencier",
"email": "fabien@symfony.com"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
"description": "Allows to easily create, process and reuse HTML forms",
"homepage": "https://symfony.com",
"support": {
"source": "https://github.com/symfony/form/tree/v6.4.26"
},
"funding": [
{
"url": "https://symfony.com/sponsor",
"type": "custom"
},
{
"url": "https://github.com/fabpot",
"type": "github"
},
{
"url": "https://github.com/nicolas-grekas",
"type": "github"
},
{
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift"
}
],
"time": "2025-09-20T07:40:41+00:00"
},
{
"name": "symfony/framework-bundle",
"version": "v6.4.25",
@@ -3374,77 +3273,6 @@
],
"time": "2025-07-15T12:02:45+00:00"
},
{
"name": "symfony/options-resolver",
"version": "v6.4.25",
"source": {
"type": "git",
"url": "https://github.com/symfony/options-resolver.git",
"reference": "d28e7e2db8a73e9511df892d36445f61314bbebe"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/options-resolver/zipball/d28e7e2db8a73e9511df892d36445f61314bbebe",
"reference": "d28e7e2db8a73e9511df892d36445f61314bbebe",
"shasum": ""
},
"require": {
"php": ">=8.1",
"symfony/deprecation-contracts": "^2.5|^3"
},
"type": "library",
"autoload": {
"psr-4": {
"Symfony\\Component\\OptionsResolver\\": ""
},
"exclude-from-classmap": [
"/Tests/"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Fabien Potencier",
"email": "fabien@symfony.com"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
"description": "Provides an improved replacement for the array_replace PHP function",
"homepage": "https://symfony.com",
"keywords": [
"config",
"configuration",
"options"
],
"support": {
"source": "https://github.com/symfony/options-resolver/tree/v6.4.25"
},
"funding": [
{
"url": "https://symfony.com/sponsor",
"type": "custom"
},
{
"url": "https://github.com/fabpot",
"type": "github"
},
{
"url": "https://github.com/nicolas-grekas",
"type": "github"
},
{
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift"
}
],
"time": "2025-08-04T17:06:28+00:00"
},
{
"name": "symfony/polyfill-ctype",
"version": "v1.33.0",
@@ -3610,94 +3438,6 @@
],
"time": "2025-06-27T09:58:17+00:00"
},
{
"name": "symfony/polyfill-intl-icu",
"version": "v1.33.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-intl-icu.git",
"reference": "bfc8fa13dbaf21d69114b0efcd72ab700fb04d0c"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-intl-icu/zipball/bfc8fa13dbaf21d69114b0efcd72ab700fb04d0c",
"reference": "bfc8fa13dbaf21d69114b0efcd72ab700fb04d0c",
"shasum": ""
},
"require": {
"php": ">=7.2"
},
"suggest": {
"ext-intl": "For best performance and support of other locales than \"en\""
},
"type": "library",
"extra": {
"thanks": {
"url": "https://github.com/symfony/polyfill",
"name": "symfony/polyfill"
}
},
"autoload": {
"files": [
"bootstrap.php"
],
"psr-4": {
"Symfony\\Polyfill\\Intl\\Icu\\": ""
},
"classmap": [
"Resources/stubs"
],
"exclude-from-classmap": [
"/Tests/"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Nicolas Grekas",
"email": "p@tchwork.com"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
"description": "Symfony polyfill for intl's ICU-related data and classes",
"homepage": "https://symfony.com",
"keywords": [
"compatibility",
"icu",
"intl",
"polyfill",
"portable",
"shim"
],
"support": {
"source": "https://github.com/symfony/polyfill-intl-icu/tree/v1.33.0"
},
"funding": [
{
"url": "https://symfony.com/sponsor",
"type": "custom"
},
{
"url": "https://github.com/fabpot",
"type": "github"
},
{
"url": "https://github.com/nicolas-grekas",
"type": "github"
},
{
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift"
}
],
"time": "2025-06-20T22:24:30+00:00"
},
{
"name": "symfony/polyfill-intl-idn",
"version": "v1.33.0",
@@ -4035,177 +3775,6 @@
],
"time": "2025-07-08T02:45:35+00:00"
},
{
"name": "symfony/property-access",
"version": "v6.4.25",
"source": {
"type": "git",
"url": "https://github.com/symfony/property-access.git",
"reference": "fedc771326d4978a7d3167fa009a509b06a2e168"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/property-access/zipball/fedc771326d4978a7d3167fa009a509b06a2e168",
"reference": "fedc771326d4978a7d3167fa009a509b06a2e168",
"shasum": ""
},
"require": {
"php": ">=8.1",
"symfony/deprecation-contracts": "^2.5|^3",
"symfony/property-info": "^5.4|^6.0|^7.0"
},
"require-dev": {
"symfony/cache": "^5.4|^6.0|^7.0"
},
"type": "library",
"autoload": {
"psr-4": {
"Symfony\\Component\\PropertyAccess\\": ""
},
"exclude-from-classmap": [
"/Tests/"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Fabien Potencier",
"email": "fabien@symfony.com"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
"description": "Provides functions to read and write from/to an object or array using a simple string notation",
"homepage": "https://symfony.com",
"keywords": [
"access",
"array",
"extraction",
"index",
"injection",
"object",
"property",
"property-path",
"reflection"
],
"support": {
"source": "https://github.com/symfony/property-access/tree/v6.4.25"
},
"funding": [
{
"url": "https://symfony.com/sponsor",
"type": "custom"
},
{
"url": "https://github.com/fabpot",
"type": "github"
},
{
"url": "https://github.com/nicolas-grekas",
"type": "github"
},
{
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift"
}
],
"time": "2025-08-12T15:42:57+00:00"
},
{
"name": "symfony/property-info",
"version": "v6.4.24",
"source": {
"type": "git",
"url": "https://github.com/symfony/property-info.git",
"reference": "1056ae3621eeddd78d7c5ec074f1c1784324eec6"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/property-info/zipball/1056ae3621eeddd78d7c5ec074f1c1784324eec6",
"reference": "1056ae3621eeddd78d7c5ec074f1c1784324eec6",
"shasum": ""
},
"require": {
"php": ">=8.1",
"symfony/string": "^5.4|^6.0|^7.0"
},
"conflict": {
"doctrine/annotations": "<1.12",
"phpdocumentor/reflection-docblock": "<5.2",
"phpdocumentor/type-resolver": "<1.5.1",
"symfony/cache": "<5.4",
"symfony/dependency-injection": "<5.4|>=6.0,<6.4",
"symfony/serializer": "<5.4"
},
"require-dev": {
"doctrine/annotations": "^1.12|^2",
"phpdocumentor/reflection-docblock": "^5.2",
"phpstan/phpdoc-parser": "^1.0|^2.0",
"symfony/cache": "^5.4|^6.0|^7.0",
"symfony/dependency-injection": "^5.4|^6.0|^7.0",
"symfony/serializer": "^5.4|^6.4|^7.0"
},
"type": "library",
"autoload": {
"psr-4": {
"Symfony\\Component\\PropertyInfo\\": ""
},
"exclude-from-classmap": [
"/Tests/"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Kévin Dunglas",
"email": "dunglas@gmail.com"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
"description": "Extracts information about PHP class' properties using metadata of popular sources",
"homepage": "https://symfony.com",
"keywords": [
"doctrine",
"phpdoc",
"property",
"symfony",
"type",
"validator"
],
"support": {
"source": "https://github.com/symfony/property-info/tree/v6.4.24"
},
"funding": [
{
"url": "https://symfony.com/sponsor",
"type": "custom"
},
{
"url": "https://github.com/fabpot",
"type": "github"
},
{
"url": "https://github.com/nicolas-grekas",
"type": "github"
},
{
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift"
}
],
"time": "2025-07-14T16:38:25+00:00"
},
{
"name": "symfony/routing",
"version": "v6.4.24",
@@ -5073,60 +4642,6 @@
],
"time": "2025-08-26T16:59:00+00:00"
},
{
"name": "symfonycasts/dynamic-forms",
"version": "v0.1.3",
"source": {
"type": "git",
"url": "https://github.com/SymfonyCasts/dynamic-forms.git",
"reference": "4c86c48f18a707e451c4dfffe87f3710b2052be6"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/SymfonyCasts/dynamic-forms/zipball/4c86c48f18a707e451c4dfffe87f3710b2052be6",
"reference": "4c86c48f18a707e451c4dfffe87f3710b2052be6",
"shasum": ""
},
"require": {
"php": ">=8.1",
"symfony/form": "^5.4|^6.3|^7.0"
},
"require-dev": {
"phpunit/phpunit": "^9.6",
"symfony/framework-bundle": "^6.3|^7.0",
"symfony/options-resolver": "^5.4|^6.3|^7.0",
"symfony/phpunit-bridge": "^5.4.32|^6.3.9|^7.0",
"symfony/twig-bundle": "^5.4|^6.3|^7.0",
"twig/twig": "^2.15|^3.0",
"zenstruck/browser": "^1.4"
},
"type": "library",
"autoload": {
"psr-4": {
"Symfonycasts\\DynamicForms\\": "src"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Ryan Weaver",
"homepage": "https://symfonycasts.com"
}
],
"description": "Add dynamic/dependent fields to Symfony forms",
"keywords": [
"Forms",
"symfony"
],
"support": {
"issues": "https://github.com/SymfonyCasts/dynamic-forms/issues",
"source": "https://github.com/SymfonyCasts/dynamic-forms/tree/v0.1.3"
},
"time": "2024-10-22T16:59:02+00:00"
},
{
"name": "tecnickcom/tcpdf",
"version": "6.10.0",

View File

@@ -4927,7 +4927,7 @@ abstract class DBObject implements iDisplay
{
if (is_null($sWorkingTimeComputer))
{
$sWorkingTimeComputer = class_exists('SLAComputation') ? 'SLAComputation' : 'DefaultWorkingTimeComputer';
$sWorkingTimeComputer = MetaModel::GetWorkingTime(get_class($this));
}
$oComputer = new $sWorkingTimeComputer();
$aCallSpec = array($oComputer, 'GetOpenDuration');

View File

@@ -399,6 +399,32 @@ abstract class MetaModel
return null;
}
final public static function GetDefaultWorkingTime()
{
return 'DefaultWorkingTimeComputer';
}
/**
* @param string $sClass
*
* @return string the working time class
* @throws \CoreException
* @since 3.3.0
*/
final public static function GetWorkingTime($sClass)
{
self::_check_subclass($sClass);
if (array_key_exists('working_time', self::$m_aClassParams[$sClass])) {
return self::$m_aClassParams[$sClass]['working_time'];
} else {
$sParentClass = self::GetParentPersistentClass($sClass);
if (strlen($sParentClass) > 0) {
return self::GetWorkingTime($sParentClass);
}
}
return self::GetDefaultWorkingTime();
}
/**
* @param string $sClass
*

View File

@@ -289,7 +289,7 @@ class ormStopWatch
$sWorkingTimeComputer = $oAttDef->Get('working_time_computing');
if ($sWorkingTimeComputer == '')
{
$sWorkingTimeComputer = class_exists('SLAComputation') ? 'SLAComputation' : 'DefaultWorkingTimeComputer';
$sWorkingTimeComputer = MetaModel::GetWorkingTime(get_class($oObject));
}
$oComputer = new $sWorkingTimeComputer();
$aCallSpec = array($oComputer, 'GetDeadline');
@@ -318,7 +318,7 @@ class ormStopWatch
$sWorkingTimeComputer = $oAttDef->Get('working_time_computing');
if ($sWorkingTimeComputer == '')
{
$sWorkingTimeComputer = class_exists('SLAComputation') ? 'SLAComputation' : 'DefaultWorkingTimeComputer';
$sWorkingTimeComputer = MetaModel::GetWorkingTime(get_class($oObject));
}
$oComputer = new $sWorkingTimeComputer();
$aCallSpec = array($oComputer, 'GetOpenDuration');

View File

@@ -142,7 +142,9 @@ abstract class UserRightsAddOnAPI
$oFilter = new DBObjectSearch($sClass);
$oListExpr = ListExpression::FromScalars($aAllowedOrgs);
$oCondition = new BinaryExpression($oExpression, 'IN', $oListExpr);
$oNullCondition = new FunctionExpression('ISNULL', [$oExpression]);
$oInCondition = new BinaryExpression($oExpression, 'IN', $oListExpr);
$oCondition = $oNullCondition->LogOr($oInCondition);
$oFilter->AddConditionExpression($oCondition);
if ($this->HasSharing())

View File

@@ -26,7 +26,7 @@ Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
'Class:UserLocal/Attribute:expiration/Value:otp_expire+' => 'Senha não pode ser alterada pelo usuário',
'Class:UserLocal/Attribute:password_renewed_date' => 'Data da última alteração de senha',
'Class:UserLocal/Attribute:password_renewed_date+' => 'Quando a senha foi alterada anteriormente',
'Error:UserLocalPasswordValidator:UserPasswordPolicyRegex:ValidationFailed' => 'A senha deve ter no mínimo 8 caracteres e incluir letras maiúsculas, minúsculas, números e símbolos',
'Error:UserLocalPasswordValidator:UserPasswordPolicyRegex:ValidationFailed' => 'A senha deve conter no mínimo 8 caracteres e incluir letras maiúsculas, minúsculas, números e símbolos',
'UserLocal:password:expiration' => 'O campo abaixo requer uma extensão',
'Class:UserLocal/Error:OneTimePasswordChangeIsNotAllowed' => 'Definir a expiração da senha para One-Time Password (OTP) não é permitido para o seu próprio usuário',
));

View File

@@ -11,7 +11,7 @@
*
*/
Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
'Class:lnkFunctionalCIToTicket' => 'Link IC / Solicitação',
'Class:lnkFunctionalCIToTicket' => 'Relação entre IC / Solicitação',
'Class:lnkFunctionalCIToTicket+' => '',
'Class:lnkFunctionalCIToTicket/Name' => '%1$s / %2$s~~',
'Class:lnkFunctionalCIToTicket/Attribute:ticket_id' => 'Solicitação',
@@ -37,5 +37,5 @@ Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
//
Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
'Class:FunctionalCI/Attribute:tickets_list' => 'Solicitações',
'Class:FunctionalCI/Attribute:tickets_list+' => 'Todos as solicitações para este item de configuração',
'Class:FunctionalCI/Attribute:tickets_list+' => 'Todas as Solicitações associadas à este Item de Configuração (IC)',
));

View File

@@ -18,8 +18,8 @@ Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
'Relation:depends on/Description' => 'Elementos estes, que dependem deste elemento',
'Relation:depends on/DownStream' => 'Depende de...',
'Relation:depends on/UpStream' => 'Impactos...',
'Relation:impacts/LoadData' => 'Load data~~',
'Relation:impacts/NoFilteredData' => 'please select objects and load data~~',
'Relation:impacts/LoadData' => 'Carregando dados',
'Relation:impacts/NoFilteredData' => 'Por favor, selecione os objetos na tag de visualização Gráfica',
'Relation:impacts/FilteredData' => 'Filtered data~~',
));
@@ -66,7 +66,7 @@ Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
//
Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
'Class:lnkContactToFunctionalCI' => 'Link Contato / IC',
'Class:lnkContactToFunctionalCI' => 'Relação entre Contato / IC',
'Class:lnkContactToFunctionalCI+' => '',
'Class:lnkContactToFunctionalCI/Name' => '%1$s / %2$s~~',
'Class:lnkContactToFunctionalCI/Attribute:functionalci_id' => 'ICs',
@@ -105,16 +105,16 @@ Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
'Class:FunctionalCI/Attribute:move2production' => 'Data de migração para produção',
'Class:FunctionalCI/Attribute:move2production+' => '',
'Class:FunctionalCI/Attribute:contacts_list' => 'Contatos',
'Class:FunctionalCI/Attribute:contacts_list+' => 'Todos os contatos associados a este item de configuração',
'Class:FunctionalCI/Attribute:contacts_list+' => 'Todos os Contatos associados à este Item de Configuração (IC)',
'Class:FunctionalCI/Attribute:documents_list' => 'Documentos',
'Class:FunctionalCI/Attribute:documents_list+' => 'Todos os documentos associados a este item de configuração',
'Class:FunctionalCI/Attribute:documents_list+' => 'Todos os Documentos associados à este Item de Configuração (IC)',
'Class:FunctionalCI/Attribute:applicationsolution_list' => 'Soluções de aplicação',
'Class:FunctionalCI/Attribute:applicationsolution_list+' => 'Todas as soluções de aplicação dependentes desse item de configuração',
'Class:FunctionalCI/Attribute:applicationsolution_list+' => 'Todas as Soluções de Aplicação dependentes deste Item de Configuração (IC)',
'Class:FunctionalCI/Attribute:softwares_list' => 'Softwares',
'Class:FunctionalCI/Attribute:softwares_list+' => 'Todos os softwares instalados neste item de configuração',
'Class:FunctionalCI/Attribute:softwares_list+' => 'Todos os Softwares instalados neste Item de Configuração (IC)',
'Class:FunctionalCI/Attribute:finalclass' => 'Tipo de IC',
'Class:FunctionalCI/Attribute:finalclass+' => '',
'Class:FunctionalCI/Tab:OpenedTickets' => 'Solicitações Ativas',
'Class:FunctionalCI/Tab:OpenedTickets' => 'Solicitações ativas',
'Class:FunctionalCI/Tab:OpenedTickets+' => 'Active Tickets which are impacting this functional CI~~',
));
@@ -123,7 +123,7 @@ Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
//
Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
'Class:PhysicalDevice' => 'Dispositivo Físico',
'Class:PhysicalDevice' => 'Dispositivo físico',
'Class:PhysicalDevice+' => 'Lista de Dispositivos Físicos',
'Class:PhysicalDevice/ComplementaryName' => '%1$s - %2$s~~',
'Class:PhysicalDevice/Attribute:serialnumber' => 'Número serial',
@@ -169,9 +169,9 @@ Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
'Class:Rack/Attribute:nb_u' => 'Unidades',
'Class:Rack/Attribute:nb_u+' => '',
'Class:Rack/Attribute:device_list' => 'Dispositivos',
'Class:Rack/Attribute:device_list+' => 'Todos os dispositivos físicos empilhados neste rack',
'Class:Rack/Attribute:device_list+' => 'Todos os Dispositivos físicos empilhados neste Rack',
'Class:Rack/Attribute:enclosure_list' => 'Gavetas',
'Class:Rack/Attribute:enclosure_list+' => 'Todas as gavetas neste rack',
'Class:Rack/Attribute:enclosure_list+' => 'Todas as Gavetas neste Rack',
));
//
@@ -234,9 +234,9 @@ Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
'Class:ConnectableCI+' => 'Físico',
'Class:ConnectableCI/ComplementaryName' => '%1$s - %2$s~~',
'Class:ConnectableCI/Attribute:networkdevice_list' => 'Dispositivo de rede',
'Class:ConnectableCI/Attribute:networkdevice_list+' => 'Todos os dispositivos de rede conectados neste dispositivo',
'Class:ConnectableCI/Attribute:networkdevice_list+' => 'Todos os Dispositivos de rede conectados neste dispositivo',
'Class:ConnectableCI/Attribute:physicalinterface_list' => 'Interface de rede',
'Class:ConnectableCI/Attribute:physicalinterface_list+' => 'Todas as interfaces de rede',
'Class:ConnectableCI/Attribute:physicalinterface_list+' => 'Todas as Interfaces de rede presentes neste dispositivo',
));
//
@@ -268,9 +268,9 @@ Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
'Class:DatacenterDevice/Attribute:powerB_name' => 'Nome da fonte energia B',
'Class:DatacenterDevice/Attribute:powerB_name+' => '',
'Class:DatacenterDevice/Attribute:fiberinterfacelist_list' => 'Portas FC',
'Class:DatacenterDevice/Attribute:fiberinterfacelist_list+' => 'Todas as portas Fiber Channel para esse dispositivo',
'Class:DatacenterDevice/Attribute:fiberinterfacelist_list+' => 'Todas as portas Fiber Channel (FC) para este Dispositivo de datacenter',
'Class:DatacenterDevice/Attribute:san_list' => 'SANs',
'Class:DatacenterDevice/Attribute:san_list+' => 'Todos os switches SAN associados a este dispositivo',
'Class:DatacenterDevice/Attribute:san_list+' => 'Todos os Switches SAN associados à este Dispositivo de datacenter',
'Class:DatacenterDevice/Attribute:redundancy' => 'Redundância',
'Class:DatacenterDevice/Attribute:redundancy/count' => 'O dispositivo está ativo se pelo menos uma conexão de energia (A ou B) estiver ativa',
'Class:DatacenterDevice/Attribute:redundancy/disabled' => 'O dispositivo está ativo se todas as conexões de energia estiverem ativadas',
@@ -285,15 +285,15 @@ Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
'Class:NetworkDevice' => 'Dispositivo de Rede',
'Class:NetworkDevice+' => '',
'Class:NetworkDevice/ComplementaryName' => '%1$s - %2$s~~',
'Class:NetworkDevice/Attribute:networkdevicetype_id' => 'Tipo de rede',
'Class:NetworkDevice/Attribute:networkdevicetype_id' => 'Tipo de dispositivo de rede',
'Class:NetworkDevice/Attribute:networkdevicetype_id+' => '',
'Class:NetworkDevice/Attribute:networkdevicetype_name' => 'Nome do tipo de rede',
'Class:NetworkDevice/Attribute:networkdevicetype_name' => 'Nome do tipo de dispositivo de rede',
'Class:NetworkDevice/Attribute:networkdevicetype_name+' => '',
'Class:NetworkDevice/Attribute:connectablecis_list' => 'Dispositivos',
'Class:NetworkDevice/Attribute:connectablecis_list+' => 'Todos os dispositivos associados a este dispositivo de rede',
'Class:NetworkDevice/Attribute:iosversion_id' => 'Versão do IOS',
'Class:NetworkDevice/Attribute:connectablecis_list' => 'ICs',
'Class:NetworkDevice/Attribute:connectablecis_list+' => 'Todos os Itens de configuração (ICs) associados à este Dispositivo de rede',
'Class:NetworkDevice/Attribute:iosversion_id' => 'Versão do SO',
'Class:NetworkDevice/Attribute:iosversion_id+' => '',
'Class:NetworkDevice/Attribute:iosversion_name' => 'Nome da versão do IOS',
'Class:NetworkDevice/Attribute:iosversion_name' => 'Nome da versão do SO',
'Class:NetworkDevice/Attribute:iosversion_name+' => '',
'Class:NetworkDevice/Attribute:ram' => 'RAM',
'Class:NetworkDevice/Attribute:ram+' => '',
@@ -324,7 +324,7 @@ Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
'Class:Server/Attribute:ram' => 'RAM',
'Class:Server/Attribute:ram+' => '',
'Class:Server/Attribute:logicalvolumes_list' => 'Volumes lógicos',
'Class:Server/Attribute:logicalvolumes_list+' => 'Todos os volumoes lógicos associados a este servidor',
'Class:Server/Attribute:logicalvolumes_list+' => 'Todos os Volumes lógicos associados à este Servidor',
));
//
@@ -336,7 +336,7 @@ Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
'Class:StorageSystem+' => '',
'Class:StorageSystem/ComplementaryName' => '%1$s - %2$s~~',
'Class:StorageSystem/Attribute:logicalvolume_list' => 'Volumes lógicos',
'Class:StorageSystem/Attribute:logicalvolume_list+' => 'Todos os volumes lógicos neste sistema storage',
'Class:StorageSystem/Attribute:logicalvolume_list+' => 'Todos os Volumes lógicos neste Sistema de storage',
));
//
@@ -348,7 +348,7 @@ Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
'Class:SANSwitch+' => '',
'Class:SANSwitch/ComplementaryName' => '%1$s - %2$s~~',
'Class:SANSwitch/Attribute:datacenterdevice_list' => 'Dispositivos',
'Class:SANSwitch/Attribute:datacenterdevice_list+' => 'Todos os dispositivos associados a este switch SAN',
'Class:SANSwitch/Attribute:datacenterdevice_list+' => 'Todos os Dispositivos associados à este Switch SAN',
));
//
@@ -360,7 +360,7 @@ Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
'Class:TapeLibrary+' => '',
'Class:TapeLibrary/ComplementaryName' => '%1$s - %2$s~~',
'Class:TapeLibrary/Attribute:tapes_list' => 'Fitas',
'Class:TapeLibrary/Attribute:tapes_list+' => 'Todas as fitas associadas à esta biblioteca de fitas',
'Class:TapeLibrary/Attribute:tapes_list+' => 'Todas as Fitas associadas à esta Biblioteca de fitas',
));
//
@@ -372,7 +372,7 @@ Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
'Class:NAS+' => '',
'Class:NAS/ComplementaryName' => '%1$s - %2$s~~',
'Class:NAS/Attribute:nasfilesystem_list' => 'Sistemas de arquivos',
'Class:NAS/Attribute:nasfilesystem_list+' => 'Todos os sistemas de arquivos para esse NAS',
'Class:NAS/Attribute:nasfilesystem_list+' => 'Todos os Sistemas de arquivos para este NAS',
));
//
@@ -432,7 +432,7 @@ Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
'Class:PowerSource+' => '',
'Class:PowerSource/ComplementaryName' => '%1$s - %2$s~~',
'Class:PowerSource/Attribute:pdus_list' => 'PDUs',
'Class:PowerSource/Attribute:pdus_list+' => 'Todos os PDUs utilizando essa fonte de energia',
'Class:PowerSource/Attribute:pdus_list+' => 'Todos os PDUs utilizando esta Fonte de energia',
));
//
@@ -478,7 +478,7 @@ Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
'Class:Enclosure/Attribute:nb_u' => 'Unidades',
'Class:Enclosure/Attribute:nb_u+' => '',
'Class:Enclosure/Attribute:device_list' => 'Dispositivos',
'Class:Enclosure/Attribute:device_list+' => 'Todos os dispositivos para essa gaveta',
'Class:Enclosure/Attribute:device_list+' => 'Todos os Dispositivos presentes nesta Gaveta',
));
//
@@ -489,9 +489,9 @@ Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
'Class:ApplicationSolution' => 'Solução de Aplicação',
'Class:ApplicationSolution+' => '',
'Class:ApplicationSolution/Attribute:functionalcis_list' => 'ICs',
'Class:ApplicationSolution/Attribute:functionalcis_list+' => 'Todos os itens de configuração que compõem essa solução de aplicação',
'Class:ApplicationSolution/Attribute:functionalcis_list+' => 'Todos os Itens de configuração (IC) que compõem esta Solução de aplicação',
'Class:ApplicationSolution/Attribute:businessprocess_list' => 'Processos de negócio',
'Class:ApplicationSolution/Attribute:businessprocess_list+' => 'Todos os processos do negócio dependente para essa solução de aplicação',
'Class:ApplicationSolution/Attribute:businessprocess_list+' => 'Todos os Processos de negócio dependentes desta Solução de aplicação',
'Class:ApplicationSolution/Attribute:status' => 'Status',
'Class:ApplicationSolution/Attribute:status+' => '',
'Class:ApplicationSolution/Attribute:status/Value:active' => 'Ativo',
@@ -499,9 +499,9 @@ Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
'Class:ApplicationSolution/Attribute:status/Value:inactive' => 'Inativo',
'Class:ApplicationSolution/Attribute:status/Value:inactive+' => '',
'Class:ApplicationSolution/Attribute:redundancy' => 'Análise de impacto: configuração de redundância',
'Class:ApplicationSolution/Attribute:redundancy/disabled' => 'A solução está funcionando se todos os ICs estiverem funcionando',
'Class:ApplicationSolution/Attribute:redundancy/count' => 'A solução está funcionando se no mínimo %1$s IC(s) estiver(em) funcionando',
'Class:ApplicationSolution/Attribute:redundancy/percent' => 'A solução está funcionando se no mínimo %1$s %% dos ICs estiverem funcionando',
'Class:ApplicationSolution/Attribute:redundancy/disabled' => 'A Solução de aplicação está funcionando se todos os Itens de configuração (ICs) estiverem funcionando',
'Class:ApplicationSolution/Attribute:redundancy/count' => 'A Solução de aplicação está funcionando se no mínimo %1$s Item(ns) de configuração (IC(s)) estiver(em) funcionando',
'Class:ApplicationSolution/Attribute:redundancy/percent' => 'A Solução de aplicação está funcionando se no mínimo %1$s %% dos Itens de configuração (ICs) estiverem funcionando',
));
//
@@ -568,8 +568,8 @@ Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
'Class:DBServer' => 'Servidor de DB',
'Class:DBServer+' => '',
'Class:DBServer/Attribute:dbschema_list' => 'Esquemas de DB',
'Class:DBServer/Attribute:dbschema_list+' => 'Todos os esquemas para esse servidor de banco de dados',
'Class:DBServer/Attribute:dbschema_list' => 'Esquemas de BD',
'Class:DBServer/Attribute:dbschema_list+' => 'Todos os Esquemas de BD para este Servidor de Banco de Dados (BD)',
));
//
@@ -580,7 +580,7 @@ Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
'Class:WebServer' => 'Servidor Web',
'Class:WebServer+' => '',
'Class:WebServer/Attribute:webapp_list' => 'Aplicações Web',
'Class:WebServer/Attribute:webapp_list+' => 'Todas as aplicações web disponíveis para esse servidor web',
'Class:WebServer/Attribute:webapp_list+' => 'Todas as Aplicações Web disponíveis para este Servidor Web',
));
//
@@ -620,7 +620,7 @@ Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
//
Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
'Class:DatabaseSchema' => 'Esquema de DB',
'Class:DatabaseSchema' => 'Esquema de Banco de Dados (BD)',
'Class:DatabaseSchema+' => '',
'Class:DatabaseSchema/ComplementaryName' => '%1$s - %2$s~~',
'Class:DatabaseSchema/Attribute:dbserver_id' => 'Servidor de DB',
@@ -664,7 +664,7 @@ Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
'Class:VirtualDevice/Attribute:status/Value:stock' => 'Suporte',
'Class:VirtualDevice/Attribute:status/Value:stock+' => 'Suporte',
'Class:VirtualDevice/Attribute:logicalvolumes_list' => 'Volume lógico',
'Class:VirtualDevice/Attribute:logicalvolumes_list+' => 'Todos os volumes lógicos associados a este dispositivo',
'Class:VirtualDevice/Attribute:logicalvolumes_list+' => 'Todos os Volumes lógicos associados à este Dispositivo virtual',
));
//
@@ -674,8 +674,8 @@ Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
'Class:VirtualHost' => 'Host Virtual',
'Class:VirtualHost+' => '',
'Class:VirtualHost/Attribute:virtualmachine_list' => 'Máquinas Virtuais',
'Class:VirtualHost/Attribute:virtualmachine_list+' => 'Todas as máquinas virtuais hospedadas neste Host',
'Class:VirtualHost/Attribute:virtualmachine_list' => 'Máquinas virtuais (VMs)',
'Class:VirtualHost/Attribute:virtualmachine_list+' => 'Todas as Máquinas virtuais (VMs) hospedadas neste Host virtual',
));
//
@@ -703,11 +703,11 @@ Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
'Class:Farm' => 'Cluster/HA',
'Class:Farm+' => '',
'Class:Farm/Attribute:hypervisor_list' => 'Hypervisors',
'Class:Farm/Attribute:hypervisor_list+' => 'Todos os hypervisors que compõem esse Cluster/HA',
'Class:Farm/Attribute:hypervisor_list+' => 'Todos os Hypervisors que compõem este Cluster/HA',
'Class:Farm/Attribute:redundancy' => 'Alta disponibilidade',
'Class:Farm/Attribute:redundancy/disabled' => 'O farm está ativo se todos os hipervisores estiverem em alta',
'Class:Farm/Attribute:redundancy/count' => 'O farm está ativo se pelo menos %1$s hypervisor(es) estiver (ão) para cima',
'Class:Farm/Attribute:redundancy/percent' => 'O farm está ativo se pelo menos %1$s %% dos hipervisores estiverem em alta',
'Class:Farm/Attribute:redundancy/disabled' => 'O farm está ativo se todos os hypervisors estiverem disponíveis',
'Class:Farm/Attribute:redundancy/count' => 'O farm está ativo se pelo menos %1$s hypervisor(s) estiver(em) disponíveis',
'Class:Farm/Attribute:redundancy/percent' => 'O farm está ativo se pelo menos %1$s %% dos hypervisors estiverem disponíveis',
));
//
@@ -740,8 +740,8 @@ Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
'Class:VirtualMachine/Attribute:ram+' => '',
'Class:VirtualMachine/Attribute:managementip' => 'IP',
'Class:VirtualMachine/Attribute:managementip+' => '',
'Class:VirtualMachine/Attribute:logicalinterface_list' => 'Placas de rede',
'Class:VirtualMachine/Attribute:logicalinterface_list+' => 'Todas as placas de rede',
'Class:VirtualMachine/Attribute:logicalinterface_list' => 'Interfaces de rede',
'Class:VirtualMachine/Attribute:logicalinterface_list+' => 'Todas as interfaces de rede',
));
//
@@ -749,7 +749,7 @@ Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
//
Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
'Class:LogicalVolume' => 'Volume lógico',
'Class:LogicalVolume' => 'Volume Lógico',
'Class:LogicalVolume+' => '',
'Class:LogicalVolume/Attribute:name' => 'Nome',
'Class:LogicalVolume/Attribute:name+' => '',
@@ -757,7 +757,7 @@ Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
'Class:LogicalVolume/Attribute:lun_id+' => '',
'Class:LogicalVolume/Attribute:description' => 'Descrição',
'Class:LogicalVolume/Attribute:description+' => '',
'Class:LogicalVolume/Attribute:raid_level' => 'Nível RAID',
'Class:LogicalVolume/Attribute:raid_level' => 'Nível de RAID',
'Class:LogicalVolume/Attribute:raid_level+' => '',
'Class:LogicalVolume/Attribute:size' => 'Tamanho',
'Class:LogicalVolume/Attribute:size+' => '',
@@ -766,9 +766,9 @@ Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
'Class:LogicalVolume/Attribute:storagesystem_name' => 'Nome do sistema de arquivos',
'Class:LogicalVolume/Attribute:storagesystem_name+' => '',
'Class:LogicalVolume/Attribute:servers_list' => 'Servidores',
'Class:LogicalVolume/Attribute:servers_list+' => 'Todos os servidores usando esse volume',
'Class:LogicalVolume/Attribute:servers_list+' => 'Todos os Servidores usando este Volume lógico',
'Class:LogicalVolume/Attribute:virtualdevices_list' => 'Dispositivos virtuais',
'Class:LogicalVolume/Attribute:virtualdevices_list+' => 'Todos os dispositivos virtuais usando esse volume',
'Class:LogicalVolume/Attribute:virtualdevices_list+' => 'Todos os Dispositivos virtuais usando este Volume lógico',
));
//
@@ -776,7 +776,7 @@ Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
//
Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
'Class:lnkServerToVolume' => 'Link Servidor / Volume',
'Class:lnkServerToVolume' => 'Relação entre Servidor / Volume',
'Class:lnkServerToVolume+' => '',
'Class:lnkServerToVolume/Name' => '%1$s / %2$s~~',
'Class:lnkServerToVolume/Attribute:volume_id' => 'Volume',
@@ -796,7 +796,7 @@ Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
//
Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
'Class:lnkVirtualDeviceToVolume' => 'Link Dispositivo Virtual / Volume',
'Class:lnkVirtualDeviceToVolume' => 'Relação entre Dispositivo virtual / Volume',
'Class:lnkVirtualDeviceToVolume+' => '',
'Class:lnkVirtualDeviceToVolume/Name' => '%1$s / %2$s~~',
'Class:lnkVirtualDeviceToVolume/Attribute:volume_id' => 'Volume',
@@ -816,7 +816,7 @@ Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
//
Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
'Class:lnkSanToDatacenterDevice' => 'Link SAN / Dispositivo Datacenter',
'Class:lnkSanToDatacenterDevice' => 'Relação entre Switch SAN / Dispositivo de datacenter',
'Class:lnkSanToDatacenterDevice+' => '',
'Class:lnkSanToDatacenterDevice/Name' => '%1$s / %2$s~~',
'Class:lnkSanToDatacenterDevice/Attribute:san_id' => 'Switch SAN',
@@ -827,9 +827,9 @@ Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
'Class:lnkSanToDatacenterDevice/Attribute:datacenterdevice_id+' => '',
'Class:lnkSanToDatacenterDevice/Attribute:datacenterdevice_name' => 'Nome do dispositivo',
'Class:lnkSanToDatacenterDevice/Attribute:datacenterdevice_name+' => '',
'Class:lnkSanToDatacenterDevice/Attribute:san_port' => 'FC SAN',
'Class:lnkSanToDatacenterDevice/Attribute:san_port' => 'FC do SAN',
'Class:lnkSanToDatacenterDevice/Attribute:san_port+' => '',
'Class:lnkSanToDatacenterDevice/Attribute:datacenterdevice_port' => 'Dispositivo de FC',
'Class:lnkSanToDatacenterDevice/Attribute:datacenterdevice_port' => 'FC do dispositivo',
'Class:lnkSanToDatacenterDevice/Attribute:datacenterdevice_port+' => '',
));
@@ -888,7 +888,7 @@ Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
'Class:Software/Attribute:version' => 'Versão',
'Class:Software/Attribute:version+' => '',
'Class:Software/Attribute:documents_list' => 'Documentos',
'Class:Software/Attribute:documents_list+' => 'Todos os documentos associados a este software',
'Class:Software/Attribute:documents_list+' => 'Todos os Documentos associados a este Software',
'Class:Software/Attribute:type' => 'Tipo',
'Class:Software/Attribute:type+' => '',
'Class:Software/Attribute:type/Value:DBServer' => 'Servidor de DB',
@@ -902,11 +902,11 @@ Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
'Class:Software/Attribute:type/Value:WebServer' => 'Servidor Web',
'Class:Software/Attribute:type/Value:WebServer+' => 'Servidor Web',
'Class:Software/Attribute:softwareinstance_list' => 'Instâncias de Software',
'Class:Software/Attribute:softwareinstance_list+' => 'Todas as instâncias software para esse software',
'Class:Software/Attribute:softwareinstance_list+' => 'Todas as Instâncias de software para este Software',
'Class:Software/Attribute:softwarepatch_list' => 'Atualizações de software',
'Class:Software/Attribute:softwarepatch_list+' => 'Todas as atualizações para esse software',
'Class:Software/Attribute:softwarelicence_list' => 'Licenças de Software',
'Class:Software/Attribute:softwarelicence_list+' => 'Todas as licenças software para esse software',
'Class:Software/Attribute:softwarepatch_list+' => 'Todas as Atualizações para este Software',
'Class:Software/Attribute:softwarelicence_list' => 'Licenças de software',
'Class:Software/Attribute:softwarelicence_list+' => 'Todas as Licenças de software para este Software',
));
//
@@ -919,7 +919,7 @@ Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
'Class:Patch/Attribute:name' => 'Nome',
'Class:Patch/Attribute:name+' => '',
'Class:Patch/Attribute:documents_list' => 'Documentos',
'Class:Patch/Attribute:documents_list+' => 'Todos os documentos associados à esta atualização',
'Class:Patch/Attribute:documents_list+' => 'Todos os Documentos associados à esta Atualização',
'Class:Patch/Attribute:description' => 'Descrição',
'Class:Patch/Attribute:description+' => '',
'Class:Patch/Attribute:finalclass' => 'Tipo',
@@ -934,7 +934,7 @@ Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
'Class:OSPatch' => 'Atualização de SO',
'Class:OSPatch+' => '',
'Class:OSPatch/Attribute:functionalcis_list' => 'Dispositivos',
'Class:OSPatch/Attribute:functionalcis_list+' => 'Todos os sistemas onde essa atualização está instalada',
'Class:OSPatch/Attribute:functionalcis_list+' => 'Todos os sistemas onde essa Atualização de SO está instalada',
'Class:OSPatch/Attribute:osversion_id' => 'Versão do SO',
'Class:OSPatch/Attribute:osversion_id+' => '',
'Class:OSPatch/Attribute:osversion_name' => 'Nome da versão do SO',
@@ -952,8 +952,8 @@ Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
'Class:SoftwarePatch/Attribute:software_id+' => '',
'Class:SoftwarePatch/Attribute:software_name' => 'Nome do software',
'Class:SoftwarePatch/Attribute:software_name+' => '',
'Class:SoftwarePatch/Attribute:softwareinstances_list' => 'Instâncias do Software',
'Class:SoftwarePatch/Attribute:softwareinstances_list+' => 'Todos os sistemas onde essa atualização de software está instalada',
'Class:SoftwarePatch/Attribute:softwareinstances_list' => 'Instâncias de software',
'Class:SoftwarePatch/Attribute:softwareinstances_list+' => 'Todos os sistemas onde essa Atualização de software está instalada',
));
//
@@ -966,7 +966,7 @@ Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
'Class:Licence/Attribute:name' => 'Nome',
'Class:Licence/Attribute:name+' => '',
'Class:Licence/Attribute:documents_list' => 'Documentos',
'Class:Licence/Attribute:documents_list+' => 'Todos os documentos associados à esta licença',
'Class:Licence/Attribute:documents_list+' => 'Todos os Documentos associados à esta Licença',
'Class:Licence/Attribute:org_id' => 'Organização',
'Class:Licence/Attribute:org_id+' => '',
'Class:Licence/Attribute:organization_name' => 'Nome da organização',
@@ -1003,10 +1003,10 @@ Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
'Class:OSLicence/Attribute:osversion_id+' => '',
'Class:OSLicence/Attribute:osversion_name' => 'Nome da versão do SO',
'Class:OSLicence/Attribute:osversion_name+' => '',
'Class:OSLicence/Attribute:virtualmachines_list' => 'Máquinas virtuais',
'Class:OSLicence/Attribute:virtualmachines_list+' => 'Todas as máquinas virtuais onde essa licença é utilizada',
'Class:OSLicence/Attribute:servers_list' => 'servidores',
'Class:OSLicence/Attribute:servers_list+' => 'Todos os servidores onde essa licença é utilizada',
'Class:OSLicence/Attribute:virtualmachines_list' => 'Máquinas virtuais (VMs)',
'Class:OSLicence/Attribute:virtualmachines_list+' => 'Todas as Máquinas virtuais (VMs) onde essa Licença é utilizada',
'Class:OSLicence/Attribute:servers_list' => 'Servidores',
'Class:OSLicence/Attribute:servers_list+' => 'Todos os Servidores onde essa Licença é utilizada',
));
//
@@ -1014,15 +1014,15 @@ Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
//
Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
'Class:SoftwareLicence' => 'Licença de software',
'Class:SoftwareLicence' => 'Licença de Software',
'Class:SoftwareLicence+' => '',
'Class:SoftwareLicence/ComplementaryName' => '%1$s - %2$s~~',
'Class:SoftwareLicence/Attribute:software_id' => 'Software',
'Class:SoftwareLicence/Attribute:software_id+' => '',
'Class:SoftwareLicence/Attribute:software_name' => 'Nome do software',
'Class:SoftwareLicence/Attribute:software_name+' => '',
'Class:SoftwareLicence/Attribute:softwareinstance_list' => 'Instâncias do software',
'Class:SoftwareLicence/Attribute:softwareinstance_list+' => 'Todos os sistemas onde essa licença é utilizada',
'Class:SoftwareLicence/Attribute:softwareinstance_list' => 'Instâncias de software',
'Class:SoftwareLicence/Attribute:softwareinstance_list+' => 'Todos os sistemas onde esta Licença é utilizada',
));
//
@@ -1030,7 +1030,7 @@ Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
//
Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
'Class:lnkDocumentToLicence' => 'Link Documento / Licença',
'Class:lnkDocumentToLicence' => 'Relação entre Documento / Licença',
'Class:lnkDocumentToLicence+' => '',
'Class:lnkDocumentToLicence/Name' => '%1$s / %2$s~~',
'Class:lnkDocumentToLicence/Attribute:licence_id' => 'Licença',
@@ -1075,7 +1075,7 @@ Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
'Class:Brand/Attribute:logo' => 'Logo~~',
'Class:Brand/Attribute:logo+' => '~~',
'Class:Brand/Attribute:physicaldevices_list' => 'Dispositivos físicos',
'Class:Brand/Attribute:physicaldevices_list+' => 'Todos os dispositivos físicos correspondentes a esse(a) fabricante',
'Class:Brand/Attribute:physicaldevices_list+' => 'Todos os Dispositivos físicos correspondentes a esse(a) Fabricante',
'Class:Brand/UniquenessRule:name+' => 'O nome do(a) fabricante deve ser único',
'Class:Brand/UniquenessRule:name' => 'Esse(a) fabricante já existe',
));
@@ -1133,7 +1133,7 @@ Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
'Class:Model/Attribute:type/Value:Phone' => 'Telefone',
'Class:Model/Attribute:type/Value:Phone+' => '',
'Class:Model/Attribute:physicaldevices_list' => 'Dispositivo físico',
'Class:Model/Attribute:physicaldevices_list+' => 'Todos os dispositivos físicos correspondentes a este modelo',
'Class:Model/Attribute:physicaldevices_list+' => 'Todos os Dispositivos físicos correspondentes à este Modelo',
'Class:Model/UniquenessRule:name_brand+' => 'O nome do modelo deve ser único',
'Class:Model/UniquenessRule:name_brand' => 'Este modelo já existe',
));
@@ -1145,8 +1145,8 @@ Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
'Class:NetworkDeviceType' => 'Tipo de dispositivo de rede',
'Class:NetworkDeviceType+' => '',
'Class:NetworkDeviceType/Attribute:networkdevicesdevices_list' => 'Dispositivo de rede',
'Class:NetworkDeviceType/Attribute:networkdevicesdevices_list+' => 'Todos os dispositivo de rede correspondentes a este tipo',
'Class:NetworkDeviceType/Attribute:networkdevicesdevices_list' => 'Dispositivos de rede',
'Class:NetworkDeviceType/Attribute:networkdevicesdevices_list+' => 'Todos os Dispositivos de rede correspondentes a este Tipo',
));
//
@@ -1154,7 +1154,7 @@ Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
//
Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
'Class:IOSVersion' => 'Versão do IOS',
'Class:IOSVersion' => 'Versão do SO',
'Class:IOSVersion+' => '',
'Class:IOSVersion/Attribute:brand_id' => 'Fabricante',
'Class:IOSVersion/Attribute:brand_id+' => '',
@@ -1167,7 +1167,7 @@ Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
//
Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
'Class:lnkDocumentToPatch' => 'Link Documento / Atualização',
'Class:lnkDocumentToPatch' => 'Relação entre Documento / Atualização',
'Class:lnkDocumentToPatch+' => '',
'Class:lnkDocumentToPatch/Name' => '%1$s / %2$s~~',
'Class:lnkDocumentToPatch/Attribute:patch_id' => 'Atualização',
@@ -1185,7 +1185,7 @@ Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
//
Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
'Class:lnkSoftwareInstanceToSoftwarePatch' => 'Link Instância de Software / Atualização de Software',
'Class:lnkSoftwareInstanceToSoftwarePatch' => 'Relação entre Instância de software / Atualização de software',
'Class:lnkSoftwareInstanceToSoftwarePatch+' => '',
'Class:lnkSoftwareInstanceToSoftwarePatch/Name' => '%1$s / %2$s~~',
'Class:lnkSoftwareInstanceToSoftwarePatch/Attribute:softwarepatch_id' => 'Atualização de software',
@@ -1203,7 +1203,7 @@ Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
//
Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
'Class:lnkFunctionalCIToOSPatch' => 'Link IC / Atualização de SO',
'Class:lnkFunctionalCIToOSPatch' => 'Relação entre IC / Atualização de SO',
'Class:lnkFunctionalCIToOSPatch+' => '',
'Class:lnkFunctionalCIToOSPatch/Name' => '%1$s / %2$s~~',
'Class:lnkFunctionalCIToOSPatch/Attribute:ospatch_id' => 'Atualização de SO',
@@ -1221,7 +1221,7 @@ Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
//
Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
'Class:lnkDocumentToSoftware' => 'Link Documento / Software',
'Class:lnkDocumentToSoftware' => 'Relação entre Documento / Software',
'Class:lnkDocumentToSoftware+' => '',
'Class:lnkDocumentToSoftware/Name' => '%1$s / %2$s~~',
'Class:lnkDocumentToSoftware/Attribute:software_id' => 'Software',
@@ -1285,7 +1285,7 @@ Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
//
Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
'Class:lnkSubnetToVLAN' => 'Link Sub-rede / VLAN',
'Class:lnkSubnetToVLAN' => 'Relação entre Sub-rede / VLAN',
'Class:lnkSubnetToVLAN+' => '',
'Class:lnkSubnetToVLAN/Name' => '%1$s / %2$s~~',
'Class:lnkSubnetToVLAN/Attribute:subnet_id' => 'Sub-rede',
@@ -1305,7 +1305,7 @@ Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
//
Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
'Class:NetworkInterface' => 'Placa de Rede',
'Class:NetworkInterface' => 'Adaptador de Rede',
'Class:NetworkInterface+' => '',
'Class:NetworkInterface/Attribute:name' => 'Nome',
'Class:NetworkInterface/Attribute:name+' => '',
@@ -1355,7 +1355,7 @@ Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
//
Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
'Class:lnkPhysicalInterfaceToVLAN' => 'Link Interfaces físicas / VLAN',
'Class:lnkPhysicalInterfaceToVLAN' => 'Relação entre Interface física / VLAN',
'Class:lnkPhysicalInterfaceToVLAN+' => '',
'Class:lnkPhysicalInterfaceToVLAN/Name' => '%1$s %2$s / %3$s~~',
'Class:lnkPhysicalInterfaceToVLAN/Attribute:physicalinterface_id' => 'Interface física',
@@ -1410,7 +1410,7 @@ Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
//
Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
'Class:lnkConnectableCIToNetworkDevice' => 'Link ConnectableCI / NetworkDevice',
'Class:lnkConnectableCIToNetworkDevice' => 'Relação entre Dispositivo conectado / Dispositivo de rede',
'Class:lnkConnectableCIToNetworkDevice+' => '',
'Class:lnkConnectableCIToNetworkDevice/Name' => '%1$s / %2$s~~',
'Class:lnkConnectableCIToNetworkDevice/Attribute:networkdevice_id' => 'Dispositivo de rede',
@@ -1438,7 +1438,7 @@ Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
//
Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
'Class:lnkApplicationSolutionToFunctionalCI' => 'Link Solução de Aplicação / IC',
'Class:lnkApplicationSolutionToFunctionalCI' => 'Relação entre Solução de aplicação / IC',
'Class:lnkApplicationSolutionToFunctionalCI+' => '',
'Class:lnkApplicationSolutionToFunctionalCI/Name' => '%1$s / %2$s~~',
'Class:lnkApplicationSolutionToFunctionalCI/Attribute:applicationsolution_id' => 'Solução de aplicação',
@@ -1456,7 +1456,7 @@ Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
//
Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
'Class:lnkApplicationSolutionToBusinessProcess' => 'Link ApplicationSolution / BusinessProcess',
'Class:lnkApplicationSolutionToBusinessProcess' => 'Relação entre Solução de aplicação / Processo de negócio',
'Class:lnkApplicationSolutionToBusinessProcess+' => '',
'Class:lnkApplicationSolutionToBusinessProcess/Name' => '%1$s / %2$s~~',
'Class:lnkApplicationSolutionToBusinessProcess/Attribute:businessprocess_id' => 'Processo de negócio',
@@ -1500,7 +1500,7 @@ Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
'Class:Group/Attribute:parent_name' => 'Nome',
'Class:Group/Attribute:parent_name+' => '',
'Class:Group/Attribute:ci_list' => 'ICs relacionados',
'Class:Group/Attribute:ci_list+' => 'Todos os itens de configuração associados a este grupo',
'Class:Group/Attribute:ci_list+' => 'Todos os Itens de configuração (IC) associados à este Grupo',
'Class:Group/Attribute:parent_id_friendlyname' => 'Grupo pai',
'Class:Group/Attribute:parent_id_friendlyname+' => '',
));
@@ -1510,7 +1510,7 @@ Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
//
Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
'Class:lnkGroupToCI' => 'Link Grupo / IC',
'Class:lnkGroupToCI' => 'Relação entre Grupo / IC',
'Class:lnkGroupToCI+' => '',
'Class:lnkGroupToCI/Name' => '%1$s / %2$s~~',
'Class:lnkGroupToCI/Attribute:group_id' => 'Grupo',
@@ -1548,10 +1548,10 @@ Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
//
Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
'Class:lnkDocumentToFunctionalCI' => 'Link de Documento / IC',
'Class:lnkDocumentToFunctionalCI' => 'Relação entre Documento / IC',
'Class:lnkDocumentToFunctionalCI+' => '',
'Class:lnkDocumentToFunctionalCI/Name' => '%1$s / %2$s~~',
'Class:lnkDocumentToFunctionalCI/Attribute:functionalci_id' => 'ICs',
'Class:lnkDocumentToFunctionalCI/Attribute:functionalci_id' => 'IC',
'Class:lnkDocumentToFunctionalCI/Attribute:functionalci_id+' => '',
'Class:lnkDocumentToFunctionalCI/Attribute:functionalci_name' => 'Nome do IC',
'Class:lnkDocumentToFunctionalCI/Attribute:functionalci_name+' => '',
@@ -1579,7 +1579,7 @@ Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
'Menu:Licence+' => 'Lista de Licenças',
'Menu:Patch' => 'Atualizações',
'Menu:Patch+' => 'Lista de Atualizações',
'Menu:ApplicationInstance' => 'Softwares Instalados',
'Menu:ApplicationInstance' => 'Softwares instalados',
'Menu:ApplicationInstance+' => 'Serviços de aplicações e servidores de banco de dados',
'Menu:ConfigManagementHardware' => 'Gerenciamento de Infraestrutura',
'Menu:Subnet' => 'Sub-redes',
@@ -1595,9 +1595,9 @@ Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
'Menu:PC' => 'Estação de Trabalho',
'Menu:PC+' => 'Lista de Estações de Trabalho',
'Menu:NewCI' => 'Novo IC',
'Menu:NewCI+' => '',
'Menu:NewCI+' => 'Novo Item de Configuração (IC)',
'Menu:SearchCIs' => 'Pesquisar por ICs',
'Menu:SearchCIs+' => '',
'Menu:SearchCIs+' => 'Pesquisar por Itens de Configuração (ICs)',
'Menu:ConfigManagement:Devices' => 'Dispositivos',
'Menu:ConfigManagement:AllDevices' => 'Infraestrutura',
'Menu:ConfigManagement:virtualization' => 'Virtualização',
@@ -1605,7 +1605,7 @@ Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
'Menu:ConfigManagement:SWAndApps' => 'Softwares e aplicações',
'Menu:ConfigManagement:Misc' => 'Diversos',
'Menu:Group' => 'Grupos de ICs',
'Menu:Group+' => 'Lista de Grupos de ICs',
'Menu:Group+' => 'Lista de Grupos de Itens de Configuração (ICs)',
'Menu:OSVersion' => 'Versão do SO',
'Menu:OSVersion+' => 'Lista de Versões do SO',
'Menu:Software' => 'Catálogo de Software',

View File

@@ -10,7 +10,7 @@
*
*/
Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
'Menu:ConfigFileEditor' => 'Plain text editor~~',
'Menu:ConfigFileEditor' => 'Configurações',
'config-edit-title' => 'Editor do arquivo de configuração',
'config-edit-intro' => 'Tenha cuidado ao editar o arquivo de configuração',
'Menu:ConfigEditor' => 'Configurações',

View File

@@ -10,8 +10,16 @@
*
*/
Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
'iTopUpdate:UI:PageTitle' => 'Atualização do '.ITOP_APPLICATION_SHORT, 'itop-core-update:UI:SelectUpdateFile' => 'Atualização do '.ITOP_APPLICATION_SHORT, 'itop-core-update:UI:ConfirmUpdate' => 'Atualização do '.ITOP_APPLICATION_SHORT, 'itop-core-update:UI:UpdateCoreFiles' => 'Atualização do '.ITOP_APPLICATION_SHORT, 'iTopUpdate:UI:MaintenanceModeActive' => 'O '.ITOP_APPLICATION_SHORT.' encontra-se em manutenção, nenhum usuário pode acessar a aplicação. Você precisa rodar o Setup ou restaurar os arquivos da aplicação para voltar ao modo normal',
'itop-core-update:UI:UpdateDone' => 'Atualização do '.ITOP_APPLICATION_SHORT, 'itop-core-update/Operation:SelectUpdateFile/Title' => 'Atualização do '.ITOP_APPLICATION_SHORT, 'itop-core-update/Operation:ConfirmUpdate/Title' => 'Confirmar Atualização do '.ITOP_APPLICATION_SHORT, 'itop-core-update/Operation:UpdateCoreFiles/Title' => 'Aplicação em Atualização',
'iTopUpdate:UI:PageTitle' => 'Atualização do '.ITOP_APPLICATION_SHORT,
'itop-core-update:UI:SelectUpdateFile' => 'Atualização do '.ITOP_APPLICATION_SHORT,
'itop-core-update:UI:ConfirmUpdate' => 'Atualização do '.ITOP_APPLICATION_SHORT,
'itop-core-update:UI:UpdateCoreFiles' => 'Atualização do '.ITOP_APPLICATION_SHORT,
'iTopUpdate:UI:MaintenanceModeActive' => 'O '.ITOP_APPLICATION_SHORT.' encontra-se em manutenção, nenhum usuário pode acessar a aplicação. Você precisa rodar o Setup ou restaurar os arquivos da aplicação para voltar ao modo normal',
'itop-core-update:UI:UpdateDone' => 'Atualização do '.ITOP_APPLICATION_SHORT,
'itop-core-update/Operation:SelectUpdateFile/Title' => 'Atualização do '.ITOP_APPLICATION_SHORT,
'itop-core-update/Operation:ConfirmUpdate/Title' => 'Confirmar Atualização do '.ITOP_APPLICATION_SHORT,
'itop-core-update/Operation:UpdateCoreFiles/Title' => 'Aplicação em Atualização',
'itop-core-update/Operation:UpdateDone/Title' => 'Atualização do '.ITOP_APPLICATION_SHORT.' finalizada',
'iTopUpdate:UI:SelectUpdateFile' => 'Escolha o arquivo de atualização para enviar',
'iTopUpdate:UI:CheckUpdate' => 'Verificando arquivo de atualização',
@@ -23,7 +31,7 @@ Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
'iTopUpdate:UI:Cancel' => 'Cancelar',
'iTopUpdate:UI:CannotUpdateNewModules' => '<b>Alguns módulos novos foram detectados</b>, uma atualização parcial não pode ser executada.</br>Siga o <a target="_blank" href="%2$s"> procedimento</a> para atualizar manualmente seu iTop. Você deve usar o <a href="%1$s">Setup</a> para atualizar a aplicação.',
'iTopUpdate:UI:Continue' => 'Continuar',
'iTopUpdate:UI:RunSetup' => 'Rodar Setup',
'iTopUpdate:UI:RunSetup' => 'Executar Setup',
'iTopUpdate:UI:WithDBBackup' => 'Backup do banco de dados',
'iTopUpdate:UI:WithFilesBackup' => 'Backup dos arquivos da aplicação',
'iTopUpdate:UI:WithoutBackup' => 'Backup não planejado',
@@ -40,7 +48,8 @@ Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
'iTopUpdate:UI:DoBackup:Label' => 'Backup de arquivos e banco de dados',
'iTopUpdate:UI:DoBackup:Warning' => 'Backup não recomendado devido ao espaço em disco limitado',
'iTopUpdate:UI:DiskFreeSpace' => 'Espaço em disco disponível',
'iTopUpdate:UI:ItopDiskSpace' => 'Espaço em disco do '.ITOP_APPLICATION_SHORT, 'iTopUpdate:UI:DBDiskSpace' => 'Espaço em disco do banco de dados',
'iTopUpdate:UI:ItopDiskSpace' => 'Espaço em disco do '.ITOP_APPLICATION_SHORT,
'iTopUpdate:UI:DBDiskSpace' => 'Espaço em disco do banco de dados',
'iTopUpdate:UI:FileUploadMaxSize' => 'Tamanho máximo de envio de arquivos',
'iTopUpdate:UI:PostMaxSize' => 'PHP ini post_max_size: %1$s',
'iTopUpdate:UI:UploadMaxFileSize' => 'PHP ini upload_max_filesize: %1$s',
@@ -81,7 +90,9 @@ Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
'iTopUpdate:UI:RestoreArchive' => 'Você pode restaurar sua aplicação com o arquivo \'%1$s\'',
'iTopUpdate:UI:RestoreBackup' => 'Você pode restaurar seu banco de dados com \'%1$s\'',
'iTopUpdate:UI:UpdateDone' => 'Atualizado com sucesso',
'Menu:iTopUpdate' => 'Atualização do '.ITOP_APPLICATION_SHORT, 'Menu:iTopUpdate+' => 'Atualização do '.ITOP_APPLICATION_SHORT, 'Class:ModuleInstallation/Attribute:installed' => 'Instalado em',
'Menu:iTopUpdate' => 'Atualização do '.ITOP_APPLICATION_SHORT,
'Menu:iTopUpdate+' => 'Atualização do '.ITOP_APPLICATION_SHORT,
'Class:ModuleInstallation/Attribute:installed' => 'Instalado em',
'Class:ModuleInstallation/Attribute:name' => 'Nome',
'Class:ModuleInstallation/Attribute:version' => 'Versão',
'Class:ModuleInstallation/Attribute:comment' => 'Comentário'

View File

@@ -12,7 +12,7 @@
Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
'FilesInformation:Error:MissingFile' => 'Arquivo ausente: %1$s',
'FilesInformation:Error:CorruptedFile' => 'Arquivo %1$s está corrompido',
'FilesInformation:Error:ListCorruptedFile' => 'File(s) corrupted: %1$s ~~',
'FilesInformation:Error:ListCorruptedFile' => 'Arquivo(s) corrompido(s): %1$s ',
'FilesInformation:Error:CantWriteToFile' => 'Sem permissão de escrita no arquivo %1$s',
));

View File

@@ -14,8 +14,8 @@ Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
'Menu:iTopHub:Register' => 'Conectar ao iTop Hub',
'Menu:iTopHub:Register+' => 'Vá para o iTop Hub para atualizar sua instância '.ITOP_APPLICATION_SHORT,
'Menu:iTopHub:Register:Description' => '<p>Obtenha acesso à sua plataforma da comunidade iTop Hub!</br>Encontre todos os conteúdos e informações necessárias, gerencie suas instâncias '.ITOP_APPLICATION_SHORT.' por meio de ferramentas personalizadas & instale mais extensões.</br><br/>Ao conectar-se ao iTop hub a partir desta página, você enviará informações da sua instância '.ITOP_APPLICATION_SHORT.' ao iTop Hub.</p>',
'Menu:iTopHub:MyExtensions' => 'Extensões Implantadas',
'Menu:iTopHub:MyExtensions+' => 'Veja a lista de extensões implantadas nesta instância do '.ITOP_APPLICATION_SHORT,
'Menu:iTopHub:MyExtensions' => 'Extensões Instaladas',
'Menu:iTopHub:MyExtensions+' => 'Veja a lista de extensões instaladas nesta instância do '.ITOP_APPLICATION_SHORT,
'Menu:iTopHub:BrowseExtensions' => 'Obter Extensões do iTop Hub',
'Menu:iTopHub:BrowseExtensions+' => 'Navegue por mais extensões no iTop Hub',
'Menu:iTopHub:BrowseExtensions:Description' => '<p>Visite a loja do iTop Hub, seu único lugar para encontrar extensões maravilhosas do '.ITOP_APPLICATION_SHORT.' !</br>Encontre as extensões que irão ajudá-lo a personalizar e adaptar o '.ITOP_APPLICATION_SHORT.' aos seus processos.</br><br/>Ao conectar-se ao iTop hub a partir desta página, você enviará informações da sua instância '.ITOP_APPLICATION_SHORT.' ao iTop Hub.</p>',
@@ -65,5 +65,3 @@ Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
'iTopHub:InstallationStatus:Installed' => 'Instalado',
'iTopHub:InstallationStatus:Version_NotInstalled' => 'Versão %1$s <b>NÃO</b> instalada',
));

View File

@@ -188,7 +188,7 @@ Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
'Class:Incident/Attribute:related_request_list' => 'Solicitações filhas',
'Class:Incident/Attribute:related_request_list+' => '',
'Class:Incident/Attribute:child_incidents_list' => 'Incidentes filhos',
'Class:Incident/Attribute:child_incidents_list+' => 'Todos os subincidentes associados a este incidente',
'Class:Incident/Attribute:child_incidents_list+' => 'Todos os Subincidentes associados à este Incidente',
'Class:Incident/Attribute:public_log' => 'Log público',
'Class:Incident/Attribute:public_log+' => '',
'Class:Incident/Attribute:user_satisfaction' => 'Satisfação do usuário',

View File

@@ -20,7 +20,7 @@ Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
'Class:KnownError/Attribute:cust_name+' => '',
'Class:KnownError/Attribute:problem_id' => 'Problema relacionado',
'Class:KnownError/Attribute:problem_id+' => '',
'Class:KnownError/Attribute:problem_ref' => 'Ref. Problema relacionado',
'Class:KnownError/Attribute:problem_ref' => 'Ref. problema relacionado',
'Class:KnownError/Attribute:problem_ref+' => '',
'Class:KnownError/Attribute:symptom' => 'Sintoma do erro',
'Class:KnownError/Attribute:symptom+' => '',
@@ -49,9 +49,9 @@ Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
'Class:KnownError/Attribute:version' => 'Versão',
'Class:KnownError/Attribute:version+' => '',
'Class:KnownError/Attribute:ci_list' => 'ICs',
'Class:KnownError/Attribute:ci_list+' => 'Todos os itens de configuração associados a este erro conhecido',
'Class:KnownError/Attribute:ci_list+' => 'Todos os Itens de Configuração (ICs) associados à este Erro conhecido',
'Class:KnownError/Attribute:document_list' => 'Documentos',
'Class:KnownError/Attribute:document_list+' => 'Todos os documentos associados a este erro conhecido',
'Class:KnownError/Attribute:document_list+' => 'Todos os Documentos associados à este Erro conhecido',
));
//
@@ -59,8 +59,8 @@ Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
//
Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
'Class:lnkErrorToFunctionalCI' => 'Link Erro Conhecido / IC',
'Class:lnkErrorToFunctionalCI+' => 'Infraestrutura associada a este erro conhecido',
'Class:lnkErrorToFunctionalCI' => 'Relação entre Erro conhecido / IC',
'Class:lnkErrorToFunctionalCI+' => 'Itens de configuração (IC) associados à este Erro conhecido',
'Class:lnkErrorToFunctionalCI/Name' => '%1$s / %2$s~~',
'Class:lnkErrorToFunctionalCI/Attribute:functionalci_id' => 'ICs',
'Class:lnkErrorToFunctionalCI/Attribute:functionalci_id+' => '',
@@ -79,7 +79,7 @@ Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
//
Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
'Class:lnkDocumentToError' => 'Link Documentos / Erros',
'Class:lnkDocumentToError' => 'Relação entre Documento / Erro',
'Class:lnkDocumentToError+' => 'Uma ligação entre um documento e um erro conhecido',
'Class:lnkDocumentToError/Name' => '%1$s / %2$s~~',
'Class:lnkDocumentToError/Attribute:document_id' => 'Documento',

View File

@@ -97,11 +97,11 @@ Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
'Class:Problem/Attribute:resolution_date' => 'Data de solução',
'Class:Problem/Attribute:resolution_date+' => '',
'Class:Problem/Attribute:knownerrors_list' => 'Erros conhecidos',
'Class:Problem/Attribute:knownerrors_list+' => 'Todos os erros conhecidos associados a este problema',
'Class:Problem/Attribute:knownerrors_list+' => 'Todos os Erros conhecidos associados à este Problema',
'Class:Problem/Attribute:related_request_list' => 'Solicitações relacionadas',
'Class:Problem/Attribute:related_request_list+' => 'Todas as solicitações associadas a este problema',
'Class:Problem/Attribute:related_request_list+' => 'Todas as Solicitações associados à este Problema',
'Class:Problem/Attribute:related_incident_list' => 'Incidentes relacionados',
'Class:Problem/Attribute:related_incident_list+' => 'Todos os incidentes associados a este problema',
'Class:Problem/Attribute:related_incident_list+' => 'Todos os Incidentes associados à este Problema',
'Class:Problem/Stimulus:ev_assign' => 'Atribuir',
'Class:Problem/Stimulus:ev_assign+' => '',
'Class:Problem/Stimulus:ev_reassign' => 'Reatribuir',

View File

@@ -11,11 +11,11 @@
*/
Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
'Menu:RequestManagement' => 'Gerenciamento de Solicitações',
'Menu:RequestManagement+' => 'Gerenciamento de Solicitações',
'Menu:RequestManagementProvider' => 'Solicitações a provedores',
'Menu:RequestManagementProvider+' => 'Solicitações a provedores',
'Menu:RequestManagement+' => '',
'Menu:RequestManagementProvider' => 'Solicitações a provedores(as)',
'Menu:RequestManagementProvider+' => '',
'Menu:UserRequest:Provider' => 'Solicitações abertas transferidas a provedores',
'Menu:UserRequest:Provider+' => 'Solicitações abertas transferidas a provedores',
'Menu:UserRequest:Provider+' => '',
'Menu:UserRequest:Overview' => 'Visão geral',
'Menu:UserRequest:Overview+' => 'Visão geral',
'Menu:NewUserRequest' => 'Nova solicitação',
@@ -24,8 +24,8 @@ Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
'Menu:SearchUserRequests+' => 'Pesquisar por solicitações',
'Menu:UserRequest:Shortcuts' => 'Atalhos',
'Menu:UserRequest:Shortcuts+' => '',
'Menu:UserRequest:MyRequests' => 'Solicitações abertas por mim',
'Menu:UserRequest:MyRequests+' => 'Solicitações abertas por mim (como Agente)',
'Menu:UserRequest:MyRequests' => 'Solicitações atribuídas a mim',
'Menu:UserRequest:MyRequests+' => 'Solicitações atribuídas a mim (como Agente)',
'Menu:UserRequest:MySupportRequests' => 'Minhas solicitações de suporte',
'Menu:UserRequest:MySupportRequests+' => 'Minhas solicitações de suporte',
'Menu:UserRequest:EscalatedRequests' => 'Solicitações escalonados',
@@ -159,7 +159,7 @@ Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
'Class:UserRequest/Attribute:tto' => 'TTO',
'Class:UserRequest/Attribute:tto+' => 'Tempo para atribuição (TTO)',
'Class:UserRequest/Attribute:ttr' => 'TTR',
'Class:UserRequest/Attribute:ttr+' => 'Tempo para solução (TTR)',
'Class:UserRequest/Attribute:ttr+' => 'Tempo para resolução (TTR)',
'Class:UserRequest/Attribute:tto_escalation_deadline' => 'Prazo determinado de atribuição (TTO)',
'Class:UserRequest/Attribute:tto_escalation_deadline+' => 'Prazo determinado de Tempo para atribuição (TTO)',
'Class:UserRequest/Attribute:sla_tto_passed' => 'SLA TTO superado',
@@ -172,7 +172,7 @@ Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
'Class:UserRequest/Attribute:sla_ttr_passed+' => 'Tempo para solução (TTR) do Acordo de Nível de Serviço (ANS) superado',
'Class:UserRequest/Attribute:sla_ttr_over' => 'SLA TTR ultrapassado',
'Class:UserRequest/Attribute:sla_ttr_over+' => 'Tempo para solução (TTR) do Acordo de Nível de Serviço (ANS) ultrapassado',
'Class:UserRequest/Attribute:time_spent' => 'Tempo de solução',
'Class:UserRequest/Attribute:time_spent' => 'Tempo de resolução',
'Class:UserRequest/Attribute:time_spent+' => '',
'Class:UserRequest/Attribute:resolution_code' => 'Código da solução',
'Class:UserRequest/Attribute:resolution_code+' => '',
@@ -198,17 +198,17 @@ Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
'Class:UserRequest/Attribute:parent_request_id+' => '',
'Class:UserRequest/Attribute:parent_incident_id' => 'Incidente pai',
'Class:UserRequest/Attribute:parent_incident_id+' => '',
'Class:UserRequest/Attribute:parent_request_ref' => 'Ref. Solitação pai',
'Class:UserRequest/Attribute:parent_request_ref' => 'Ref. solitação pai',
'Class:UserRequest/Attribute:parent_request_ref+' => '',
'Class:UserRequest/Attribute:parent_problem_id' => 'Problema pai',
'Class:UserRequest/Attribute:parent_problem_id+' => '',
'Class:UserRequest/Attribute:parent_problem_ref' => 'Ref. Problema pai',
'Class:UserRequest/Attribute:parent_problem_ref' => 'Ref. problema pai',
'Class:UserRequest/Attribute:parent_problem_ref+' => '',
'Class:UserRequest/Attribute:parent_change_id' => 'Mudança pai',
'Class:UserRequest/Attribute:parent_change_id+' => '',
'Class:UserRequest/Attribute:parent_change_ref' => 'Ref. Mudança pai',
'Class:UserRequest/Attribute:parent_change_ref' => 'Ref. mudança pai',
'Class:UserRequest/Attribute:parent_change_ref+' => '',
'Class:UserRequest/Attribute:parent_incident_ref' => 'Ref. Incidente pai',
'Class:UserRequest/Attribute:parent_incident_ref' => 'Ref. incidente pai',
'Class:UserRequest/Attribute:parent_incident_ref+' => '',
'Class:UserRequest/Attribute:related_request_list' => 'Subsolicitações',
'Class:UserRequest/Attribute:related_request_list+' => 'Todas as solicitações associadas à esta solicitação pai',
@@ -253,8 +253,8 @@ Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
'Class:UserRequest/Stimulus:ev_wait_for_approval' => 'Aguardar por aprovação',
'Class:UserRequest/Stimulus:ev_wait_for_approval+' => '',
'Class:UserRequest/Error:CannotAssignParentRequestIdToSelf' => 'Não é possível atribuir a solicitação pai a própria solicitação',
'Class:UserRequest/Method:ResolveChildTickets' => 'ResolveChildTickets',
'Class:UserRequest/Method:ResolveChildTickets+' => 'Conecte a solução a pedidos filhos (ev_autoresolve) e alinhe as seguintes características da requisição: serviço, equipe, agente, info de solução',
'Class:UserRequest/Method:ResolveChildTickets' => 'ResolveChildTickets (resolver solicitações filhas)',
'Class:UserRequest/Method:ResolveChildTickets+' => 'Conecte a solução a solicitações filhas (ev_autoresolve) e alinhe as seguintes características da requisição: serviço, equipe, agente, info de solução',
));

View File

@@ -11,9 +11,9 @@
*/
Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
'Menu:RequestManagement' => 'Gerenciamento de Solicitações',
'Menu:RequestManagement+' => 'Gerenciamento de Solicitações',
'Menu:RequestManagementProvider' => 'Solicitações a provedores',
'Menu:RequestManagementProvider+' => 'Solicitações a provedores',
'Menu:RequestManagement+' => '',
'Menu:RequestManagementProvider' => 'Solicitações a provedores(as)',
'Menu:RequestManagementProvider+' => '',
'Menu:UserRequest:Provider' => 'Solicitações abertas transferidas a provedores',
'Menu:UserRequest:Provider+' => 'Solicitações abertas transferidas a provedores',
'Menu:UserRequest:Overview' => 'Visão geral',
@@ -24,8 +24,8 @@ Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
'Menu:SearchUserRequests+' => 'Pesquisar por solicitações',
'Menu:UserRequest:Shortcuts' => 'Atalhos',
'Menu:UserRequest:Shortcuts+' => '',
'Menu:UserRequest:MyRequests' => 'Solicitações abertas por mim',
'Menu:UserRequest:MyRequests+' => 'Solicitações abertas por mim (como Agente)',
'Menu:UserRequest:MyRequests' => 'Solicitações atribuídas a mim',
'Menu:UserRequest:MyRequests+' => 'Solicitações atribuídas a mim (como Agente)',
'Menu:UserRequest:MySupportRequests' => 'Minhas solicitações de suporte',
'Menu:UserRequest:MySupportRequests+' => 'Minhas solicitações de suporte',
'Menu:UserRequest:EscalatedRequests' => 'Solicitações escalonadas',
@@ -165,7 +165,7 @@ Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
'Class:UserRequest/Attribute:tto' => 'TTO',
'Class:UserRequest/Attribute:tto+' => 'Tempo para atribuição (Time To Own)',
'Class:UserRequest/Attribute:ttr' => 'TTR',
'Class:UserRequest/Attribute:ttr+' => 'Tempo para solução (Time To Resolution)',
'Class:UserRequest/Attribute:ttr+' => 'Tempo para resolução (Time To Resolution)',
'Class:UserRequest/Attribute:tto_escalation_deadline' => 'Prazo determinado de atribuição (TTO)',
'Class:UserRequest/Attribute:tto_escalation_deadline+' => 'Prazo determinado de Tempo para atribuição (TTO)',
'Class:UserRequest/Attribute:sla_tto_passed' => 'SLA TTO superado',
@@ -202,15 +202,15 @@ Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
'Class:UserRequest/Attribute:pending_reason+' => '',
'Class:UserRequest/Attribute:parent_request_id' => 'Solicitação pai',
'Class:UserRequest/Attribute:parent_request_id+' => '',
'Class:UserRequest/Attribute:parent_request_ref' => 'Ref. Solicitação pai',
'Class:UserRequest/Attribute:parent_request_ref' => 'Ref. solicitação pai',
'Class:UserRequest/Attribute:parent_request_ref+' => '',
'Class:UserRequest/Attribute:parent_problem_id' => 'Problema pai',
'Class:UserRequest/Attribute:parent_problem_id+' => '',
'Class:UserRequest/Attribute:parent_problem_ref' => 'Ref. Problema pai',
'Class:UserRequest/Attribute:parent_problem_ref' => 'Ref. problema pai',
'Class:UserRequest/Attribute:parent_problem_ref+' => '',
'Class:UserRequest/Attribute:parent_change_id' => 'Mudança pai',
'Class:UserRequest/Attribute:parent_change_id+' => '',
'Class:UserRequest/Attribute:parent_change_ref' => 'Ref. Mudança pai',
'Class:UserRequest/Attribute:parent_change_ref' => 'Ref. mudança',
'Class:UserRequest/Attribute:parent_change_ref+' => '',
'Class:UserRequest/Attribute:related_request_list' => 'Subsolicitações',
'Class:UserRequest/Attribute:related_request_list+' => 'Todas as solicitações associadas à esta solicitação pai',

View File

@@ -17,7 +17,7 @@ Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
'UI-ServiceManagementMenu-ContractsBySrvLevel' => 'Contratos por nível serviço',
'UI-ServiceManagementMenu-ContractsByStatus' => 'Contratos por status',
'UI-ServiceManagementMenu-ContractsEndingIn30Days' => 'Contratos terminando em menos de 30 dias',
'Menu:ProviderContract' => 'Contratos de provedores',
'Menu:ProviderContract' => 'Contratos de provedores(as)',
'Menu:ProviderContract+' => '',
'Menu:CustomerContract' => 'Contratos de clientes',
'Menu:CustomerContract+' => '',
@@ -86,9 +86,9 @@ Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
'Class:Contract/Attribute:organization_name' => 'Nome da organização',
'Class:Contract/Attribute:organization_name+' => 'Nome comum',
'Class:Contract/Attribute:contacts_list' => 'Contatos',
'Class:Contract/Attribute:contacts_list+' => 'Todos os contatos para este contrato de cliente',
'Class:Contract/Attribute:contacts_list+' => 'Todos os Contatos associados à este Contrato',
'Class:Contract/Attribute:documents_list' => 'Documentos',
'Class:Contract/Attribute:documents_list+' => 'Todos os documentos para este contrato de cliente',
'Class:Contract/Attribute:documents_list+' => 'Todos os Documentos associados à este Contrato',
'Class:Contract/Attribute:description' => 'Descrição',
'Class:Contract/Attribute:description+' => '',
'Class:Contract/Attribute:start_date' => 'Data de início',
@@ -135,11 +135,11 @@ Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
'Class:CustomerContract' => 'Contrato de cliente',
'Class:CustomerContract+' => '',
'Class:CustomerContract/Attribute:services_list' => 'Serviços',
'Class:CustomerContract/Attribute:services_list+' => 'Todos os serviços contratados para este contrato',
'Class:CustomerContract/Attribute:services_list+' => 'Todos os Serviços contratados para este Contrato de cliente',
'Class:CustomerContract/Attribute:functionalcis_list' => 'ICs',
'Class:CustomerContract/Attribute:functionalcis_list+' => 'Todos os itens de configuração que são utilizados para a prestação deste contrato',
'Class:CustomerContract/Attribute:functionalcis_list+' => 'Todos os Itens de Configuração (IC) que são utilizados para a prestação deste Contrato de cliente',
'Class:CustomerContract/Attribute:providercontracts_list' => 'Contratos de provedores',
'Class:CustomerContract/Attribute:providercontracts_list+' => 'Todos os contratos de provedores para suportar este contrato de cliente',
'Class:CustomerContract/Attribute:providercontracts_list+' => 'Todos os Contratos de provedores para suportar este Contrato de cliente',
));
//
@@ -147,10 +147,10 @@ Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
//
Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
'Class:ProviderContract' => 'Contrato de Provedor',
'Class:ProviderContract' => 'Contrato de provedor',
'Class:ProviderContract+' => '',
'Class:ProviderContract/Attribute:functionalcis_list' => 'ICs',
'Class:ProviderContract/Attribute:functionalcis_list+' => 'Todos os itens de configuração abrangidos por esse contrato',
'Class:ProviderContract/Attribute:functionalcis_list+' => 'Todos os Itens de Configuração (IC) abrangidos por este Contrato',
'Class:ProviderContract/Attribute:sla' => 'SLA',
'Class:ProviderContract/Attribute:sla+' => 'Acordo de Nível de Serviço (ANS)',
'Class:ProviderContract/Attribute:coverage' => 'Horário de serviço',
@@ -162,7 +162,7 @@ Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
//
Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
'Class:lnkContactToContract' => 'Link Contato / Contrato',
'Class:lnkContactToContract' => 'Relação entre Contato / Contrato',
'Class:lnkContactToContract+' => '',
'Class:lnkContactToContract/Name' => '%1$s / %2$s~~',
'Class:lnkContactToContract/Attribute:contract_id' => 'Contrato',
@@ -180,7 +180,7 @@ Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
//
Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
'Class:lnkContractToDocument' => 'Link Contrato / Documento',
'Class:lnkContractToDocument' => 'Relação entre Contrato / Documento',
'Class:lnkContractToDocument+' => '',
'Class:lnkContractToDocument/Name' => '%1$s / %2$s~~',
'Class:lnkContractToDocument/Attribute:contract_id' => 'Contrato',
@@ -198,7 +198,7 @@ Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
//
Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
'Class:lnkFunctionalCIToProviderContract' => 'Link IC / Contrato de provedor',
'Class:lnkFunctionalCIToProviderContract' => 'Relação entre IC / Contrato de provedor',
'Class:lnkFunctionalCIToProviderContract+' => '',
'Class:lnkFunctionalCIToProviderContract/Name' => '%1$s / %2$s~~',
'Class:lnkFunctionalCIToProviderContract/Attribute:providercontract_id' => 'Contrato de provedor',
@@ -223,7 +223,7 @@ Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
'Class:ServiceFamily/Attribute:icon' => 'Ícone',
'Class:ServiceFamily/Attribute:icon+' => '',
'Class:ServiceFamily/Attribute:services_list' => 'Serviços',
'Class:ServiceFamily/Attribute:services_list+' => 'Todos os serviços para essa categoria',
'Class:ServiceFamily/Attribute:services_list+' => 'Todos os Serviços associados à esta Família de serviços',
));
//
@@ -236,10 +236,10 @@ Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
'Class:Service/ComplementaryName' => '%1$s - %2$s~~',
'Class:Service/Attribute:name' => 'Nome',
'Class:Service/Attribute:name+' => '',
'Class:Service/Attribute:org_id' => 'Organização',
'Class:Service/Attribute:org_id' => 'Provedor',
'Class:Service/Attribute:org_id+' => '',
'Class:Service/Attribute:organization_name' => 'Nome',
'Class:Service/Attribute:organization_name+' => 'Nome comum',
'Class:Service/Attribute:organization_name' => 'Nome do provedor',
'Class:Service/Attribute:organization_name+' => '',
'Class:Service/Attribute:description' => 'Descrição',
'Class:Service/Attribute:description+' => '',
'Class:Service/Attribute:servicefamily_id' => 'Família de serviços',
@@ -247,23 +247,23 @@ Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
'Class:Service/Attribute:servicefamily_name' => 'Nome da família de serviços',
'Class:Service/Attribute:servicefamily_name+' => '',
'Class:Service/Attribute:documents_list' => 'Documentos',
'Class:Service/Attribute:documents_list+' => 'Todos os documentos associados a este serviço',
'Class:Service/Attribute:documents_list+' => 'Todos os Documentos associados à este Serviço',
'Class:Service/Attribute:contacts_list' => 'Contatos',
'Class:Service/Attribute:contacts_list+' => 'Todos os contatos associados a este serviço',
'Class:Service/Attribute:contacts_list+' => 'Todos os Contatos associados à este Serviço',
'Class:Service/Attribute:status' => 'Status',
'Class:Service/Attribute:status+' => '',
'Class:Service/Attribute:status/Value:implementation' => 'Em homologação',
'Class:Service/Attribute:status/Value:implementation+' => 'Em homologação',
'Class:Service/Attribute:status/Value:implementation+' => '',
'Class:Service/Attribute:status/Value:obsolete' => 'Obsoleto',
'Class:Service/Attribute:status/Value:obsolete+' => '',
'Class:Service/Attribute:status/Value:production' => 'Em produção',
'Class:Service/Attribute:status/Value:production+' => '',
'Class:Service/Attribute:icon' => 'Icon',
'Class:Service/Attribute:icon' => 'Ícone',
'Class:Service/Attribute:icon+' => '',
'Class:Service/Attribute:customercontracts_list' => 'Contratos de clientes',
'Class:Service/Attribute:customercontracts_list+' => 'Todos os contratos de clientes que contrataram esse serviço',
'Class:Service/Attribute:customercontracts_list+' => 'Todos os Contratos de clientes que contrataram este Serviço',
'Class:Service/Attribute:servicesubcategories_list' => 'Subcategorias de serviço',
'Class:Service/Attribute:servicesubcategories_list+' => 'Todas as subcategorias associadas a esse serviço',
'Class:Service/Attribute:servicesubcategories_list+' => 'Todas as Subcategorias de serviço associadas à este Serviço',
));
//
@@ -271,7 +271,7 @@ Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
//
Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
'Class:lnkDocumentToService' => 'Link Documento / Serviço',
'Class:lnkDocumentToService' => 'Relação entre Documento / Serviço',
'Class:lnkDocumentToService+' => '',
'Class:lnkDocumentToService/Name' => '%1$s / %2$s~~',
'Class:lnkDocumentToService/Attribute:service_id' => 'Serviço',
@@ -289,7 +289,7 @@ Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
//
Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
'Class:lnkContactToService' => 'Link Contato / Serviço',
'Class:lnkContactToService' => 'Relação entre Contato / Serviço',
'Class:lnkContactToService+' => '',
'Class:lnkContactToService/Name' => '%1$s / %2$s~~',
'Class:lnkContactToService/Attribute:service_id' => 'Serviço',
@@ -352,10 +352,10 @@ Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
'Class:SLA/Attribute:organization_name' => 'Nome da organização',
'Class:SLA/Attribute:organization_name+' => '',
'Class:SLA/Attribute:slts_list' => 'SLTs',
'Class:SLA/Attribute:slts_list+' => 'Todos os Níveis Mínimos de Serviço (SLTs) para esse Acordo de Nível de Serviço (SLA)',
'Class:SLA/Attribute:slts_list+' => 'Todos os Níveis Mínimos de Serviço (SLTs) para este Acordo de Nível de Serviço (SLA)',
'Class:SLA/Attribute:customercontracts_list' => 'Contratos de clientes',
'Class:SLA/Attribute:customercontracts_list+' => 'Todos os contratos de clientes utilizando esse Acordo de Nível de Serviço (SLA)',
'Class:SLA/Error:UniqueLnkCustomerContractToService' => 'Não foi possível salvar o vínculo entre o Contrato do Cliente %1$s e Serviço %2$s : SLA já existe',
'Class:SLA/Attribute:customercontracts_list+' => 'Todos os Contratos de clientes utilizando este Acordo de Nível de Serviço (SLA)',
'Class:SLA/Error:UniqueLnkCustomerContractToService' => 'Não foi possível salvar o vínculo entre o Contrato de cliente %1$s e o Serviço %2$s : SLA já existe',
));
//
@@ -404,7 +404,7 @@ Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
//
Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
'Class:lnkSLAToSLT' => 'Link SLA / SLT',
'Class:lnkSLAToSLT' => 'Relação entre SLA / SLT',
'Class:lnkSLAToSLT+' => '',
'Class:lnkSLAToSLT/Name' => '%1$s / %2$s~~',
'Class:lnkSLAToSLT/Attribute:sla_id' => 'SLA',
@@ -432,7 +432,7 @@ Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
//
Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
'Class:lnkCustomerContractToService' => 'Link Contrato de cliente / Serviço',
'Class:lnkCustomerContractToService' => 'Relação entre Contrato de cliente / Serviço',
'Class:lnkCustomerContractToService+' => '',
'Class:lnkCustomerContractToService/Name' => '%1$s / %2$s~~',
'Class:lnkCustomerContractToService/Attribute:customercontract_id' => 'Contrato de cliente',
@@ -454,7 +454,7 @@ Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
//
Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
'Class:lnkCustomerContractToProviderContract' => 'Link Contrato de cliente / Contrato de provedor',
'Class:lnkCustomerContractToProviderContract' => 'Relação entre Contrato de cliente / Contrato de provedor',
'Class:lnkCustomerContractToProviderContract+' => '',
'Class:lnkCustomerContractToProviderContract/Name' => '%1$s / %2$s~~',
'Class:lnkCustomerContractToProviderContract/Attribute:customercontract_id' => 'Contrato de cliente',
@@ -472,7 +472,7 @@ Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
//
Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
'Class:lnkCustomerContractToFunctionalCI' => 'Link Contrato de cliente / IC',
'Class:lnkCustomerContractToFunctionalCI' => 'Relação entre Contrato de cliente / IC',
'Class:lnkCustomerContractToFunctionalCI+' => '',
'Class:lnkCustomerContractToFunctionalCI/Name' => '%1$s / %2$s~~',
'Class:lnkCustomerContractToFunctionalCI/Attribute:customercontract_id' => 'Contrato de cliente',
@@ -494,16 +494,16 @@ Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
'Class:DeliveryModel+' => '',
'Class:DeliveryModel/Attribute:name' => 'Nome',
'Class:DeliveryModel/Attribute:name+' => '',
'Class:DeliveryModel/Attribute:org_id' => 'Organização',
'Class:DeliveryModel/Attribute:org_id' => 'Provedor',
'Class:DeliveryModel/Attribute:org_id+' => '',
'Class:DeliveryModel/Attribute:organization_name' => 'Nome da organização',
'Class:DeliveryModel/Attribute:organization_name+' => '',
'Class:DeliveryModel/Attribute:description' => 'Descrição',
'Class:DeliveryModel/Attribute:description+' => '',
'Class:DeliveryModel/Attribute:contacts_list' => 'Contatos',
'Class:DeliveryModel/Attribute:contacts_list+' => 'Todos os contatos (Equipe e Pessoa) para esse Modelo de entrega',
'Class:DeliveryModel/Attribute:contacts_list+' => 'Todos os Contatos (Equipes e Pessoas) associados à este Modelo de entrega',
'Class:DeliveryModel/Attribute:customers_list' => 'Clientes',
'Class:DeliveryModel/Attribute:customers_list+' => 'Todos os clientes com esse Modelo de entrega',
'Class:DeliveryModel/Attribute:customers_list+' => 'Todos os clientes atendidos por este Modelo de entrega',
));
//
@@ -511,7 +511,7 @@ Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
//
Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
'Class:lnkDeliveryModelToContact' => 'Link Modelo de entrega / Contato',
'Class:lnkDeliveryModelToContact' => 'Relação entre Modelo de entrega / Contato',
'Class:lnkDeliveryModelToContact+' => '',
'Class:lnkDeliveryModelToContact/Name' => '%1$s / %2$s~~',
'Class:lnkDeliveryModelToContact/Attribute:deliverymodel_id' => 'Modelo de entrega',

View File

@@ -17,8 +17,8 @@ Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
'UI-ServiceManagementMenu-ContractsBySrvLevel' => 'Contratos por nível de serviço',
'UI-ServiceManagementMenu-ContractsByStatus' => 'Contratos por status',
'UI-ServiceManagementMenu-ContractsEndingIn30Days' => 'Contratos finalizando em menos de 30 dias',
'Menu:ProviderContract' => 'Contratos de provedores',
'Menu:ProviderContract+' => 'Lista de contratos de provedores',
'Menu:ProviderContract' => 'Contratos de provedores(as)',
'Menu:ProviderContract+' => 'Lista de contratos de provedores(as)',
'Menu:CustomerContract' => 'Contratos de clientes',
'Menu:CustomerContract+' => 'Lista de contratos de clientes',
'Menu:ServiceSubcategory' => 'Subcategorias de serviços',
@@ -77,9 +77,9 @@ Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
'Class:Contract/Attribute:organization_name' => 'Nome da organização',
'Class:Contract/Attribute:organization_name+' => '',
'Class:Contract/Attribute:contacts_list' => 'Contatos',
'Class:Contract/Attribute:contacts_list+' => 'Todos os contatos para este contrato com o cliente',
'Class:Contract/Attribute:contacts_list+' => 'Todos os contatos associados à este contrato',
'Class:Contract/Attribute:documents_list' => 'Documentos',
'Class:Contract/Attribute:documents_list+' => 'Todos os documentos para este contrato com o cliente',
'Class:Contract/Attribute:documents_list+' => 'Todos os documentos associados à este contrato',
'Class:Contract/Attribute:description' => 'Descrição',
'Class:Contract/Attribute:description+' => '',
'Class:Contract/Attribute:start_date' => 'Data de início',
@@ -125,7 +125,7 @@ Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
'Class:CustomerContract' => 'Contrato de Cliente',
'Class:CustomerContract+' => '',
'Class:CustomerContract/Attribute:services_list' => 'Serviços',
'Class:CustomerContract/Attribute:services_list+' => 'Todos os serviços contratados para o presente contrato',
'Class:CustomerContract/Attribute:services_list+' => 'Todos os serviços contratados para este contrato de cliente',
));
//
@@ -136,7 +136,7 @@ Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
'Class:ProviderContract' => 'Contrato de provedor',
'Class:ProviderContract+' => '',
'Class:ProviderContract/Attribute:functionalcis_list' => 'ICs',
'Class:ProviderContract/Attribute:functionalcis_list+' => 'Todos os itens de configuração associados a este contrato',
'Class:ProviderContract/Attribute:functionalcis_list+' => 'Todos os itens de configuração (ICs) associados a este contrato',
'Class:ProviderContract/Attribute:sla' => 'SLA',
'Class:ProviderContract/Attribute:sla+' => '',
'Class:ProviderContract/Attribute:coverage' => 'Horário de serviço',
@@ -154,7 +154,7 @@ Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
//
Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
'Class:lnkContactToContract' => 'Link Contato / Contrato',
'Class:lnkContactToContract' => 'Relação entre Contato / Contrato',
'Class:lnkContactToContract+' => '',
'Class:lnkContactToContract/Name' => '%1$s / %2$s~~',
'Class:lnkContactToContract/Attribute:contract_id' => 'Contrato',
@@ -172,7 +172,7 @@ Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
//
Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
'Class:lnkContractToDocument' => 'Link Contrato / Documento',
'Class:lnkContractToDocument' => 'Relação entre Contrato / Documento',
'Class:lnkContractToDocument+' => '',
'Class:lnkContractToDocument/Name' => '%1$s / %2$s~~',
'Class:lnkContractToDocument/Attribute:contract_id' => 'Contrato',
@@ -190,14 +190,14 @@ Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
//
Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
'Class:ServiceFamily' => 'Família de Serviços',
'Class:ServiceFamily' => 'Família de serviços',
'Class:ServiceFamily+' => '',
'Class:ServiceFamily/Attribute:name' => 'Nome',
'Class:ServiceFamily/Attribute:name+' => '',
'Class:ServiceFamily/Attribute:icon' => 'Ícone',
'Class:ServiceFamily/Attribute:icon+' => '',
'Class:ServiceFamily/Attribute:services_list' => 'Serviços',
'Class:ServiceFamily/Attribute:services_list+' => 'Todos os serviços para essa categoria',
'Class:ServiceFamily/Attribute:services_list+' => 'Todos os serviços associados à esta família de serviços',
));
//
@@ -221,9 +221,9 @@ Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
'Class:Service/Attribute:description' => 'Descrição',
'Class:Service/Attribute:description+' => '',
'Class:Service/Attribute:documents_list' => 'Documentos',
'Class:Service/Attribute:documents_list+' => 'Todos os documentos associados a este serviço',
'Class:Service/Attribute:documents_list+' => 'Todos os documentos associados à este serviço',
'Class:Service/Attribute:contacts_list' => 'Contatos',
'Class:Service/Attribute:contacts_list+' => 'Todos os contatos associados a este serviço',
'Class:Service/Attribute:contacts_list+' => 'Todos os contatos associados à este serviço',
'Class:Service/Attribute:status' => 'Status',
'Class:Service/Attribute:status+' => '',
'Class:Service/Attribute:status/Value:implementation' => 'Em homologação',
@@ -239,9 +239,9 @@ Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
'Class:Service/Attribute:providercontracts_list' => 'Contratos de provedores',
'Class:Service/Attribute:providercontracts_list+' => 'Todos os contratos de provedores para suportar esse serviço',
'Class:Service/Attribute:functionalcis_list' => 'Dependências de ICs',
'Class:Service/Attribute:functionalcis_list+' => 'Todos os itens de configuração que são utilizados para a prestação deste serviço',
'Class:Service/Attribute:functionalcis_list+' => 'Todos os itens de configuração (ICs) que são utilizados para a prestação deste serviço',
'Class:Service/Attribute:servicesubcategories_list' => 'Subcategorias de serviço',
'Class:Service/Attribute:servicesubcategories_list+' => 'Todas as subcategorias para esse serviço',
'Class:Service/Attribute:servicesubcategories_list+' => 'Todas as subcategorias de serviço para esse serviço',
));
//
@@ -249,7 +249,7 @@ Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
//
Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
'Class:lnkDocumentToService' => 'Link Documento / Serviço',
'Class:lnkDocumentToService' => 'Relação entre Documento / Serviço',
'Class:lnkDocumentToService+' => '',
'Class:lnkDocumentToService/Name' => '%1$s / %2$s~~',
'Class:lnkDocumentToService/Attribute:service_id' => 'Serviço',
@@ -267,7 +267,7 @@ Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
//
Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
'Class:lnkContactToService' => 'Link Contato / Serviço',
'Class:lnkContactToService' => 'Relação entre Contato / Serviço',
'Class:lnkContactToService+' => '',
'Class:lnkContactToService/Name' => '%1$s / %2$s~~',
'Class:lnkContactToService/Attribute:service_id' => 'Serviço',
@@ -285,7 +285,7 @@ Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
//
Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
'Class:ServiceSubcategory' => 'Subcategorias de serviço',
'Class:ServiceSubcategory' => 'Subcategoria de serviço',
'Class:ServiceSubcategory+' => '',
'Class:ServiceSubcategory/ComplementaryName' => '%1$s - %2$s~~',
'Class:ServiceSubcategory/Attribute:name' => 'Nome',
@@ -323,15 +323,15 @@ Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
'Class:SLA/Attribute:name+' => '',
'Class:SLA/Attribute:description' => 'Descrição',
'Class:SLA/Attribute:description+' => '',
'Class:SLA/Attribute:org_id' => 'Organização',
'Class:SLA/Attribute:org_id' => 'Provedor',
'Class:SLA/Attribute:org_id+' => '',
'Class:SLA/Attribute:organization_name' => 'Nome da organização',
'Class:SLA/Attribute:organization_name+' => '',
'Class:SLA/Attribute:slts_list' => 'SLTs',
'Class:SLA/Attribute:slts_list+' => 'Todos os Níveis Mínimos de Serviço (SLTs) para esse Acordo de Nível de Serviço (SLA)',
'Class:SLA/Attribute:customercontracts_list' => 'Contratos de clientes',
'Class:SLA/Attribute:customercontracts_list+' => 'Todos os contratos de clientes utilizando esse Acordo de Nível de Serviço (SLA)',
'Class:SLA/Error:UniqueLnkCustomerContractToService' => 'Não foi possível salvar o vínculo entre o Contrato do Cliente "%1$s" e Serviço "%2$s": SLA já existe',
'Class:SLA/Attribute:customercontracts_list+' => 'Todos os Contratos de clientes utilizando esse Acordo de Nível de Serviço (SLA)',
'Class:SLA/Error:UniqueLnkCustomerContractToService' => 'Não foi possível salvar o vínculo entre o Contrato de cliente "%1$s" e o Serviço "%2$s": SLA já existe',
));
//
@@ -382,7 +382,7 @@ Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
//
Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
'Class:lnkSLAToSLT' => 'Link SLA / SLT',
'Class:lnkSLAToSLT' => 'Relação entre SLA / SLT',
'Class:lnkSLAToSLT+' => '',
'Class:lnkSLAToSLT/Name' => '%1$s / %2$s~~',
'Class:lnkSLAToSLT/Attribute:sla_id' => 'SLA',
@@ -410,7 +410,7 @@ Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
//
Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
'Class:lnkCustomerContractToService' => 'Link Contrato de cliente / Serviço',
'Class:lnkCustomerContractToService' => 'Relação entre Contrato de cliente / Serviço',
'Class:lnkCustomerContractToService+' => '',
'Class:lnkCustomerContractToService/Name' => '%1$s / %2$s~~',
'Class:lnkCustomerContractToService/Attribute:customercontract_id' => 'Contrato de cliente',
@@ -432,7 +432,7 @@ Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
//
Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
'Class:lnkProviderContractToService' => 'Link Contrato de provedor / Serviço',
'Class:lnkProviderContractToService' => 'Relação entre Contrato de provedor / Serviço',
'Class:lnkProviderContractToService+' => '',
'Class:lnkProviderContractToService/Name' => '%1$s / %2$s~~',
'Class:lnkProviderContractToService/Attribute:service_id' => 'Serviço',
@@ -450,20 +450,20 @@ Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
//
Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
'Class:DeliveryModel' => 'Modelo de Entrega',
'Class:DeliveryModel' => 'Modelo de entrega',
'Class:DeliveryModel+' => '',
'Class:DeliveryModel/Attribute:name' => 'Nome',
'Class:DeliveryModel/Attribute:name+' => 'Don\'t forget to add teams to this delivery model~~',
'Class:DeliveryModel/Attribute:org_id' => 'Organização',
'Class:DeliveryModel/Attribute:org_id' => 'Provedor',
'Class:DeliveryModel/Attribute:org_id+' => 'Usually the organization that provides the services~~',
'Class:DeliveryModel/Attribute:organization_name' => 'Nome da organização',
'Class:DeliveryModel/Attribute:organization_name+' => 'Nome comum',
'Class:DeliveryModel/Attribute:description' => 'Descrição',
'Class:DeliveryModel/Attribute:description+' => '',
'Class:DeliveryModel/Attribute:contacts_list' => 'Contatos',
'Class:DeliveryModel/Attribute:contacts_list+' => 'Todos os Contatos (Equipe e Pessoa) para esse Modelo de entrega',
'Class:DeliveryModel/Attribute:contacts_list+' => 'Todos os Contatos (Equipes e Pessoas) associados à este Modelo de entrega',
'Class:DeliveryModel/Attribute:customers_list' => 'Clientes',
'Class:DeliveryModel/Attribute:customers_list+' => 'Todos os Clientes com esse Modelo de entrega',
'Class:DeliveryModel/Attribute:customers_list+' => 'Todos os clientes atendidos por este Modelo de entrega',
));
//
@@ -471,7 +471,7 @@ Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
//
Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
'Class:lnkDeliveryModelToContact' => 'Link Modelo de entrega / Contato',
'Class:lnkDeliveryModelToContact' => 'Relação entre Modelo de entrega / Contato',
'Class:lnkDeliveryModelToContact+' => '',
'Class:lnkDeliveryModelToContact/Name' => '%1$s / %2$s~~',
'Class:lnkDeliveryModelToContact/Attribute:deliverymodel_id' => 'Modelo de entrega',

View File

@@ -1,12 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<itop_design xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="3.3">
<meta>
<classes>
<class id="SLAComputation" _delta="define">
<interfaces>
<interface id="iWorkingTimeComputer"/>
</interfaces>
</class>
</classes>
</meta>
</itop_design>

View File

@@ -1,25 +0,0 @@
<?php
/**
* Localized data
*
* @copyright Copyright (C) 2010-2024 Combodo SAS
* @license http://opensource.org/licenses/AGPL-3.0
*
* This file is part of iTop.
*
* iTop is free software; you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* iTop is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with iTop. If not, see <http://www.gnu.org/licenses/>
*/
Dict::Add('CS CZ', 'Czech', 'Čeština', array(
// Dictionary entries go here
));

View File

@@ -1,25 +0,0 @@
<?php
/**
* Localized data
*
* @copyright Copyright (C) 2010-2024 Combodo SAS
* @license http://opensource.org/licenses/AGPL-3.0
*
* This file is part of iTop.
*
* iTop is free software; you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* iTop is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with iTop. If not, see <http://www.gnu.org/licenses/>
*/
Dict::Add('DA DA', 'Danish', 'Dansk', array(
// Dictionary entries go here
));

View File

@@ -1,25 +0,0 @@
<?php
/**
* Localized data
*
* @copyright Copyright (C) 2010-2024 Combodo SAS
* @license http://opensource.org/licenses/AGPL-3.0
*
* This file is part of iTop.
*
* iTop is free software; you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* iTop is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with iTop. If not, see <http://www.gnu.org/licenses/>
*/
Dict::Add('DE DE', 'German', 'Deutsch', array(
// Dictionary entries go here
));

View File

@@ -1,26 +0,0 @@
<?php
/**
* Localized data
*
* @copyright Copyright (C) 2010-2024 Combodo SAS
* @license http://opensource.org/licenses/AGPL-3.0
*
* This file is part of iTop.
*
* iTop is free software; you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* iTop is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with iTop. If not, see <http://www.gnu.org/licenses/>
*/
Dict::Add('EN US', 'English', 'English', array(
// Dictionary entries go here
));

View File

@@ -1,26 +0,0 @@
<?php
/**
* Localized data
*
* @copyright Copyright (C) 2024 Combodo SAS
* @license http://opensource.org/licenses/AGPL-3.0
*
* This file is part of iTop.
*
* iTop is free software; you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* iTop is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with iTop. If not, see <http://www.gnu.org/licenses/>
*/
Dict::Add('EN GB', 'British English', 'British English', array(
// Dictionary entries go here
));

View File

@@ -1,12 +0,0 @@
<?php
/**
* Spanish Localized data
*
* @copyright Copyright (C) 2010-2024 Combodo SAS
* @license https://opensource.org/licenses/AGPL-3.0
* @author Miguel Turrubiates <miguel_tf@yahoo.com>
* @notas Utilizar codificación UTF-8 para mostrar acentos y otros caracteres especiales
*/
Dict::Add('ES CR', 'Spanish', 'Español, Castellano', array(
// Dictionary entries go here
));

View File

@@ -1,25 +0,0 @@
<?php
/**
* Localized data
*
* @copyright Copyright (C) 2010-2024 Combodo SAS
* @license http://opensource.org/licenses/AGPL-3.0
*
* This file is part of iTop.
*
* iTop is free software; you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* iTop is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with iTop. If not, see <http://www.gnu.org/licenses/>
*/
Dict::Add('FR FR', 'French', 'Français', array(
// Dictionary entries go here
));

View File

@@ -1,25 +0,0 @@
<?php
/**
* Localized data
*
* @copyright Copyright (C) 2010-2024 Combodo SAS
* @license http://opensource.org/licenses/AGPL-3.0
*
* This file is part of iTop.
*
* iTop is free software; you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* iTop is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with iTop. If not, see <http://www.gnu.org/licenses/>
*/
Dict::Add('HU HU', 'Hungarian', 'Magyar', array(
// Dictionary entries go here
));

View File

@@ -1,25 +0,0 @@
<?php
/**
* Localized data
*
* @copyright Copyright (C) 2010-2024 Combodo SAS
* @license http://opensource.org/licenses/AGPL-3.0
*
* This file is part of iTop.
*
* iTop is free software; you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* iTop is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with iTop. If not, see <http://www.gnu.org/licenses/>
*/
Dict::Add('IT IT', 'Italian', 'Italiano', array(
// Dictionary entries go here
));

View File

@@ -1,25 +0,0 @@
<?php
/**
* Localized data
*
* @copyright Copyright (C) 2010-2024 Combodo SAS
* @license http://opensource.org/licenses/AGPL-3.0
*
* This file is part of iTop.
*
* iTop is free software; you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* iTop is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with iTop. If not, see <http://www.gnu.org/licenses/>
*/
Dict::Add('JA JP', 'Japanese', '日本語', array(
// Dictionary entries go here
));

View File

@@ -1,25 +0,0 @@
<?php
/**
* Localized data
*
* @copyright Copyright (C) 2010-2024 Combodo SAS
* @license http://opensource.org/licenses/AGPL-3.0
*
* This file is part of iTop.
*
* iTop is free software; you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* iTop is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with iTop. If not, see <http://www.gnu.org/licenses/>
*/
Dict::Add('NL NL', 'Dutch', 'Nederlands', array(
// Dictionary entries go here
));

View File

@@ -1,25 +0,0 @@
<?php
/**
* Localized data
*
* @copyright Copyright (C) 2010-2024 Combodo SAS
* @license http://opensource.org/licenses/AGPL-3.0
*
* This file is part of iTop.
*
* iTop is free software; you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* iTop is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with iTop. If not, see <http://www.gnu.org/licenses/>
*/
Dict::Add('PL PL', 'Polish', 'Polski', array(
// Dictionary entries go here
));

View File

@@ -1,25 +0,0 @@
<?php
/**
* Localized data
*
* @copyright Copyright (C) 2010-2024 Combodo SAS
* @license http://opensource.org/licenses/AGPL-3.0
*
* This file is part of iTop.
*
* iTop is free software; you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* iTop is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with iTop. If not, see <http://www.gnu.org/licenses/>
*/
Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
// Dictionary entries go here
));

View File

@@ -1,15 +0,0 @@
<?php
/**
* Localized data
*
* @copyright Copyright (C) 2010-2024 Combodo SAS
* @license https://opensource.org/licenses/AGPL-3.0
*
*/
/**
* @author Vladimir Kunin <v.b.kunin@gmail.com>
*
*/
Dict::Add('RU RU', 'Russian', 'Русский', array(
// Dictionary entries go here
));

View File

@@ -1,25 +0,0 @@
<?php
/**
* Localized data
*
* @copyright Copyright (C) 2010-2024 Combodo SAS
* @license http://opensource.org/licenses/AGPL-3.0
*
* This file is part of iTop.
*
* iTop is free software; you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* iTop is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with iTop. If not, see <http://www.gnu.org/licenses/>
*/
Dict::Add('SK SK', 'Slovak', 'Slovenčina', array(
// Dictionary entries go here
));

View File

@@ -1,25 +0,0 @@
<?php
/**
* Localized data
*
* @copyright Copyright (C) 2010-2024 Combodo SAS
* @license http://opensource.org/licenses/AGPL-3.0
*
* This file is part of iTop.
*
* iTop is free software; you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* iTop is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with iTop. If not, see <http://www.gnu.org/licenses/>
*/
Dict::Add('TR TR', 'Turkish', 'Türkçe', array(
// Dictionary entries go here
));

View File

@@ -1,25 +0,0 @@
<?php
/**
* Localized data
*
* @copyright Copyright (C) 2010-2024 Combodo SAS
* @license http://opensource.org/licenses/AGPL-3.0
*
* This file is part of iTop.
*
* iTop is free software; you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* iTop is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with iTop. If not, see <http://www.gnu.org/licenses/>
*/
Dict::Add('ZH CN', 'Chinese', '简体中文', array(
// Dictionary entries go here
));

View File

@@ -18,177 +18,30 @@
/**
* Module itop-sla-computation: implements an extensible mechanism
* Module itop-sla-computation: deprecated
*
* @copyright Copyright (C) 2010-2024 Combodo SAS
* @license http://opensource.org/licenses/AGPL-3.0
*/
/**
* Implements the public interface for utilities
* related to the SLA computation
* @deprecated 3.3.0 This is actually a breaking change. The class has been left to ease migration to 3.3.0 (see N°2683)
*/
class SLAComputation implements iWorkingTimeComputer
{
/**
* @var \SLAComputationAddOnAPI
*/
protected static $m_oAddOn;
class SLAComputation {
/**
* Generic "extensibility" method: select which extension is actually used
*
* @param string $sClassName The name of the class (derived from SLAComputationAddOnAPI) to use
*
* @return void
* @throws \CoreException
*
* @deprecated will be removed soon (see N°2683)
* @deprecated 3.3.0 This is actually a breaking change. The function has been left to ease migration to 3.3.0 (see N°2683)
*/
public static function SelectModule($sClassName)
{
// cannot notify depreciation for now as this is still MASSIVELY used in iTop core !
//DeprecatedCallsLog::NotifyDeprecatedPhpMethod();
if (!class_exists($sClassName)) {
throw new CoreException("Could not select this module, '$sClassName' in not a valid class name");
}
if (($sClassName != 'SLAComputationAddOnAPI') && !is_subclass_of($sClassName, 'SLAComputationAddOnAPI')) {
throw new CoreException("Could not select this module, the class '$sClassName' is not derived from SLAComputationAddOnAPI (parent class:".get_parent_class($sClassName)." )");
}
self::$m_oAddOn = new $sClassName;
self::$m_oAddOn->Init();
//DeprecatedCallsLog::NotifyDeprecatedPhpMethod('Removed Class SLAComputation');
}
/**
* Get the class of the extension actually used
*
* @return string The name of the extension class used
*/
public static function GetModuleInstance()
{
return self::$m_oAddOn;
}
public static function GetDescription()
{
return "SLA computation (depends on the installed module)";
}
/**
* Get the date/time corresponding to a given delay in the future from the present
* considering only the valid (open) hours for a specified object
*
* @param Ticket $oObject The object for which to compute the deadline
* @param integer $iDuration The duration (in seconds) in the future
* @param DateTime $oStartDate The starting point for the computation
*
* @return DateTime The date/time for the deadline
* @throws \Exception
*/
public function GetDeadline($oObject, $iDuration, DateTime $oStartDate)
{
if (class_exists('WorkingTimeRecorder'))
{
WorkingTimeRecorder::Trace(WorkingTimeRecorder::TRACE_DEBUG, __class__.'::'.__function__);
}
$oEndDate = self::$m_oAddOn->GetDeadline($oObject, $iDuration, $oStartDate);
if (class_exists('WorkingTimeRecorder'))
{
WorkingTimeRecorder::SetValues($oStartDate->format('U'), $oEndDate->format('U'), $iDuration, WorkingTimeRecorder::COMPUTED_END);
}
return $oEndDate;
}
/**
* Get duration (considering only open hours) elapsed between two given DateTimes
*
* @param Ticket $oObject The object for which to compute the duration
* @param DateTime $oStartDate The starting point for the computation (default = now)
* @param DateTime $oEndDate The ending point for the computation (default = now)
*
* @return integer The duration (number of seconds) of open hours elapsed between the two dates
* @throws \Exception
*/
public function GetOpenDuration($oObject, DateTime $oStartDate, DateTime $oEndDate)
{
if (class_exists('WorkingTimeRecorder'))
{
WorkingTimeRecorder::Trace(WorkingTimeRecorder::TRACE_DEBUG, __class__.'::'.__function__);
}
$iDuration = self::$m_oAddOn->GetOpenDuration($oObject, $oStartDate, $oEndDate);
if (class_exists('WorkingTimeRecorder'))
{
WorkingTimeRecorder::SetValues($oStartDate->format('U'), $oEndDate->format('U'), $iDuration,
WorkingTimeRecorder::COMPUTED_DURATION);
}
return $iDuration;
}
}
/**
* Base class for extensions to the SLA computation mechanism
* This class implements a default behavior, suitable for a simple
* 24x7 (no holiday) computation. To override this behavior, implement
* a derived class from this one, overloading the behavior, and call
* SLAComputation::SetExtension()
*
* @deprecated will be removed soon (see N°2683)
* @deprecated 3.3.0 This is actually a breaking change. The class has been left to ease migration to 3.3.0 (see N°2683)
*/
class SLAComputationAddOnAPI
{
/**
* Called when the module is loaded, used for one time initialization (if needed)
*/
public function Init()
{
// cannot notify depreciation for now as this is still MASSIVELY used in iTop core !
//DeprecatedCallsLog::NotifyDeprecatedPhpMethod();
}
/**
* Get the date/time corresponding to a given delay in the future from the present
* considering only the valid (open) hours for a specified ticket
*
* @param Ticket $oTicket The ticket for which to compute the deadline
* @param integer $iDuration The duration (in seconds) in the future
* @param DateTime $oStartDate The starting point for the computation
*
* @return DateTime The date/time for the deadline
*/
public static function GetDeadline($oTicket, $iDuration, DateTime $oStartDate)
{
if (class_exists('WorkingTimeRecorder'))
{
WorkingTimeRecorder::Trace(WorkingTimeRecorder::TRACE_DEBUG, __class__.'::'.__function__);
}
// Default implementation: 24x7, no holidays: to compute the deadline, just add
// the specified duration to the given date/time
$oResult = clone $oStartDate;
$oResult->modify($iDuration.' seconds');
return $oResult;
}
/**
* Get duration (considering only open hours) elapsed between two given DateTimes
*
* @param Ticket $oTicket The ticket for which to compute the duration
* @param DateTime $oStartDate The starting point for the computation (default = now)
* @param DateTime $oEndDate The ending point for the computation (default = now)
*
* @return integer The duration (number of seconds) of open hours elapsed between the two dates
*/
public static function GetOpenDuration($oTicket, DateTime $oStartDate, DateTime $oEndDate)
{
if (class_exists('WorkingTimeRecorder'))
{
WorkingTimeRecorder::Trace(WorkingTimeRecorder::TRACE_DEBUG, __class__.'::'.__function__);
}
return abs($oEndDate->format('U') - $oStartDate->format('U'));
}
}
SLAComputation::SelectModule('SLAComputationAddOnAPI');

View File

View File

@@ -23,7 +23,7 @@ Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
'Class:Organization/Attribute:status/Value:active+' => '',
'Class:Organization/Attribute:status/Value:inactive' => 'Inativo',
'Class:Organization/Attribute:status/Value:inactive+' => '',
'Class:Organization/Attribute:parent_id' => 'Pai',
'Class:Organization/Attribute:parent_id' => 'Organização pai',
'Class:Organization/Attribute:parent_id+' => 'Organização pai',
'Class:Organization/Attribute:parent_name' => 'Organização pai',
'Class:Organization/Attribute:parent_name+' => 'Nome da organização pai',
@@ -31,12 +31,12 @@ Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
'Class:Organization/Attribute:deliverymodel_id+' => '',
'Class:Organization/Attribute:deliverymodel_name' => 'Nome do modelo de entrega',
'Class:Organization/Attribute:deliverymodel_name+' => '',
'Class:Organization/Attribute:parent_id_friendlyname' => 'Pai (nome amigável)',
'Class:Organization/Attribute:parent_id_friendlyname' => 'Organização pai (nome amigável)',
'Class:Organization/Attribute:parent_id_friendlyname+' => 'Nome amigável da organização pai',
'Class:Organization/Attribute:overview' => 'Visão geral',
'Organization:Overview:FunctionalCIs' => 'Itens de configuração associadas à esta organização',
'Organization:Overview:FunctionalCIs' => 'Itens de Configuração (ICs) associados à esta Organização',
'Organization:Overview:FunctionalCIs:subtitle' => 'por tipo',
'Organization:Overview:Users' => 'Usuários do '.ITOP_APPLICATION_SHORT.' associados à esta organização',
'Organization:Overview:Users' => 'Usuários do '.ITOP_APPLICATION_SHORT.' associados à esta Organização',
));
//
@@ -67,9 +67,9 @@ Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
'Class:Location/Attribute:country' => 'País',
'Class:Location/Attribute:country+' => '',
'Class:Location/Attribute:physicaldevice_list' => 'Dispositivos',
'Class:Location/Attribute:physicaldevice_list+' => 'Todos os dispositivos associados à esta localização',
'Class:Location/Attribute:physicaldevice_list+' => 'Todos os Dispositivos associados à esta Localização',
'Class:Location/Attribute:person_list' => 'Contatos',
'Class:Location/Attribute:person_list+' => 'Todos os contatos associados à esta localização',
'Class:Location/Attribute:person_list+' => 'Todos os Contatos associados à esta Localização',
));
//
@@ -105,7 +105,7 @@ Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
'Class:Contact/Attribute:function' => 'Função',
'Class:Contact/Attribute:function+' => '',
'Class:Contact/Attribute:cis_list' => 'ICs',
'Class:Contact/Attribute:cis_list+' => 'Todos os itens de configuração associados a este contato',
'Class:Contact/Attribute:cis_list+' => 'Todos os Itens de Configuração (ICs) associados à este Contato',
'Class:Contact/Attribute:finalclass' => 'Tipo de contato',
'Class:Contact/Attribute:finalclass+' => '',
));
@@ -118,11 +118,11 @@ Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
'Class:Person' => 'Pessoa',
'Class:Person+' => '',
'Class:Person/ComplementaryName' => '%1$s - %2$s~~',
'Class:Person/Attribute:name' => 'Último nome',
'Class:Person/Attribute:name' => 'Sobrenome',
'Class:Person/Attribute:name+' => '',
'Class:Person/Attribute:first_name' => 'Primeiro nome',
'Class:Person/Attribute:first_name' => 'Nome',
'Class:Person/Attribute:first_name+' => '',
'Class:Person/Attribute:employee_number' => 'Número de colaborador',
'Class:Person/Attribute:employee_number' => 'Matrícula do colaborador',
'Class:Person/Attribute:employee_number+' => '',
'Class:Person/Attribute:mobile_phone' => 'Celular',
'Class:Person/Attribute:mobile_phone+' => '',
@@ -135,9 +135,9 @@ Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
'Class:Person/Attribute:manager_name' => 'Nome do gerente',
'Class:Person/Attribute:manager_name+' => '',
'Class:Person/Attribute:team_list' => 'Equipes',
'Class:Person/Attribute:team_list+' => 'Todas as equipes que essa pessoa pertence',
'Class:Person/Attribute:team_list+' => 'Todas as Equipes que esta Pessoa pertence',
'Class:Person/Attribute:tickets_list' => 'Solicitações',
'Class:Person/Attribute:tickets_list+' => 'Todos as solicitações que essa pessoa solicitou',
'Class:Person/Attribute:tickets_list+' => 'Todas as Solicitações que esta Pessoa solicitou',
'Class:Person/Attribute:user_list' => 'Users~~',
'Class:Person/Attribute:user_list+' => 'All the Users associated to this person~~',
'Class:Person/Attribute:manager_id_friendlyname' => 'Nome amigável do gerente',
@@ -195,9 +195,9 @@ Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
'Class:Document/Attribute:status/Value:obsolete+' => '',
'Class:Document/Attribute:status/Value:published' => 'Publicado',
'Class:Document/Attribute:status/Value:published+' => '',
'Class:Document/Attribute:cis_list' => 'CIs',
'Class:Document/Attribute:cis_list+' => 'Todos os itens de configuração associados a este documento',
'Class:Document/Attribute:finalclass' => 'Tipo documento',
'Class:Document/Attribute:cis_list' => 'ICs',
'Class:Document/Attribute:cis_list+' => 'Todos os Itens de Configuração (IC) associados à este Documento',
'Class:Document/Attribute:finalclass' => 'Tipo de documento',
'Class:Document/Attribute:finalclass+' => '',
));
@@ -270,7 +270,7 @@ Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
//
Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
'Class:lnkPersonToTeam' => 'Link Pessoa / Equipe',
'Class:lnkPersonToTeam' => 'Relação entre Pessoa / Equipe',
'Class:lnkPersonToTeam+' => '',
'Class:lnkPersonToTeam/Name' => '%1$s / %2$s~~',
'Class:lnkPersonToTeam/Name+' => '~~',
@@ -302,24 +302,24 @@ Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
'Menu:CSVImport' => 'Importar CSV',
'Menu:CSVImport+' => 'Criação ou atualização em massa',
'Menu:Organization' => 'Organizações',
'Menu:Organization+' => 'Lista de organizações',
'Menu:Organization+' => 'Lista de Organizações',
'Menu:ConfigManagement' => 'Gerenciamento configuração',
'Menu:ConfigManagement+' => 'Gerenciamento de configuração',
'Menu:ConfigManagementCI' => 'Itens de configuração',
'Menu:ConfigManagementCI+' => 'Lista de itens de configuração',
'Menu:ConfigManagement+' => '',
'Menu:ConfigManagementCI' => 'Itens de Configuração (ICs)',
'Menu:ConfigManagementCI+' => 'Lista de Itens de Configuração (ICs)',
'Menu:ConfigManagementOverview' => 'Visão geral',
'Menu:ConfigManagementOverview+' => '',
'Menu:Contact' => 'Contatos',
'Menu:Contact+' => 'Lista de contatos',
'Menu:Contact+' => 'Lista de Contatos',
'Menu:Contact:Count' => '%1$d contato(s)',
'Menu:Person' => 'Pessoas',
'Menu:Person+' => 'Lista de pessoas',
'Menu:Person+' => 'Lista de Pessoas',
'Menu:Team' => 'Equipes',
'Menu:Team+' => 'Lista de equipes',
'Menu:Team+' => 'Lista de Equipes',
'Menu:Document' => 'Documentos',
'Menu:Document+' => 'Lista de documentos',
'Menu:Document+' => 'Lista de Documentos',
'Menu:Location' => 'Localizações',
'Menu:Location+' => 'Lista de localizações',
'Menu:Location+' => 'Lista de Localizações',
'Menu:NewContact' => 'Novo contato',
'Menu:NewContact+' => '',
'Menu:SearchContacts' => 'Pesquisar por contatos',

View File

@@ -10,5 +10,5 @@
*
*/
Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
'theme:light-grey' => 'Light Grey (deprecated)~~',
'theme:light-grey' => 'Light Grey (depreciado)',
));

View File

@@ -45,11 +45,11 @@ Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
'Class:Ticket/Attribute:private_log' => 'Log privado',
'Class:Ticket/Attribute:private_log+' => '',
'Class:Ticket/Attribute:contacts_list' => 'Contatos',
'Class:Ticket/Attribute:contacts_list+' => 'Todos os contatos associados à esta solicitação',
'Class:Ticket/Attribute:contacts_list+' => 'Todos os Contatos associados à esta Solicitação',
'Class:Ticket/Attribute:functionalcis_list' => 'ICs',
'Class:Ticket/Attribute:functionalcis_list+' => 'Todos os itens de configuração afetados por essa solicitação',
'Class:Ticket/Attribute:functionalcis_list+' => 'Todos os Itens de Configuração (ICs) afetados por esta Solicitação',
'Class:Ticket/Attribute:workorders_list' => 'Ordens de serviço',
'Class:Ticket/Attribute:workorders_list+' => 'Todos as ordens de serviço para essa solicitação',
'Class:Ticket/Attribute:workorders_list+' => 'Todos as Ordens de serviço associadas à esta Solicitação',
'Class:Ticket/Attribute:finalclass' => 'Tipo',
'Class:Ticket/Attribute:finalclass+' => '',
'Class:Ticket/Attribute:operational_status' => 'Status operacional',
@@ -69,7 +69,7 @@ Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
//
Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
'Class:lnkContactToTicket' => 'Link Contato / Solicitação',
'Class:lnkContactToTicket' => 'Relação entre Contato / Solicitação',
'Class:lnkContactToTicket+' => '',
'Class:lnkContactToTicket/Name' => '%1$s / %2$s~~',
'Class:lnkContactToTicket/Attribute:ticket_id' => 'Solicitação',
@@ -109,7 +109,7 @@ Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
'Class:WorkOrder/Attribute:description+' => '',
'Class:WorkOrder/Attribute:ticket_id' => 'Solicitação',
'Class:WorkOrder/Attribute:ticket_id+' => '',
'Class:WorkOrder/Attribute:ticket_ref' => 'Ref. Solicitação',
'Class:WorkOrder/Attribute:ticket_ref' => 'Ref. solicitação',
'Class:WorkOrder/Attribute:ticket_ref+' => '',
'Class:WorkOrder/Attribute:team_id' => 'Equipe',
'Class:WorkOrder/Attribute:team_id+' => '',

View File

@@ -192,7 +192,7 @@ Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
'Class:CMDBChangeOp' => 'Operações de alteração',
'Class:CMDBChangeOp+' => 'Operações de controle de alteração',
'Class:CMDBChangeOp+' => 'Controle de operações de alteração',
'Class:CMDBChangeOp/Attribute:change' => 'Alteração',
'Class:CMDBChangeOp/Attribute:change+' => '',
'Class:CMDBChangeOp/Attribute:date' => 'Data',
@@ -296,7 +296,7 @@ Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
'Class:Event' => 'Registro de evento',
'Class:Event+' => 'Um evento interno do aplicativo',
'Class:Event+' => 'Um evento interno da aplicação',
'Class:Event/Attribute:message' => 'Mensagem',
'Class:Event/Attribute:message+' => 'Descrição curta deste evento',
'Class:Event/Attribute:date' => 'Data',
@@ -514,13 +514,13 @@ Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
'Class:ActionEmail/Attribute:status/Value:disabled+' => 'A notificação de e-mail não será enviada',
'Class:ActionEmail/Attribute:test_recipient' => 'Destinatário de teste',
'Class:ActionEmail/Attribute:test_recipient+' => 'Destinatário caso o status esteja definido como "teste"',
'Class:ActionEmail/Attribute:from' => 'De',
'Class:ActionEmail/Attribute:from' => 'De (e-mail)',
'Class:ActionEmail/Attribute:from+' => 'Endereço de e-mail do remetente enviado no cabeçalho do e-mail',
'Class:ActionEmail/Attribute:from_label' => 'De (campo)',
'Class:ActionEmail/Attribute:from_label' => 'De (nome)',
'Class:ActionEmail/Attribute:from_label+' => 'Nome de exibição enviado no cabeçalho do e-mail',
'Class:ActionEmail/Attribute:reply_to' => 'Responder para',
'Class:ActionEmail/Attribute:reply_to' => 'Responder para (e-mail)',
'Class:ActionEmail/Attribute:reply_to+' => 'Endereço de e-mail enviado no cabeçalho do e-mail',
'Class:ActionEmail/Attribute:reply_to_label' => 'Responder para (campo)',
'Class:ActionEmail/Attribute:reply_to_label' => 'Responder para (nome)',
'Class:ActionEmail/Attribute:reply_to_label+' => 'Nome de exibição enviado no cabeçalho do e-mail',
'Class:ActionEmail/Attribute:to' => 'Para',
'Class:ActionEmail/Attribute:to+' => 'Endereço(s) de e-mail do(s) destinatário(s)',
@@ -748,7 +748,7 @@ Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
'Class:lnkTriggerAction' => 'Ação/Gatilho',
'Class:lnkTriggerAction+' => 'Link Gatilho / Ação',
'Class:lnkTriggerAction+' => 'Relação entre Gatilho / Ação',
'Class:lnkTriggerAction/Attribute:action_id' => 'Ação',
'Class:lnkTriggerAction/Attribute:action_id+' => 'Ação a ser executada',
'Class:lnkTriggerAction/Attribute:action_name' => 'Ação',
@@ -1193,7 +1193,7 @@ Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
//
Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
'Class:ResourceSystemMenu' => 'Menu de Recursos do Sistema',
'Class:ResourceSystemMenu' => 'Recurso Menu do Sistema',
'Class:ResourceSystemMenu+' => '',
'Class:EventNotification/Attribute:object_class' => 'Object class~~',
'Class:EventNotification/Attribute:object_class+' => 'Object class (Same as trigger)~~',

View File

@@ -98,7 +98,7 @@ Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
'Class:Query/Attribute:name' => 'Nome',
'Class:Query/Attribute:name+' => 'Identificação da consulta',
'Class:Query/Attribute:description' => 'Descrição',
'Class:Query/Attribute:description+' => 'Descrição longa para a consulta (finalidade, uso, etc.)',
'Class:Query/Attribute:description+' => 'Descrição longa para a consulta (finalidade, uso etc.)',
'Class:Query/Attribute:is_template' => 'Template para campos OQL',
'Class:Query/Attribute:is_template+' => 'Utilizável como origem para o Destinatário OQL em Notificações',
'Class:Query/Attribute:is_template/Value:yes' => 'Sim',
@@ -141,7 +141,7 @@ Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
'Class:User/Attribute:org_id+' => 'Organização à qual esse usuário pertence',
'Class:User/Attribute:last_name' => 'Sobrenome',
'Class:User/Attribute:last_name+' => 'Último nome do usuário correspondente',
'Class:User/Attribute:first_name' => 'Primeiro nome',
'Class:User/Attribute:first_name' => 'Nome',
'Class:User/Attribute:first_name+' => 'Primeiro nome do usuário correspondente',
'Class:User/Attribute:email' => 'E-mail',
'Class:User/Attribute:email+' => 'Endereço de e-mail do usuário correspondente',
@@ -153,17 +153,17 @@ Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
'Class:User/Attribute:language/Value:EN US+' => 'Inglês (E.U.A.)',
'Class:User/Attribute:language/Value:FR FR' => 'Francês',
'Class:User/Attribute:language/Value:FR FR+' => 'Francês (França)',
'Class:User/Attribute:profile_list' => 'Perfil',
'Class:User/Attribute:profile_list' => 'Perfis',
'Class:User/Attribute:profile_list+' => 'Permissões de acesso para esse usuário',
'Class:User/Attribute:allowed_org_list' => 'Organizações permitidas',
'Class:User/Attribute:allowed_org_list+' => 'O usuário tem permissão de ver as informações para a(s) organização(ões) abaixo. Se nenhuma organização for especificada, não há restrição',
'Class:User/Attribute:status' => 'Status',
'Class:User/Attribute:status+' => 'Se a conta de usuário está habilitada ou desabilitada',
'Class:User/Attribute:status/Value:enabled' => 'Ativa',
'Class:User/Attribute:status/Value:disabled' => 'Desativada',
'Class:User/Error:LoginMustBeUnique' => 'Login é único - "%1s" já está ativo',
'Class:User/Attribute:status/Value:disabled' => 'Inativa',
'Class:User/Error:LoginMustBeUnique' => 'Login deve ser único - "%1s" já existe',
'Class:User/Error:AtLeastOneProfileIsNeeded' => 'Pelo menos um perfil deve ser atribuído a esse usuário',
'Class:User/Error:ProfileNotAllowed' => 'O perfil "%1$s" não pode ser adicionado, ele negará o acesso ao backoffice',
'Class:User/Error:ProfileNotAllowed' => 'O perfil "%1$s" não pôde ser adicionado, ele negará o acesso ao backoffice',
'Class:User/Error:StatusChangeIsNotAllowed' => 'Alterar o status da conta não é permitido para o seu próprio usuário',
'Class:User/Error:AllowedOrgsMustContainUserOrg' => 'As organizações permitidas devem conter apenas usuários pertencentes a organização',
'Class:User/Error:CurrentProfilesHaveInsufficientRights' => 'A lista atual de perfis não fornece permissões de acesso suficientes (os usuários não são mais modificáveis)',
@@ -213,9 +213,9 @@ Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
//
Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
'Class:URP_UserProfile' => 'Perfil de Usuário',
'Class:URP_UserProfile+' => 'Perfil de Usuário',
'Class:URP_UserProfile/Name' => 'Link entre %1$s e %2$s',
'Class:URP_UserProfile' => 'Perfil de usuário',
'Class:URP_UserProfile+' => '',
'Class:URP_UserProfile/Name' => 'Relação entre %1$s e %2$s',
'Class:URP_UserProfile/Attribute:userid' => 'Usuário',
'Class:URP_UserProfile/Attribute:userid+' => 'Conta de usuário',
'Class:URP_UserProfile/Attribute:userlogin' => 'Login',
@@ -236,7 +236,7 @@ Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
'Class:URP_UserOrg' => 'Organização do usuário',
'Class:URP_UserOrg+' => 'Organizações permitidas',
'Class:URP_UserOrg/Name' => 'Link entre %1$s e %2$s',
'Class:URP_UserOrg/Name' => 'Relação entre %1$s e %2$s',
'Class:URP_UserOrg/Attribute:userid' => 'Usuário',
'Class:URP_UserOrg/Attribute:userid+' => 'Conta de usuário',
'Class:URP_UserOrg/Attribute:userlogin' => 'Login',
@@ -278,9 +278,9 @@ Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
'Class:URP_ClassProjection' => 'class_projection',
'Class:URP_ClassProjection+' => 'class projections',
'Class:URP_ClassProjection/Attribute:dimensionid' => 'Dimensão',
'Class:URP_ClassProjection/Attribute:dimensionid+' => 'Dimensão aplicação',
'Class:URP_ClassProjection/Attribute:dimensionid+' => 'Dimensão de aplicação',
'Class:URP_ClassProjection/Attribute:dimension' => 'Dimensão',
'Class:URP_ClassProjection/Attribute:dimension+' => 'Dimensão aplicação',
'Class:URP_ClassProjection/Attribute:dimension+' => 'Dimensão de aplicação',
'Class:URP_ClassProjection/Attribute:class' => 'Classe',
'Class:URP_ClassProjection/Attribute:class+' => 'Classe alvo',
'Class:URP_ClassProjection/Attribute:value' => 'Expressão de valor',
@@ -390,7 +390,9 @@ Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
'BooleanLabel:yes' => 'Sim',
'BooleanLabel:no' => 'Não',
'UI:Login:Title' => 'Login no '.ITOP_APPLICATION_SHORT, 'UI:WelcomeMenu:Title' => 'Bem-vindo ao '.ITOP_APPLICATION_SHORT, 'UI:WelcomeMenu:AllOpenRequests' => 'Solicitações abertas: %1$d',
'UI:Login:Title' => 'Login no '.ITOP_APPLICATION_SHORT,
'UI:WelcomeMenu:Title' => 'Bem-vindo ao '.ITOP_APPLICATION_SHORT,
'UI:WelcomeMenu:AllOpenRequests' => 'Solicitações abertas: %1$d',
'UI:WelcomeMenu:MyCalls' => 'Minhas solicitações',
'UI:WelcomeMenu:OpenIncidents' => 'Incidentes abertos: %1$d',
'UI:WelcomeMenu:AllConfigItems' => 'Itens de Configuração: %1$d',
@@ -484,7 +486,7 @@ Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
'UI:Error:MaintenanceMode' => 'A aplicação está em manutenção',
'UI:Error:MaintenanceTitle' => 'Manutenção',
'UI:Error:InvalidToken' => 'Erro: A operação solicitada já foi executada (token CSRF não encontrado)',
'UI:Error:SMTP:UnknownVendor' => 'OAuth SMTP provider %1$s does not exist (email_transport_smtp.oauth.provider)~~',
'UI:Error:SMTP:UnknownVendor' => 'O provedor de autenticação SMTP OAuth %1$s não existe (email_transport_smtp.oauth.provider)',
'UI:GroupBy:Count' => 'Número',
'UI:GroupBy:Count+' => 'Número de elementos',
'UI:CountOfObjects' => '%1$d objeto(s) correspondem aos critérios',
@@ -526,7 +528,7 @@ Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
'UI:Menu:BulkDelete_Class' => 'Delete %1$s objects...~~',
'UI:Menu:BulkDelete_Link' => 'Delete %1$s...~~',
'UI:Menu:BulkDelete_Remote' => 'Delete %1$s...~~',
'UI:UndefinedObject' => '(n/a)',
'UI:UndefinedObject' => '(objeto indefinido)',
'UI:Document:OpenInNewWindow:Download' => 'Abrir em uma nova janela: %1$s, Download: %2$s',
'UI:SplitDateTime-Date' => 'data',
'UI:SplitDateTime-Time' => 'hora',
@@ -569,7 +571,7 @@ Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
'UI:ResetPwd-EmailSubject' => 'Alterar a senha',
'UI:ResetPwd-EmailBody' => '<body><p>Você solicitou a alteração da senha do '.ITOP_APPLICATION_SHORT.'.</p><p>Por favor, siga este link (passo simples) para <a href="%1$s">digitar a nova senha</a></p>.',
'UI:ResetPwd-Title' => 'Alterar senha',
'UI:ResetPwd-Error-InvalidToken' => 'Desculpe, a senha já foi alterada, ou você deve ter recebido múltiplos e-mails. Por favor, certifique-se que você acessou o link fornecido no último e-mail recebido',
'UI:ResetPwd-Error-InvalidToken' => 'Desculpe, a senha já foi alterada ou você deve ter recebido múltiplos e-mails. Por favor, certifique-se que você acessou o link fornecido no último e-mail recebido',
'UI:ResetPwd-Error-EnterPassword' => 'Digite a nova senha para a conta \'%1$s\'',
'UI:ResetPwd-Ready' => 'A senha foi alterada com sucesso',
'UI:ResetPwd-Login' => 'Clique para entrar...',
@@ -853,7 +855,7 @@ Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
'UI:ManageObjectsOf_Class_LinkedWith_Class_Instance' => 'Gerenciar vínculo de objetos de %1$s com %2$s: %3$s',
'UI:AddLinkedObjectsOf_Class' => 'Associar %1$s',
'UI:RemoveLinkedObjectsOf_Class' => 'Desassociar objeto(s) selecionado(s)',
'UI:Message:EmptyList:UseAdd' => 'A lista está vazia, use o botão "Associar..." para adicionar elementos',
'UI:Message:EmptyList:UseAdd' => 'A lista está vazia. Use o botão "Associar..." para adicionar elementos',
'UI:Message:EmptyList:UseSearchForm' => 'Use o formulário de busca acima para procurar objeto(s) a ser(em) adicionado(s)',
'UI:Wizard:FinalStepTitle' => 'Passo final: confirmação',
'UI:Title:DeletionOf_Object' => 'Excluindo de %1$s',
@@ -905,8 +907,8 @@ Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
'UI:SearchResultsTitle' => 'Resultados da pesquisa',
'UI:SearchResultsTitle+' => 'Resultados da pesquisa de texto completo',
'UI:Search:NoSearch' => 'Nada a pesquisar',
'UI:Search:NeedleTooShort' => 'A string de pesquisa \\"%1$s\\" é muito curta. Por favor, digite pelo menos %2$d caracteres.',
'UI:Search:Ongoing' => 'Procurando por \\"%1$s\\"',
'UI:Search:NeedleTooShort' => 'A string de pesquisa \"%1$s\" é muito curta. Por favor, digite pelo menos %2$d caracteres.',
'UI:Search:Ongoing' => 'Procurando por \"%1$s\"',
'UI:Search:Enlarge' => 'Amplie a pesquisa',
'UI:FullTextSearchTitle_Text' => 'Resultados da pesquisa para "%1$s":',
'UI:Search:Count_ObjectsOf_Class_Found' => '%1$d objeto(s) da classe %2$s encontrado(s).',
@@ -923,7 +925,7 @@ Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
'UI:BulkDeletePageTitle' => 'Exclusão em massa',
'UI:BulkDeleteTitle' => 'Selecione o(s) objeto(s) que você deseja excluir:',
'UI:PageTitle:ObjectCreated' => 'Objeto criado',
'UI:Title:Object_Of_Class_Created' => '%1$s - %2$s criado(a)',
'UI:Title:Object_Of_Class_Created' => '%1$s - %2$s criado(a) com sucesso',
'UI:Toggle:CustomDashboard' => 'Customizado',
'UI:Toggle:StandardDashboard' => 'Padrão',
'UI:Apply_Stimulus_On_Object_In_State_ToTarget_State' => 'Aplicando %1$s no objeto: %2$s com status %3$s para o status alvo: %4$s',
@@ -1424,7 +1426,9 @@ Quando associada a um gatilho, cada ação recebe um número de "ordem", especif
'ExcelExport:AutoDownload' => 'Inicie o download automaticamente quando a exportação estiver pronta',
'ExcelExport:PreparingExport' => 'Preparando a exportação...',
'ExcelExport:Statistics' => 'Estatísticas',
'portal:legacy_portal' => 'Portal do usuário (legado) do '.ITOP_APPLICATION_SHORT, 'portal:backoffice' => 'Interface de usuário back-office do '.ITOP_APPLICATION_SHORT, 'UI:CurrentObjectIsLockedBy_User' => 'O objeto está bloqueado, pois está sendo modificado por %1$s',
'portal:legacy_portal' => 'Portal do usuário (legado) do '.ITOP_APPLICATION_SHORT,
'portal:backoffice' => 'Interface de usuário back-office do '.ITOP_APPLICATION_SHORT,
'UI:CurrentObjectIsLockedBy_User' => 'O objeto está bloqueado, pois está sendo modificado por %1$s',
'UI:CurrentObjectIsLockedBy_User_Explanation' => 'O objeto está sendo modificado por %1$s. Suas modificações não podem ser enviadas, pois seriam sobrescritas',
'UI:CurrentObjectIsSoftLockedBy_User' => 'O objeto está sendo modificado por %1$s. Você será capaz de enviar suas modificações quando terminarem',
'UI:CurrentObjectLockExpired' => 'O bloqueio para impedir modificações simultâneas do objeto expirou',
@@ -1587,11 +1591,11 @@ Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
'Menu:UniversalSearchMenu+' => 'Pesquisar por todo o aplicativo...',
'Menu:UserManagementMenu' => 'Gerenciamento de Usuários',
'Menu:UserManagementMenu+' => '',
'Menu:ProfilesMenu' => 'Perfis de Usuário',
'Menu:ProfilesMenu+' => 'Lista de Perfis de Usuário',
'Menu:ProfilesMenu:Title' => 'Perfis de Usuário',
'Menu:ProfilesMenu' => 'Perfis de usuário',
'Menu:ProfilesMenu+' => 'Lista de perfis de usuário',
'Menu:ProfilesMenu:Title' => 'Perfis de usuário',
'Menu:UserAccountsMenu' => 'Contas de Usuários',
'Menu:UserAccountsMenu+' => 'Lista de Contas de Usuário',
'Menu:UserAccountsMenu+' => 'Lista de contas de usuário',
'Menu:UserAccountsMenu:Title' => 'Contas de Usuários',
'Menu:UserManagement' => 'Gerenciamento de Usuários',
'Menu:Queries' => 'Consultas',

View File

@@ -28,7 +28,7 @@ Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
'UI:Layout:ActivityPanel:Tab:Toolbar:Action:CloseAll:Tooltip' => 'Recolher todas as entradas',
'UI:Layout:ActivityPanel:Tab:Toolbar:Info:AuthorsCount:Tooltip' => 'Número de pessoas que contribuíram para as entradas exibidas',
'UI:Layout:ActivityPanel:Tab:Toolbar:Info:MessagesCount:Tooltip' => 'Número de entradas no(s) log(s) exibido(s)',
'UI:Layout:ActivityPanel:ComposeButton:Tooltip' => 'Adicionar uma nova entrada no log',
'UI:Layout:ActivityPanel:ComposeButton:Tooltip' => 'Criar uma nova entrada no log',
'UI:Layout:ActivityPanel:MultipleEntriesSaveConfirmation:Title' => 'Salvar múltiplos logs',
'UI:Layout:ActivityPanel:MultipleEntriesSaveConfirmation:Explanation' => 'Ao clicar no botão de "salvar", você enviará entradas para todos os logs alterados de uma só vez.',
'UI:Layout:ActivityPanel:NotificationEntry:MessageLink:Tooltip' => 'Clique para abrir a guia de notificações e obter mais informações',

View File

@@ -25,7 +25,7 @@ Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
'UI:Preferences:ActivityPanel:Title' => 'Painel de atividades',
'UI:Preferences:ActivityPanel:EntryFormOpened' => 'Formulário de adicionar nova entrada aberto por padrão',
'UI:Preferences:ActivityPanel:EntryFormOpened+' => 'Se o formulário de adicionar nova entrada será aberto automaticamente ao abrir o Painel de Atividades. Se desmarcado, você ainda poderá abri-lo clicando no botão de "adicionar"',
'UI:Preferences:PersonalizeKeyboardShortcuts:Title' => 'Atalhos de teclado de aplicativo',
'UI:Preferences:PersonalizeKeyboardShortcuts:Title' => 'Atalhos de teclado do aplicativo',
'UI:Preferences:PersonalizeKeyboardShortcuts:Input:Hint' => 'Pressione um atalho de teclado',
'UI:Preferences:PersonalizeKeyboardShortcuts:Button:Tooltip' => 'Grave um atalho de teclado',
'UI:Preferences:PersonalizeKeyboardShortcuts:Button:Reset' => 'Redefinir',

View File

@@ -14,7 +14,10 @@ if (PHP_VERSION_ID < 50600) {
echo $err;
}
}
throw new RuntimeException($err);
trigger_error(
$err,
E_USER_ERROR
);
}
require_once __DIR__ . '/composer/autoload_real.php';

View File

@@ -128,7 +128,6 @@ return array(
'CharConcatWSExpression' => $baseDir . '/core/oql/expression.class.inc.php',
'CheckStopWatchThresholds' => $baseDir . '/core/ormstopwatch.class.inc.php',
'CheckableExpression' => $baseDir . '/core/oql/oqlquery.class.inc.php',
'Collator' => $vendorDir . '/symfony/polyfill-intl-icu/Resources/stubs/Collator.php',
'Combodo\\iTop\\Application\\Branding' => $baseDir . '/sources/Application/Branding.php',
'Combodo\\iTop\\Application\\EventRegister\\ApplicationEvents' => $baseDir . '/sources/Application/EventRegister/ApplicationEvents.php',
'Combodo\\iTop\\Application\\Helper\\CKEditorHelper' => $baseDir . '/sources/Application/Helper/CKEditorHelper.php',
@@ -144,8 +143,6 @@ return array(
'Combodo\\iTop\\Application\\Search\\CriterionParser' => $baseDir . '/sources/Application/Search/criterionparser.class.inc.php',
'Combodo\\iTop\\Application\\Search\\SearchForm' => $baseDir . '/sources/Application/Search/searchform.class.inc.php',
'Combodo\\iTop\\Application\\Status\\Status' => $baseDir . '/sources/Application/Status/Status.php',
'Combodo\\iTop\\Application\\Symfony\\Poc\\BaseForm\\BaseFormController' => $baseDir . '/sources/Application/Symfony/Poc/BaseForm/BaseFormController.php',
'Combodo\\iTop\\Application\\Symfony\\Poc\\BaseForm\\BaseFormType' => $baseDir . '/sources/Application/Symfony/Poc/BaseForm/BaseFormType.php',
'Combodo\\iTop\\Application\\TwigBase\\Controller\\Controller' => $baseDir . '/sources/Application/TwigBase/Controller/Controller.php',
'Combodo\\iTop\\Application\\TwigBase\\Controller\\PageNotFoundException' => $baseDir . '/application/exceptions/PageNotFoundException.php',
'Combodo\\iTop\\Application\\TwigBase\\Twig\\Extension' => $baseDir . '/sources/Application/TwigBase/Twig/Extension.php',
@@ -473,24 +470,6 @@ return array(
'Combodo\\iTop\\Form\\Validator\\MultipleChoicesValidator' => $baseDir . '/sources/Form/Validator/MultipleChoicesValidator.php',
'Combodo\\iTop\\Form\\Validator\\NotEmptyExtKeyValidator' => $baseDir . '/sources/Form/Validator/NotEmptyExtKeyValidator.php',
'Combodo\\iTop\\Form\\Validator\\SelectObjectValidator' => $baseDir . '/sources/Form/Validator/SelectObjectValidator.php',
'Combodo\\iTop\\Forms\\Dependency\\DependencyException' => $baseDir . '/sources/Forms/Dependency/DependencyException.php',
'Combodo\\iTop\\Forms\\Dependency\\DependencyGraph' => $baseDir . '/sources/Forms/Dependency/DependencyGraph.php',
'Combodo\\iTop\\Forms\\Dependency\\DependencyNode' => $baseDir . '/sources/Forms/Dependency/DependencyNode.php',
'Combodo\\iTop\\Forms\\Dependency\\GraphTrait' => $baseDir . '/sources/Forms/Dependency/GraphTrait.php',
'Combodo\\iTop\\Forms\\FormException' => $baseDir . '/sources/Forms/FormException.php',
'Combodo\\iTop\\Forms\\FormType\\Base\\AbstractType' => $baseDir . '/sources/Forms/FormType/Base/AbstractType.php',
'Combodo\\iTop\\Forms\\FormType\\Base\\FormBuilder' => $baseDir . '/sources/Forms/FormType/Base/FormBuilder.php',
'Combodo\\iTop\\Forms\\FormType\\Base\\HiddenType' => $baseDir . '/sources/Forms/FormType/Base/HiddenType.php',
'Combodo\\iTop\\Forms\\FormType\\Base\\TextType' => $baseDir . '/sources/Forms/FormType/Base/TextType.php',
'Combodo\\iTop\\Forms\\FormType\\Base\\TextareaType' => $baseDir . '/sources/Forms/FormType/Base/TextareaType.php',
'Combodo\\iTop\\Forms\\FormType\\FormTypeException' => $baseDir . '/sources/Forms/FormType/FormTypeException.php',
'Combodo\\iTop\\Forms\\FormType\\Orm\\AttCodeGroupByType' => $baseDir . '/sources/Forms/FormType/Orm/AttCodeGroupByType.php',
'Combodo\\iTop\\Forms\\FormType\\Orm\\Attribute\\ExternalKeyType' => $baseDir . '/sources/Forms/FormType/Orm/Attribute/ExternalKeyType.php',
'Combodo\\iTop\\Forms\\FormType\\Orm\\QueryType' => $baseDir . '/sources/Forms/FormType/Orm/QueryType.php',
'Combodo\\iTop\\Forms\\FormType\\Orm\\ValuesFromAttcodeType' => $baseDir . '/sources/Forms/FormType/Orm/ValuesFromAttcodeType.php',
'Combodo\\iTop\\Forms\\Forms' => $baseDir . '/sources/Forms/Forms.php',
'Combodo\\iTop\\Forms\\ResolvedFormType' => $baseDir . '/sources/Forms/ResolvedFormType.php',
'Combodo\\iTop\\Forms\\ResolvedFormTypeFactory' => $baseDir . '/sources/Forms/ResolvedFormTypeFactory.php',
'Combodo\\iTop\\Kernel' => $baseDir . '/sources/Kernel.php',
'Combodo\\iTop\\PhpParser\\Evaluation\\PhpExpressionEvaluator' => $baseDir . '/sources/PhpParser/Evaluation/PhpExpressionEvaluator.php',
'Combodo\\iTop\\Renderer\\BlockRenderer' => $baseDir . '/sources/Renderer/BlockRenderer.php',
@@ -861,7 +840,6 @@ return array(
'InputOutputTask' => $baseDir . '/application/iotask.class.inc.php',
'IntervalExpression' => $baseDir . '/core/oql/expression.class.inc.php',
'IntervalOqlExpression' => $baseDir . '/core/oql/oqlquery.class.inc.php',
'IntlDateFormatter' => $vendorDir . '/symfony/polyfill-intl-icu/Resources/stubs/IntlDateFormatter.php',
'Introspection' => $baseDir . '/core/introspection.class.inc.php',
'InvalidConfigParamException' => $baseDir . '/application/exceptions/InvalidConfigParamException.php',
'InvalidExternalKeyValueException' => $baseDir . '/application/exceptions/InvalidExternalKeyValueException.php',
@@ -903,7 +881,6 @@ return array(
'League\\OAuth2\\Client\\Tool\\RequiredParameterTrait' => $vendorDir . '/league/oauth2-client/src/Tool/RequiredParameterTrait.php',
'ListExpression' => $baseDir . '/core/oql/expression.class.inc.php',
'ListOqlExpression' => $baseDir . '/core/oql/oqlquery.class.inc.php',
'Locale' => $vendorDir . '/symfony/polyfill-intl-icu/Resources/stubs/Locale.php',
'LogAPI' => $baseDir . '/core/log.class.inc.php',
'LogChannels' => $baseDir . '/core/log.class.inc.php',
'LogFileNameBuilderFactory' => $baseDir . '/core/log.class.inc.php',
@@ -937,7 +914,6 @@ return array(
'NewsroomProviderBase' => $baseDir . '/application/newsroomprovider.class.inc.php',
'Normalizer' => $vendorDir . '/symfony/polyfill-intl-normalizer/Resources/stubs/Normalizer.php',
'NotYetEvaluatedExpression' => $baseDir . '/core/oql/expression.class.inc.php',
'NumberFormatter' => $vendorDir . '/symfony/polyfill-intl-icu/Resources/stubs/NumberFormatter.php',
'OQLActualClassTreeResolver' => $baseDir . '/core/oqlactualclasstreeresolver.class.inc.php',
'OQLClassNode' => $baseDir . '/core/oqlclassnode.class.inc.php',
'OQLClassTreeBuilder' => $baseDir . '/core/oqlclasstreebuilder.class.inc.php',
@@ -2216,241 +2192,6 @@ return array(
'Symfony\\Component\\Finder\\Iterator\\SortableIterator' => $vendorDir . '/symfony/finder/Iterator/SortableIterator.php',
'Symfony\\Component\\Finder\\Iterator\\VcsIgnoredFilterIterator' => $vendorDir . '/symfony/finder/Iterator/VcsIgnoredFilterIterator.php',
'Symfony\\Component\\Finder\\SplFileInfo' => $vendorDir . '/symfony/finder/SplFileInfo.php',
'Symfony\\Component\\Form\\AbstractExtension' => $vendorDir . '/symfony/form/AbstractExtension.php',
'Symfony\\Component\\Form\\AbstractRendererEngine' => $vendorDir . '/symfony/form/AbstractRendererEngine.php',
'Symfony\\Component\\Form\\AbstractType' => $vendorDir . '/symfony/form/AbstractType.php',
'Symfony\\Component\\Form\\AbstractTypeExtension' => $vendorDir . '/symfony/form/AbstractTypeExtension.php',
'Symfony\\Component\\Form\\Button' => $vendorDir . '/symfony/form/Button.php',
'Symfony\\Component\\Form\\ButtonBuilder' => $vendorDir . '/symfony/form/ButtonBuilder.php',
'Symfony\\Component\\Form\\ButtonTypeInterface' => $vendorDir . '/symfony/form/ButtonTypeInterface.php',
'Symfony\\Component\\Form\\CallbackTransformer' => $vendorDir . '/symfony/form/CallbackTransformer.php',
'Symfony\\Component\\Form\\ChoiceList\\ArrayChoiceList' => $vendorDir . '/symfony/form/ChoiceList/ArrayChoiceList.php',
'Symfony\\Component\\Form\\ChoiceList\\ChoiceList' => $vendorDir . '/symfony/form/ChoiceList/ChoiceList.php',
'Symfony\\Component\\Form\\ChoiceList\\ChoiceListInterface' => $vendorDir . '/symfony/form/ChoiceList/ChoiceListInterface.php',
'Symfony\\Component\\Form\\ChoiceList\\Factory\\Cache\\AbstractStaticOption' => $vendorDir . '/symfony/form/ChoiceList/Factory/Cache/AbstractStaticOption.php',
'Symfony\\Component\\Form\\ChoiceList\\Factory\\Cache\\ChoiceAttr' => $vendorDir . '/symfony/form/ChoiceList/Factory/Cache/ChoiceAttr.php',
'Symfony\\Component\\Form\\ChoiceList\\Factory\\Cache\\ChoiceFieldName' => $vendorDir . '/symfony/form/ChoiceList/Factory/Cache/ChoiceFieldName.php',
'Symfony\\Component\\Form\\ChoiceList\\Factory\\Cache\\ChoiceFilter' => $vendorDir . '/symfony/form/ChoiceList/Factory/Cache/ChoiceFilter.php',
'Symfony\\Component\\Form\\ChoiceList\\Factory\\Cache\\ChoiceLabel' => $vendorDir . '/symfony/form/ChoiceList/Factory/Cache/ChoiceLabel.php',
'Symfony\\Component\\Form\\ChoiceList\\Factory\\Cache\\ChoiceLoader' => $vendorDir . '/symfony/form/ChoiceList/Factory/Cache/ChoiceLoader.php',
'Symfony\\Component\\Form\\ChoiceList\\Factory\\Cache\\ChoiceTranslationParameters' => $vendorDir . '/symfony/form/ChoiceList/Factory/Cache/ChoiceTranslationParameters.php',
'Symfony\\Component\\Form\\ChoiceList\\Factory\\Cache\\ChoiceValue' => $vendorDir . '/symfony/form/ChoiceList/Factory/Cache/ChoiceValue.php',
'Symfony\\Component\\Form\\ChoiceList\\Factory\\Cache\\GroupBy' => $vendorDir . '/symfony/form/ChoiceList/Factory/Cache/GroupBy.php',
'Symfony\\Component\\Form\\ChoiceList\\Factory\\Cache\\PreferredChoice' => $vendorDir . '/symfony/form/ChoiceList/Factory/Cache/PreferredChoice.php',
'Symfony\\Component\\Form\\ChoiceList\\Factory\\CachingFactoryDecorator' => $vendorDir . '/symfony/form/ChoiceList/Factory/CachingFactoryDecorator.php',
'Symfony\\Component\\Form\\ChoiceList\\Factory\\ChoiceListFactoryInterface' => $vendorDir . '/symfony/form/ChoiceList/Factory/ChoiceListFactoryInterface.php',
'Symfony\\Component\\Form\\ChoiceList\\Factory\\DefaultChoiceListFactory' => $vendorDir . '/symfony/form/ChoiceList/Factory/DefaultChoiceListFactory.php',
'Symfony\\Component\\Form\\ChoiceList\\Factory\\PropertyAccessDecorator' => $vendorDir . '/symfony/form/ChoiceList/Factory/PropertyAccessDecorator.php',
'Symfony\\Component\\Form\\ChoiceList\\LazyChoiceList' => $vendorDir . '/symfony/form/ChoiceList/LazyChoiceList.php',
'Symfony\\Component\\Form\\ChoiceList\\Loader\\AbstractChoiceLoader' => $vendorDir . '/symfony/form/ChoiceList/Loader/AbstractChoiceLoader.php',
'Symfony\\Component\\Form\\ChoiceList\\Loader\\CallbackChoiceLoader' => $vendorDir . '/symfony/form/ChoiceList/Loader/CallbackChoiceLoader.php',
'Symfony\\Component\\Form\\ChoiceList\\Loader\\ChoiceLoaderInterface' => $vendorDir . '/symfony/form/ChoiceList/Loader/ChoiceLoaderInterface.php',
'Symfony\\Component\\Form\\ChoiceList\\Loader\\FilterChoiceLoaderDecorator' => $vendorDir . '/symfony/form/ChoiceList/Loader/FilterChoiceLoaderDecorator.php',
'Symfony\\Component\\Form\\ChoiceList\\Loader\\IntlCallbackChoiceLoader' => $vendorDir . '/symfony/form/ChoiceList/Loader/IntlCallbackChoiceLoader.php',
'Symfony\\Component\\Form\\ChoiceList\\View\\ChoiceGroupView' => $vendorDir . '/symfony/form/ChoiceList/View/ChoiceGroupView.php',
'Symfony\\Component\\Form\\ChoiceList\\View\\ChoiceListView' => $vendorDir . '/symfony/form/ChoiceList/View/ChoiceListView.php',
'Symfony\\Component\\Form\\ChoiceList\\View\\ChoiceView' => $vendorDir . '/symfony/form/ChoiceList/View/ChoiceView.php',
'Symfony\\Component\\Form\\ClearableErrorsInterface' => $vendorDir . '/symfony/form/ClearableErrorsInterface.php',
'Symfony\\Component\\Form\\ClickableInterface' => $vendorDir . '/symfony/form/ClickableInterface.php',
'Symfony\\Component\\Form\\Command\\DebugCommand' => $vendorDir . '/symfony/form/Command/DebugCommand.php',
'Symfony\\Component\\Form\\Console\\Descriptor\\Descriptor' => $vendorDir . '/symfony/form/Console/Descriptor/Descriptor.php',
'Symfony\\Component\\Form\\Console\\Descriptor\\JsonDescriptor' => $vendorDir . '/symfony/form/Console/Descriptor/JsonDescriptor.php',
'Symfony\\Component\\Form\\Console\\Descriptor\\TextDescriptor' => $vendorDir . '/symfony/form/Console/Descriptor/TextDescriptor.php',
'Symfony\\Component\\Form\\Console\\Helper\\DescriptorHelper' => $vendorDir . '/symfony/form/Console/Helper/DescriptorHelper.php',
'Symfony\\Component\\Form\\DataAccessorInterface' => $vendorDir . '/symfony/form/DataAccessorInterface.php',
'Symfony\\Component\\Form\\DataMapperInterface' => $vendorDir . '/symfony/form/DataMapperInterface.php',
'Symfony\\Component\\Form\\DataTransformerInterface' => $vendorDir . '/symfony/form/DataTransformerInterface.php',
'Symfony\\Component\\Form\\DependencyInjection\\FormPass' => $vendorDir . '/symfony/form/DependencyInjection/FormPass.php',
'Symfony\\Component\\Form\\Event\\PostSetDataEvent' => $vendorDir . '/symfony/form/Event/PostSetDataEvent.php',
'Symfony\\Component\\Form\\Event\\PostSubmitEvent' => $vendorDir . '/symfony/form/Event/PostSubmitEvent.php',
'Symfony\\Component\\Form\\Event\\PreSetDataEvent' => $vendorDir . '/symfony/form/Event/PreSetDataEvent.php',
'Symfony\\Component\\Form\\Event\\PreSubmitEvent' => $vendorDir . '/symfony/form/Event/PreSubmitEvent.php',
'Symfony\\Component\\Form\\Event\\SubmitEvent' => $vendorDir . '/symfony/form/Event/SubmitEvent.php',
'Symfony\\Component\\Form\\Exception\\AccessException' => $vendorDir . '/symfony/form/Exception/AccessException.php',
'Symfony\\Component\\Form\\Exception\\AlreadySubmittedException' => $vendorDir . '/symfony/form/Exception/AlreadySubmittedException.php',
'Symfony\\Component\\Form\\Exception\\BadMethodCallException' => $vendorDir . '/symfony/form/Exception/BadMethodCallException.php',
'Symfony\\Component\\Form\\Exception\\ErrorMappingException' => $vendorDir . '/symfony/form/Exception/ErrorMappingException.php',
'Symfony\\Component\\Form\\Exception\\ExceptionInterface' => $vendorDir . '/symfony/form/Exception/ExceptionInterface.php',
'Symfony\\Component\\Form\\Exception\\InvalidArgumentException' => $vendorDir . '/symfony/form/Exception/InvalidArgumentException.php',
'Symfony\\Component\\Form\\Exception\\InvalidConfigurationException' => $vendorDir . '/symfony/form/Exception/InvalidConfigurationException.php',
'Symfony\\Component\\Form\\Exception\\LogicException' => $vendorDir . '/symfony/form/Exception/LogicException.php',
'Symfony\\Component\\Form\\Exception\\OutOfBoundsException' => $vendorDir . '/symfony/form/Exception/OutOfBoundsException.php',
'Symfony\\Component\\Form\\Exception\\RuntimeException' => $vendorDir . '/symfony/form/Exception/RuntimeException.php',
'Symfony\\Component\\Form\\Exception\\StringCastException' => $vendorDir . '/symfony/form/Exception/StringCastException.php',
'Symfony\\Component\\Form\\Exception\\TransformationFailedException' => $vendorDir . '/symfony/form/Exception/TransformationFailedException.php',
'Symfony\\Component\\Form\\Exception\\UnexpectedTypeException' => $vendorDir . '/symfony/form/Exception/UnexpectedTypeException.php',
'Symfony\\Component\\Form\\Extension\\Core\\CoreExtension' => $vendorDir . '/symfony/form/Extension/Core/CoreExtension.php',
'Symfony\\Component\\Form\\Extension\\Core\\DataAccessor\\CallbackAccessor' => $vendorDir . '/symfony/form/Extension/Core/DataAccessor/CallbackAccessor.php',
'Symfony\\Component\\Form\\Extension\\Core\\DataAccessor\\ChainAccessor' => $vendorDir . '/symfony/form/Extension/Core/DataAccessor/ChainAccessor.php',
'Symfony\\Component\\Form\\Extension\\Core\\DataAccessor\\PropertyPathAccessor' => $vendorDir . '/symfony/form/Extension/Core/DataAccessor/PropertyPathAccessor.php',
'Symfony\\Component\\Form\\Extension\\Core\\DataMapper\\CheckboxListMapper' => $vendorDir . '/symfony/form/Extension/Core/DataMapper/CheckboxListMapper.php',
'Symfony\\Component\\Form\\Extension\\Core\\DataMapper\\DataMapper' => $vendorDir . '/symfony/form/Extension/Core/DataMapper/DataMapper.php',
'Symfony\\Component\\Form\\Extension\\Core\\DataMapper\\RadioListMapper' => $vendorDir . '/symfony/form/Extension/Core/DataMapper/RadioListMapper.php',
'Symfony\\Component\\Form\\Extension\\Core\\DataTransformer\\ArrayToPartsTransformer' => $vendorDir . '/symfony/form/Extension/Core/DataTransformer/ArrayToPartsTransformer.php',
'Symfony\\Component\\Form\\Extension\\Core\\DataTransformer\\BaseDateTimeTransformer' => $vendorDir . '/symfony/form/Extension/Core/DataTransformer/BaseDateTimeTransformer.php',
'Symfony\\Component\\Form\\Extension\\Core\\DataTransformer\\BooleanToStringTransformer' => $vendorDir . '/symfony/form/Extension/Core/DataTransformer/BooleanToStringTransformer.php',
'Symfony\\Component\\Form\\Extension\\Core\\DataTransformer\\ChoiceToValueTransformer' => $vendorDir . '/symfony/form/Extension/Core/DataTransformer/ChoiceToValueTransformer.php',
'Symfony\\Component\\Form\\Extension\\Core\\DataTransformer\\ChoicesToValuesTransformer' => $vendorDir . '/symfony/form/Extension/Core/DataTransformer/ChoicesToValuesTransformer.php',
'Symfony\\Component\\Form\\Extension\\Core\\DataTransformer\\DataTransformerChain' => $vendorDir . '/symfony/form/Extension/Core/DataTransformer/DataTransformerChain.php',
'Symfony\\Component\\Form\\Extension\\Core\\DataTransformer\\DateIntervalToArrayTransformer' => $vendorDir . '/symfony/form/Extension/Core/DataTransformer/DateIntervalToArrayTransformer.php',
'Symfony\\Component\\Form\\Extension\\Core\\DataTransformer\\DateIntervalToStringTransformer' => $vendorDir . '/symfony/form/Extension/Core/DataTransformer/DateIntervalToStringTransformer.php',
'Symfony\\Component\\Form\\Extension\\Core\\DataTransformer\\DateTimeImmutableToDateTimeTransformer' => $vendorDir . '/symfony/form/Extension/Core/DataTransformer/DateTimeImmutableToDateTimeTransformer.php',
'Symfony\\Component\\Form\\Extension\\Core\\DataTransformer\\DateTimeToArrayTransformer' => $vendorDir . '/symfony/form/Extension/Core/DataTransformer/DateTimeToArrayTransformer.php',
'Symfony\\Component\\Form\\Extension\\Core\\DataTransformer\\DateTimeToHtml5LocalDateTimeTransformer' => $vendorDir . '/symfony/form/Extension/Core/DataTransformer/DateTimeToHtml5LocalDateTimeTransformer.php',
'Symfony\\Component\\Form\\Extension\\Core\\DataTransformer\\DateTimeToLocalizedStringTransformer' => $vendorDir . '/symfony/form/Extension/Core/DataTransformer/DateTimeToLocalizedStringTransformer.php',
'Symfony\\Component\\Form\\Extension\\Core\\DataTransformer\\DateTimeToRfc3339Transformer' => $vendorDir . '/symfony/form/Extension/Core/DataTransformer/DateTimeToRfc3339Transformer.php',
'Symfony\\Component\\Form\\Extension\\Core\\DataTransformer\\DateTimeToStringTransformer' => $vendorDir . '/symfony/form/Extension/Core/DataTransformer/DateTimeToStringTransformer.php',
'Symfony\\Component\\Form\\Extension\\Core\\DataTransformer\\DateTimeToTimestampTransformer' => $vendorDir . '/symfony/form/Extension/Core/DataTransformer/DateTimeToTimestampTransformer.php',
'Symfony\\Component\\Form\\Extension\\Core\\DataTransformer\\DateTimeZoneToStringTransformer' => $vendorDir . '/symfony/form/Extension/Core/DataTransformer/DateTimeZoneToStringTransformer.php',
'Symfony\\Component\\Form\\Extension\\Core\\DataTransformer\\IntegerToLocalizedStringTransformer' => $vendorDir . '/symfony/form/Extension/Core/DataTransformer/IntegerToLocalizedStringTransformer.php',
'Symfony\\Component\\Form\\Extension\\Core\\DataTransformer\\IntlTimeZoneToStringTransformer' => $vendorDir . '/symfony/form/Extension/Core/DataTransformer/IntlTimeZoneToStringTransformer.php',
'Symfony\\Component\\Form\\Extension\\Core\\DataTransformer\\MoneyToLocalizedStringTransformer' => $vendorDir . '/symfony/form/Extension/Core/DataTransformer/MoneyToLocalizedStringTransformer.php',
'Symfony\\Component\\Form\\Extension\\Core\\DataTransformer\\NumberToLocalizedStringTransformer' => $vendorDir . '/symfony/form/Extension/Core/DataTransformer/NumberToLocalizedStringTransformer.php',
'Symfony\\Component\\Form\\Extension\\Core\\DataTransformer\\PercentToLocalizedStringTransformer' => $vendorDir . '/symfony/form/Extension/Core/DataTransformer/PercentToLocalizedStringTransformer.php',
'Symfony\\Component\\Form\\Extension\\Core\\DataTransformer\\StringToFloatTransformer' => $vendorDir . '/symfony/form/Extension/Core/DataTransformer/StringToFloatTransformer.php',
'Symfony\\Component\\Form\\Extension\\Core\\DataTransformer\\UlidToStringTransformer' => $vendorDir . '/symfony/form/Extension/Core/DataTransformer/UlidToStringTransformer.php',
'Symfony\\Component\\Form\\Extension\\Core\\DataTransformer\\UuidToStringTransformer' => $vendorDir . '/symfony/form/Extension/Core/DataTransformer/UuidToStringTransformer.php',
'Symfony\\Component\\Form\\Extension\\Core\\DataTransformer\\ValueToDuplicatesTransformer' => $vendorDir . '/symfony/form/Extension/Core/DataTransformer/ValueToDuplicatesTransformer.php',
'Symfony\\Component\\Form\\Extension\\Core\\DataTransformer\\WeekToArrayTransformer' => $vendorDir . '/symfony/form/Extension/Core/DataTransformer/WeekToArrayTransformer.php',
'Symfony\\Component\\Form\\Extension\\Core\\EventListener\\FixUrlProtocolListener' => $vendorDir . '/symfony/form/Extension/Core/EventListener/FixUrlProtocolListener.php',
'Symfony\\Component\\Form\\Extension\\Core\\EventListener\\MergeCollectionListener' => $vendorDir . '/symfony/form/Extension/Core/EventListener/MergeCollectionListener.php',
'Symfony\\Component\\Form\\Extension\\Core\\EventListener\\ResizeFormListener' => $vendorDir . '/symfony/form/Extension/Core/EventListener/ResizeFormListener.php',
'Symfony\\Component\\Form\\Extension\\Core\\EventListener\\TransformationFailureListener' => $vendorDir . '/symfony/form/Extension/Core/EventListener/TransformationFailureListener.php',
'Symfony\\Component\\Form\\Extension\\Core\\EventListener\\TrimListener' => $vendorDir . '/symfony/form/Extension/Core/EventListener/TrimListener.php',
'Symfony\\Component\\Form\\Extension\\Core\\Type\\BaseType' => $vendorDir . '/symfony/form/Extension/Core/Type/BaseType.php',
'Symfony\\Component\\Form\\Extension\\Core\\Type\\BirthdayType' => $vendorDir . '/symfony/form/Extension/Core/Type/BirthdayType.php',
'Symfony\\Component\\Form\\Extension\\Core\\Type\\ButtonType' => $vendorDir . '/symfony/form/Extension/Core/Type/ButtonType.php',
'Symfony\\Component\\Form\\Extension\\Core\\Type\\CheckboxType' => $vendorDir . '/symfony/form/Extension/Core/Type/CheckboxType.php',
'Symfony\\Component\\Form\\Extension\\Core\\Type\\ChoiceType' => $vendorDir . '/symfony/form/Extension/Core/Type/ChoiceType.php',
'Symfony\\Component\\Form\\Extension\\Core\\Type\\CollectionType' => $vendorDir . '/symfony/form/Extension/Core/Type/CollectionType.php',
'Symfony\\Component\\Form\\Extension\\Core\\Type\\ColorType' => $vendorDir . '/symfony/form/Extension/Core/Type/ColorType.php',
'Symfony\\Component\\Form\\Extension\\Core\\Type\\CountryType' => $vendorDir . '/symfony/form/Extension/Core/Type/CountryType.php',
'Symfony\\Component\\Form\\Extension\\Core\\Type\\CurrencyType' => $vendorDir . '/symfony/form/Extension/Core/Type/CurrencyType.php',
'Symfony\\Component\\Form\\Extension\\Core\\Type\\DateIntervalType' => $vendorDir . '/symfony/form/Extension/Core/Type/DateIntervalType.php',
'Symfony\\Component\\Form\\Extension\\Core\\Type\\DateTimeType' => $vendorDir . '/symfony/form/Extension/Core/Type/DateTimeType.php',
'Symfony\\Component\\Form\\Extension\\Core\\Type\\DateType' => $vendorDir . '/symfony/form/Extension/Core/Type/DateType.php',
'Symfony\\Component\\Form\\Extension\\Core\\Type\\EmailType' => $vendorDir . '/symfony/form/Extension/Core/Type/EmailType.php',
'Symfony\\Component\\Form\\Extension\\Core\\Type\\EnumType' => $vendorDir . '/symfony/form/Extension/Core/Type/EnumType.php',
'Symfony\\Component\\Form\\Extension\\Core\\Type\\FileType' => $vendorDir . '/symfony/form/Extension/Core/Type/FileType.php',
'Symfony\\Component\\Form\\Extension\\Core\\Type\\FormType' => $vendorDir . '/symfony/form/Extension/Core/Type/FormType.php',
'Symfony\\Component\\Form\\Extension\\Core\\Type\\HiddenType' => $vendorDir . '/symfony/form/Extension/Core/Type/HiddenType.php',
'Symfony\\Component\\Form\\Extension\\Core\\Type\\IntegerType' => $vendorDir . '/symfony/form/Extension/Core/Type/IntegerType.php',
'Symfony\\Component\\Form\\Extension\\Core\\Type\\LanguageType' => $vendorDir . '/symfony/form/Extension/Core/Type/LanguageType.php',
'Symfony\\Component\\Form\\Extension\\Core\\Type\\LocaleType' => $vendorDir . '/symfony/form/Extension/Core/Type/LocaleType.php',
'Symfony\\Component\\Form\\Extension\\Core\\Type\\MoneyType' => $vendorDir . '/symfony/form/Extension/Core/Type/MoneyType.php',
'Symfony\\Component\\Form\\Extension\\Core\\Type\\NumberType' => $vendorDir . '/symfony/form/Extension/Core/Type/NumberType.php',
'Symfony\\Component\\Form\\Extension\\Core\\Type\\PasswordType' => $vendorDir . '/symfony/form/Extension/Core/Type/PasswordType.php',
'Symfony\\Component\\Form\\Extension\\Core\\Type\\PercentType' => $vendorDir . '/symfony/form/Extension/Core/Type/PercentType.php',
'Symfony\\Component\\Form\\Extension\\Core\\Type\\RadioType' => $vendorDir . '/symfony/form/Extension/Core/Type/RadioType.php',
'Symfony\\Component\\Form\\Extension\\Core\\Type\\RangeType' => $vendorDir . '/symfony/form/Extension/Core/Type/RangeType.php',
'Symfony\\Component\\Form\\Extension\\Core\\Type\\RepeatedType' => $vendorDir . '/symfony/form/Extension/Core/Type/RepeatedType.php',
'Symfony\\Component\\Form\\Extension\\Core\\Type\\ResetType' => $vendorDir . '/symfony/form/Extension/Core/Type/ResetType.php',
'Symfony\\Component\\Form\\Extension\\Core\\Type\\SearchType' => $vendorDir . '/symfony/form/Extension/Core/Type/SearchType.php',
'Symfony\\Component\\Form\\Extension\\Core\\Type\\SubmitType' => $vendorDir . '/symfony/form/Extension/Core/Type/SubmitType.php',
'Symfony\\Component\\Form\\Extension\\Core\\Type\\TelType' => $vendorDir . '/symfony/form/Extension/Core/Type/TelType.php',
'Symfony\\Component\\Form\\Extension\\Core\\Type\\TextType' => $vendorDir . '/symfony/form/Extension/Core/Type/TextType.php',
'Symfony\\Component\\Form\\Extension\\Core\\Type\\TextareaType' => $vendorDir . '/symfony/form/Extension/Core/Type/TextareaType.php',
'Symfony\\Component\\Form\\Extension\\Core\\Type\\TimeType' => $vendorDir . '/symfony/form/Extension/Core/Type/TimeType.php',
'Symfony\\Component\\Form\\Extension\\Core\\Type\\TimezoneType' => $vendorDir . '/symfony/form/Extension/Core/Type/TimezoneType.php',
'Symfony\\Component\\Form\\Extension\\Core\\Type\\TransformationFailureExtension' => $vendorDir . '/symfony/form/Extension/Core/Type/TransformationFailureExtension.php',
'Symfony\\Component\\Form\\Extension\\Core\\Type\\UlidType' => $vendorDir . '/symfony/form/Extension/Core/Type/UlidType.php',
'Symfony\\Component\\Form\\Extension\\Core\\Type\\UrlType' => $vendorDir . '/symfony/form/Extension/Core/Type/UrlType.php',
'Symfony\\Component\\Form\\Extension\\Core\\Type\\UuidType' => $vendorDir . '/symfony/form/Extension/Core/Type/UuidType.php',
'Symfony\\Component\\Form\\Extension\\Core\\Type\\WeekType' => $vendorDir . '/symfony/form/Extension/Core/Type/WeekType.php',
'Symfony\\Component\\Form\\Extension\\Csrf\\CsrfExtension' => $vendorDir . '/symfony/form/Extension/Csrf/CsrfExtension.php',
'Symfony\\Component\\Form\\Extension\\Csrf\\EventListener\\CsrfValidationListener' => $vendorDir . '/symfony/form/Extension/Csrf/EventListener/CsrfValidationListener.php',
'Symfony\\Component\\Form\\Extension\\Csrf\\Type\\FormTypeCsrfExtension' => $vendorDir . '/symfony/form/Extension/Csrf/Type/FormTypeCsrfExtension.php',
'Symfony\\Component\\Form\\Extension\\DataCollector\\DataCollectorExtension' => $vendorDir . '/symfony/form/Extension/DataCollector/DataCollectorExtension.php',
'Symfony\\Component\\Form\\Extension\\DataCollector\\EventListener\\DataCollectorListener' => $vendorDir . '/symfony/form/Extension/DataCollector/EventListener/DataCollectorListener.php',
'Symfony\\Component\\Form\\Extension\\DataCollector\\FormDataCollector' => $vendorDir . '/symfony/form/Extension/DataCollector/FormDataCollector.php',
'Symfony\\Component\\Form\\Extension\\DataCollector\\FormDataCollectorInterface' => $vendorDir . '/symfony/form/Extension/DataCollector/FormDataCollectorInterface.php',
'Symfony\\Component\\Form\\Extension\\DataCollector\\FormDataExtractor' => $vendorDir . '/symfony/form/Extension/DataCollector/FormDataExtractor.php',
'Symfony\\Component\\Form\\Extension\\DataCollector\\FormDataExtractorInterface' => $vendorDir . '/symfony/form/Extension/DataCollector/FormDataExtractorInterface.php',
'Symfony\\Component\\Form\\Extension\\DataCollector\\Proxy\\ResolvedTypeDataCollectorProxy' => $vendorDir . '/symfony/form/Extension/DataCollector/Proxy/ResolvedTypeDataCollectorProxy.php',
'Symfony\\Component\\Form\\Extension\\DataCollector\\Proxy\\ResolvedTypeFactoryDataCollectorProxy' => $vendorDir . '/symfony/form/Extension/DataCollector/Proxy/ResolvedTypeFactoryDataCollectorProxy.php',
'Symfony\\Component\\Form\\Extension\\DataCollector\\Type\\DataCollectorTypeExtension' => $vendorDir . '/symfony/form/Extension/DataCollector/Type/DataCollectorTypeExtension.php',
'Symfony\\Component\\Form\\Extension\\DependencyInjection\\DependencyInjectionExtension' => $vendorDir . '/symfony/form/Extension/DependencyInjection/DependencyInjectionExtension.php',
'Symfony\\Component\\Form\\Extension\\HtmlSanitizer\\HtmlSanitizerExtension' => $vendorDir . '/symfony/form/Extension/HtmlSanitizer/HtmlSanitizerExtension.php',
'Symfony\\Component\\Form\\Extension\\HtmlSanitizer\\Type\\TextTypeHtmlSanitizerExtension' => $vendorDir . '/symfony/form/Extension/HtmlSanitizer/Type/TextTypeHtmlSanitizerExtension.php',
'Symfony\\Component\\Form\\Extension\\HttpFoundation\\HttpFoundationExtension' => $vendorDir . '/symfony/form/Extension/HttpFoundation/HttpFoundationExtension.php',
'Symfony\\Component\\Form\\Extension\\HttpFoundation\\HttpFoundationRequestHandler' => $vendorDir . '/symfony/form/Extension/HttpFoundation/HttpFoundationRequestHandler.php',
'Symfony\\Component\\Form\\Extension\\HttpFoundation\\Type\\FormTypeHttpFoundationExtension' => $vendorDir . '/symfony/form/Extension/HttpFoundation/Type/FormTypeHttpFoundationExtension.php',
'Symfony\\Component\\Form\\Extension\\PasswordHasher\\EventListener\\PasswordHasherListener' => $vendorDir . '/symfony/form/Extension/PasswordHasher/EventListener/PasswordHasherListener.php',
'Symfony\\Component\\Form\\Extension\\PasswordHasher\\PasswordHasherExtension' => $vendorDir . '/symfony/form/Extension/PasswordHasher/PasswordHasherExtension.php',
'Symfony\\Component\\Form\\Extension\\PasswordHasher\\Type\\FormTypePasswordHasherExtension' => $vendorDir . '/symfony/form/Extension/PasswordHasher/Type/FormTypePasswordHasherExtension.php',
'Symfony\\Component\\Form\\Extension\\PasswordHasher\\Type\\PasswordTypePasswordHasherExtension' => $vendorDir . '/symfony/form/Extension/PasswordHasher/Type/PasswordTypePasswordHasherExtension.php',
'Symfony\\Component\\Form\\Extension\\Validator\\Constraints\\Form' => $vendorDir . '/symfony/form/Extension/Validator/Constraints/Form.php',
'Symfony\\Component\\Form\\Extension\\Validator\\Constraints\\FormValidator' => $vendorDir . '/symfony/form/Extension/Validator/Constraints/FormValidator.php',
'Symfony\\Component\\Form\\Extension\\Validator\\EventListener\\ValidationListener' => $vendorDir . '/symfony/form/Extension/Validator/EventListener/ValidationListener.php',
'Symfony\\Component\\Form\\Extension\\Validator\\Type\\BaseValidatorExtension' => $vendorDir . '/symfony/form/Extension/Validator/Type/BaseValidatorExtension.php',
'Symfony\\Component\\Form\\Extension\\Validator\\Type\\FormTypeValidatorExtension' => $vendorDir . '/symfony/form/Extension/Validator/Type/FormTypeValidatorExtension.php',
'Symfony\\Component\\Form\\Extension\\Validator\\Type\\RepeatedTypeValidatorExtension' => $vendorDir . '/symfony/form/Extension/Validator/Type/RepeatedTypeValidatorExtension.php',
'Symfony\\Component\\Form\\Extension\\Validator\\Type\\SubmitTypeValidatorExtension' => $vendorDir . '/symfony/form/Extension/Validator/Type/SubmitTypeValidatorExtension.php',
'Symfony\\Component\\Form\\Extension\\Validator\\Type\\UploadValidatorExtension' => $vendorDir . '/symfony/form/Extension/Validator/Type/UploadValidatorExtension.php',
'Symfony\\Component\\Form\\Extension\\Validator\\ValidatorExtension' => $vendorDir . '/symfony/form/Extension/Validator/ValidatorExtension.php',
'Symfony\\Component\\Form\\Extension\\Validator\\ValidatorTypeGuesser' => $vendorDir . '/symfony/form/Extension/Validator/ValidatorTypeGuesser.php',
'Symfony\\Component\\Form\\Extension\\Validator\\ViolationMapper\\MappingRule' => $vendorDir . '/symfony/form/Extension/Validator/ViolationMapper/MappingRule.php',
'Symfony\\Component\\Form\\Extension\\Validator\\ViolationMapper\\RelativePath' => $vendorDir . '/symfony/form/Extension/Validator/ViolationMapper/RelativePath.php',
'Symfony\\Component\\Form\\Extension\\Validator\\ViolationMapper\\ViolationMapper' => $vendorDir . '/symfony/form/Extension/Validator/ViolationMapper/ViolationMapper.php',
'Symfony\\Component\\Form\\Extension\\Validator\\ViolationMapper\\ViolationMapperInterface' => $vendorDir . '/symfony/form/Extension/Validator/ViolationMapper/ViolationMapperInterface.php',
'Symfony\\Component\\Form\\Extension\\Validator\\ViolationMapper\\ViolationPath' => $vendorDir . '/symfony/form/Extension/Validator/ViolationMapper/ViolationPath.php',
'Symfony\\Component\\Form\\Extension\\Validator\\ViolationMapper\\ViolationPathIterator' => $vendorDir . '/symfony/form/Extension/Validator/ViolationMapper/ViolationPathIterator.php',
'Symfony\\Component\\Form\\FileUploadError' => $vendorDir . '/symfony/form/FileUploadError.php',
'Symfony\\Component\\Form\\Form' => $vendorDir . '/symfony/form/Form.php',
'Symfony\\Component\\Form\\FormBuilder' => $vendorDir . '/symfony/form/FormBuilder.php',
'Symfony\\Component\\Form\\FormBuilderInterface' => $vendorDir . '/symfony/form/FormBuilderInterface.php',
'Symfony\\Component\\Form\\FormConfigBuilder' => $vendorDir . '/symfony/form/FormConfigBuilder.php',
'Symfony\\Component\\Form\\FormConfigBuilderInterface' => $vendorDir . '/symfony/form/FormConfigBuilderInterface.php',
'Symfony\\Component\\Form\\FormConfigInterface' => $vendorDir . '/symfony/form/FormConfigInterface.php',
'Symfony\\Component\\Form\\FormError' => $vendorDir . '/symfony/form/FormError.php',
'Symfony\\Component\\Form\\FormErrorIterator' => $vendorDir . '/symfony/form/FormErrorIterator.php',
'Symfony\\Component\\Form\\FormEvent' => $vendorDir . '/symfony/form/FormEvent.php',
'Symfony\\Component\\Form\\FormEvents' => $vendorDir . '/symfony/form/FormEvents.php',
'Symfony\\Component\\Form\\FormExtensionInterface' => $vendorDir . '/symfony/form/FormExtensionInterface.php',
'Symfony\\Component\\Form\\FormFactory' => $vendorDir . '/symfony/form/FormFactory.php',
'Symfony\\Component\\Form\\FormFactoryBuilder' => $vendorDir . '/symfony/form/FormFactoryBuilder.php',
'Symfony\\Component\\Form\\FormFactoryBuilderInterface' => $vendorDir . '/symfony/form/FormFactoryBuilderInterface.php',
'Symfony\\Component\\Form\\FormFactoryInterface' => $vendorDir . '/symfony/form/FormFactoryInterface.php',
'Symfony\\Component\\Form\\FormInterface' => $vendorDir . '/symfony/form/FormInterface.php',
'Symfony\\Component\\Form\\FormRegistry' => $vendorDir . '/symfony/form/FormRegistry.php',
'Symfony\\Component\\Form\\FormRegistryInterface' => $vendorDir . '/symfony/form/FormRegistryInterface.php',
'Symfony\\Component\\Form\\FormRenderer' => $vendorDir . '/symfony/form/FormRenderer.php',
'Symfony\\Component\\Form\\FormRendererEngineInterface' => $vendorDir . '/symfony/form/FormRendererEngineInterface.php',
'Symfony\\Component\\Form\\FormRendererInterface' => $vendorDir . '/symfony/form/FormRendererInterface.php',
'Symfony\\Component\\Form\\FormTypeExtensionInterface' => $vendorDir . '/symfony/form/FormTypeExtensionInterface.php',
'Symfony\\Component\\Form\\FormTypeGuesserChain' => $vendorDir . '/symfony/form/FormTypeGuesserChain.php',
'Symfony\\Component\\Form\\FormTypeGuesserInterface' => $vendorDir . '/symfony/form/FormTypeGuesserInterface.php',
'Symfony\\Component\\Form\\FormTypeInterface' => $vendorDir . '/symfony/form/FormTypeInterface.php',
'Symfony\\Component\\Form\\FormView' => $vendorDir . '/symfony/form/FormView.php',
'Symfony\\Component\\Form\\Forms' => $vendorDir . '/symfony/form/Forms.php',
'Symfony\\Component\\Form\\Guess\\Guess' => $vendorDir . '/symfony/form/Guess/Guess.php',
'Symfony\\Component\\Form\\Guess\\TypeGuess' => $vendorDir . '/symfony/form/Guess/TypeGuess.php',
'Symfony\\Component\\Form\\Guess\\ValueGuess' => $vendorDir . '/symfony/form/Guess/ValueGuess.php',
'Symfony\\Component\\Form\\NativeRequestHandler' => $vendorDir . '/symfony/form/NativeRequestHandler.php',
'Symfony\\Component\\Form\\PreloadedExtension' => $vendorDir . '/symfony/form/PreloadedExtension.php',
'Symfony\\Component\\Form\\RequestHandlerInterface' => $vendorDir . '/symfony/form/RequestHandlerInterface.php',
'Symfony\\Component\\Form\\ResolvedFormType' => $vendorDir . '/symfony/form/ResolvedFormType.php',
'Symfony\\Component\\Form\\ResolvedFormTypeFactory' => $vendorDir . '/symfony/form/ResolvedFormTypeFactory.php',
'Symfony\\Component\\Form\\ResolvedFormTypeFactoryInterface' => $vendorDir . '/symfony/form/ResolvedFormTypeFactoryInterface.php',
'Symfony\\Component\\Form\\ResolvedFormTypeInterface' => $vendorDir . '/symfony/form/ResolvedFormTypeInterface.php',
'Symfony\\Component\\Form\\ReversedTransformer' => $vendorDir . '/symfony/form/ReversedTransformer.php',
'Symfony\\Component\\Form\\SubmitButton' => $vendorDir . '/symfony/form/SubmitButton.php',
'Symfony\\Component\\Form\\SubmitButtonBuilder' => $vendorDir . '/symfony/form/SubmitButtonBuilder.php',
'Symfony\\Component\\Form\\SubmitButtonTypeInterface' => $vendorDir . '/symfony/form/SubmitButtonTypeInterface.php',
'Symfony\\Component\\Form\\Test\\FormBuilderInterface' => $vendorDir . '/symfony/form/Test/FormBuilderInterface.php',
'Symfony\\Component\\Form\\Test\\FormIntegrationTestCase' => $vendorDir . '/symfony/form/Test/FormIntegrationTestCase.php',
'Symfony\\Component\\Form\\Test\\FormInterface' => $vendorDir . '/symfony/form/Test/FormInterface.php',
'Symfony\\Component\\Form\\Test\\FormPerformanceTestCase' => $vendorDir . '/symfony/form/Test/FormPerformanceTestCase.php',
'Symfony\\Component\\Form\\Test\\Traits\\RunTestTrait' => $vendorDir . '/symfony/form/Test/Traits/RunTestTrait.php',
'Symfony\\Component\\Form\\Test\\Traits\\ValidatorExtensionTrait' => $vendorDir . '/symfony/form/Test/Traits/ValidatorExtensionTrait.php',
'Symfony\\Component\\Form\\Test\\TypeTestCase' => $vendorDir . '/symfony/form/Test/TypeTestCase.php',
'Symfony\\Component\\Form\\Util\\FormUtil' => $vendorDir . '/symfony/form/Util/FormUtil.php',
'Symfony\\Component\\Form\\Util\\InheritDataAwareIterator' => $vendorDir . '/symfony/form/Util/InheritDataAwareIterator.php',
'Symfony\\Component\\Form\\Util\\OptionsResolverWrapper' => $vendorDir . '/symfony/form/Util/OptionsResolverWrapper.php',
'Symfony\\Component\\Form\\Util\\OrderedHashMap' => $vendorDir . '/symfony/form/Util/OrderedHashMap.php',
'Symfony\\Component\\Form\\Util\\OrderedHashMapIterator' => $vendorDir . '/symfony/form/Util/OrderedHashMapIterator.php',
'Symfony\\Component\\Form\\Util\\ServerParams' => $vendorDir . '/symfony/form/Util/ServerParams.php',
'Symfony\\Component\\Form\\Util\\StringUtil' => $vendorDir . '/symfony/form/Util/StringUtil.php',
'Symfony\\Component\\HttpFoundation\\AcceptHeader' => $vendorDir . '/symfony/http-foundation/AcceptHeader.php',
'Symfony\\Component\\HttpFoundation\\AcceptHeaderItem' => $vendorDir . '/symfony/http-foundation/AcceptHeaderItem.php',
'Symfony\\Component\\HttpFoundation\\BinaryFileResponse' => $vendorDir . '/symfony/http-foundation/BinaryFileResponse.php',
@@ -2831,63 +2572,6 @@ return array(
'Symfony\\Component\\Mime\\Part\\SMimePart' => $vendorDir . '/symfony/mime/Part/SMimePart.php',
'Symfony\\Component\\Mime\\Part\\TextPart' => $vendorDir . '/symfony/mime/Part/TextPart.php',
'Symfony\\Component\\Mime\\RawMessage' => $vendorDir . '/symfony/mime/RawMessage.php',
'Symfony\\Component\\OptionsResolver\\Debug\\OptionsResolverIntrospector' => $vendorDir . '/symfony/options-resolver/Debug/OptionsResolverIntrospector.php',
'Symfony\\Component\\OptionsResolver\\Exception\\AccessException' => $vendorDir . '/symfony/options-resolver/Exception/AccessException.php',
'Symfony\\Component\\OptionsResolver\\Exception\\ExceptionInterface' => $vendorDir . '/symfony/options-resolver/Exception/ExceptionInterface.php',
'Symfony\\Component\\OptionsResolver\\Exception\\InvalidArgumentException' => $vendorDir . '/symfony/options-resolver/Exception/InvalidArgumentException.php',
'Symfony\\Component\\OptionsResolver\\Exception\\InvalidOptionsException' => $vendorDir . '/symfony/options-resolver/Exception/InvalidOptionsException.php',
'Symfony\\Component\\OptionsResolver\\Exception\\MissingOptionsException' => $vendorDir . '/symfony/options-resolver/Exception/MissingOptionsException.php',
'Symfony\\Component\\OptionsResolver\\Exception\\NoConfigurationException' => $vendorDir . '/symfony/options-resolver/Exception/NoConfigurationException.php',
'Symfony\\Component\\OptionsResolver\\Exception\\NoSuchOptionException' => $vendorDir . '/symfony/options-resolver/Exception/NoSuchOptionException.php',
'Symfony\\Component\\OptionsResolver\\Exception\\OptionDefinitionException' => $vendorDir . '/symfony/options-resolver/Exception/OptionDefinitionException.php',
'Symfony\\Component\\OptionsResolver\\Exception\\UndefinedOptionsException' => $vendorDir . '/symfony/options-resolver/Exception/UndefinedOptionsException.php',
'Symfony\\Component\\OptionsResolver\\OptionConfigurator' => $vendorDir . '/symfony/options-resolver/OptionConfigurator.php',
'Symfony\\Component\\OptionsResolver\\Options' => $vendorDir . '/symfony/options-resolver/Options.php',
'Symfony\\Component\\OptionsResolver\\OptionsResolver' => $vendorDir . '/symfony/options-resolver/OptionsResolver.php',
'Symfony\\Component\\PropertyAccess\\Exception\\AccessException' => $vendorDir . '/symfony/property-access/Exception/AccessException.php',
'Symfony\\Component\\PropertyAccess\\Exception\\ExceptionInterface' => $vendorDir . '/symfony/property-access/Exception/ExceptionInterface.php',
'Symfony\\Component\\PropertyAccess\\Exception\\InvalidArgumentException' => $vendorDir . '/symfony/property-access/Exception/InvalidArgumentException.php',
'Symfony\\Component\\PropertyAccess\\Exception\\InvalidPropertyPathException' => $vendorDir . '/symfony/property-access/Exception/InvalidPropertyPathException.php',
'Symfony\\Component\\PropertyAccess\\Exception\\NoSuchIndexException' => $vendorDir . '/symfony/property-access/Exception/NoSuchIndexException.php',
'Symfony\\Component\\PropertyAccess\\Exception\\NoSuchPropertyException' => $vendorDir . '/symfony/property-access/Exception/NoSuchPropertyException.php',
'Symfony\\Component\\PropertyAccess\\Exception\\OutOfBoundsException' => $vendorDir . '/symfony/property-access/Exception/OutOfBoundsException.php',
'Symfony\\Component\\PropertyAccess\\Exception\\RuntimeException' => $vendorDir . '/symfony/property-access/Exception/RuntimeException.php',
'Symfony\\Component\\PropertyAccess\\Exception\\UnexpectedTypeException' => $vendorDir . '/symfony/property-access/Exception/UnexpectedTypeException.php',
'Symfony\\Component\\PropertyAccess\\Exception\\UninitializedPropertyException' => $vendorDir . '/symfony/property-access/Exception/UninitializedPropertyException.php',
'Symfony\\Component\\PropertyAccess\\PropertyAccess' => $vendorDir . '/symfony/property-access/PropertyAccess.php',
'Symfony\\Component\\PropertyAccess\\PropertyAccessor' => $vendorDir . '/symfony/property-access/PropertyAccessor.php',
'Symfony\\Component\\PropertyAccess\\PropertyAccessorBuilder' => $vendorDir . '/symfony/property-access/PropertyAccessorBuilder.php',
'Symfony\\Component\\PropertyAccess\\PropertyAccessorInterface' => $vendorDir . '/symfony/property-access/PropertyAccessorInterface.php',
'Symfony\\Component\\PropertyAccess\\PropertyPath' => $vendorDir . '/symfony/property-access/PropertyPath.php',
'Symfony\\Component\\PropertyAccess\\PropertyPathBuilder' => $vendorDir . '/symfony/property-access/PropertyPathBuilder.php',
'Symfony\\Component\\PropertyAccess\\PropertyPathInterface' => $vendorDir . '/symfony/property-access/PropertyPathInterface.php',
'Symfony\\Component\\PropertyAccess\\PropertyPathIterator' => $vendorDir . '/symfony/property-access/PropertyPathIterator.php',
'Symfony\\Component\\PropertyAccess\\PropertyPathIteratorInterface' => $vendorDir . '/symfony/property-access/PropertyPathIteratorInterface.php',
'Symfony\\Component\\PropertyInfo\\DependencyInjection\\PropertyInfoConstructorPass' => $vendorDir . '/symfony/property-info/DependencyInjection/PropertyInfoConstructorPass.php',
'Symfony\\Component\\PropertyInfo\\DependencyInjection\\PropertyInfoPass' => $vendorDir . '/symfony/property-info/DependencyInjection/PropertyInfoPass.php',
'Symfony\\Component\\PropertyInfo\\Extractor\\ConstructorArgumentTypeExtractorInterface' => $vendorDir . '/symfony/property-info/Extractor/ConstructorArgumentTypeExtractorInterface.php',
'Symfony\\Component\\PropertyInfo\\Extractor\\ConstructorExtractor' => $vendorDir . '/symfony/property-info/Extractor/ConstructorExtractor.php',
'Symfony\\Component\\PropertyInfo\\Extractor\\PhpDocExtractor' => $vendorDir . '/symfony/property-info/Extractor/PhpDocExtractor.php',
'Symfony\\Component\\PropertyInfo\\Extractor\\PhpStanExtractor' => $vendorDir . '/symfony/property-info/Extractor/PhpStanExtractor.php',
'Symfony\\Component\\PropertyInfo\\Extractor\\ReflectionExtractor' => $vendorDir . '/symfony/property-info/Extractor/ReflectionExtractor.php',
'Symfony\\Component\\PropertyInfo\\Extractor\\SerializerExtractor' => $vendorDir . '/symfony/property-info/Extractor/SerializerExtractor.php',
'Symfony\\Component\\PropertyInfo\\PhpStan\\NameScope' => $vendorDir . '/symfony/property-info/PhpStan/NameScope.php',
'Symfony\\Component\\PropertyInfo\\PhpStan\\NameScopeFactory' => $vendorDir . '/symfony/property-info/PhpStan/NameScopeFactory.php',
'Symfony\\Component\\PropertyInfo\\PropertyAccessExtractorInterface' => $vendorDir . '/symfony/property-info/PropertyAccessExtractorInterface.php',
'Symfony\\Component\\PropertyInfo\\PropertyDescriptionExtractorInterface' => $vendorDir . '/symfony/property-info/PropertyDescriptionExtractorInterface.php',
'Symfony\\Component\\PropertyInfo\\PropertyInfoCacheExtractor' => $vendorDir . '/symfony/property-info/PropertyInfoCacheExtractor.php',
'Symfony\\Component\\PropertyInfo\\PropertyInfoExtractor' => $vendorDir . '/symfony/property-info/PropertyInfoExtractor.php',
'Symfony\\Component\\PropertyInfo\\PropertyInfoExtractorInterface' => $vendorDir . '/symfony/property-info/PropertyInfoExtractorInterface.php',
'Symfony\\Component\\PropertyInfo\\PropertyInitializableExtractorInterface' => $vendorDir . '/symfony/property-info/PropertyInitializableExtractorInterface.php',
'Symfony\\Component\\PropertyInfo\\PropertyListExtractorInterface' => $vendorDir . '/symfony/property-info/PropertyListExtractorInterface.php',
'Symfony\\Component\\PropertyInfo\\PropertyReadInfo' => $vendorDir . '/symfony/property-info/PropertyReadInfo.php',
'Symfony\\Component\\PropertyInfo\\PropertyReadInfoExtractorInterface' => $vendorDir . '/symfony/property-info/PropertyReadInfoExtractorInterface.php',
'Symfony\\Component\\PropertyInfo\\PropertyTypeExtractorInterface' => $vendorDir . '/symfony/property-info/PropertyTypeExtractorInterface.php',
'Symfony\\Component\\PropertyInfo\\PropertyWriteInfo' => $vendorDir . '/symfony/property-info/PropertyWriteInfo.php',
'Symfony\\Component\\PropertyInfo\\PropertyWriteInfoExtractorInterface' => $vendorDir . '/symfony/property-info/PropertyWriteInfoExtractorInterface.php',
'Symfony\\Component\\PropertyInfo\\Type' => $vendorDir . '/symfony/property-info/Type.php',
'Symfony\\Component\\PropertyInfo\\Util\\PhpDocTypeHelper' => $vendorDir . '/symfony/property-info/Util/PhpDocTypeHelper.php',
'Symfony\\Component\\PropertyInfo\\Util\\PhpStanTypeHelper' => $vendorDir . '/symfony/property-info/Util/PhpStanTypeHelper.php',
'Symfony\\Component\\Routing\\Alias' => $vendorDir . '/symfony/routing/Alias.php',
'Symfony\\Component\\Routing\\Annotation\\Route' => $vendorDir . '/symfony/routing/Annotation/Route.php',
'Symfony\\Component\\Routing\\Attribute\\Route' => $vendorDir . '/symfony/routing/Attribute/Route.php',
@@ -3112,35 +2796,6 @@ return array(
'Symfony\\Contracts\\Translation\\TranslatorTrait' => $vendorDir . '/symfony/translation-contracts/TranslatorTrait.php',
'Symfony\\Polyfill\\Ctype\\Ctype' => $vendorDir . '/symfony/polyfill-ctype/Ctype.php',
'Symfony\\Polyfill\\Intl\\Grapheme\\Grapheme' => $vendorDir . '/symfony/polyfill-intl-grapheme/Grapheme.php',
'Symfony\\Polyfill\\Intl\\Icu\\Collator' => $vendorDir . '/symfony/polyfill-intl-icu/Collator.php',
'Symfony\\Polyfill\\Intl\\Icu\\Currencies' => $vendorDir . '/symfony/polyfill-intl-icu/Currencies.php',
'Symfony\\Polyfill\\Intl\\Icu\\DateFormat\\AmPmTransformer' => $vendorDir . '/symfony/polyfill-intl-icu/DateFormat/AmPmTransformer.php',
'Symfony\\Polyfill\\Intl\\Icu\\DateFormat\\DayOfWeekTransformer' => $vendorDir . '/symfony/polyfill-intl-icu/DateFormat/DayOfWeekTransformer.php',
'Symfony\\Polyfill\\Intl\\Icu\\DateFormat\\DayOfYearTransformer' => $vendorDir . '/symfony/polyfill-intl-icu/DateFormat/DayOfYearTransformer.php',
'Symfony\\Polyfill\\Intl\\Icu\\DateFormat\\DayTransformer' => $vendorDir . '/symfony/polyfill-intl-icu/DateFormat/DayTransformer.php',
'Symfony\\Polyfill\\Intl\\Icu\\DateFormat\\FullTransformer' => $vendorDir . '/symfony/polyfill-intl-icu/DateFormat/FullTransformer.php',
'Symfony\\Polyfill\\Intl\\Icu\\DateFormat\\Hour1200Transformer' => $vendorDir . '/symfony/polyfill-intl-icu/DateFormat/Hour1200Transformer.php',
'Symfony\\Polyfill\\Intl\\Icu\\DateFormat\\Hour1201Transformer' => $vendorDir . '/symfony/polyfill-intl-icu/DateFormat/Hour1201Transformer.php',
'Symfony\\Polyfill\\Intl\\Icu\\DateFormat\\Hour2400Transformer' => $vendorDir . '/symfony/polyfill-intl-icu/DateFormat/Hour2400Transformer.php',
'Symfony\\Polyfill\\Intl\\Icu\\DateFormat\\Hour2401Transformer' => $vendorDir . '/symfony/polyfill-intl-icu/DateFormat/Hour2401Transformer.php',
'Symfony\\Polyfill\\Intl\\Icu\\DateFormat\\HourTransformer' => $vendorDir . '/symfony/polyfill-intl-icu/DateFormat/HourTransformer.php',
'Symfony\\Polyfill\\Intl\\Icu\\DateFormat\\MinuteTransformer' => $vendorDir . '/symfony/polyfill-intl-icu/DateFormat/MinuteTransformer.php',
'Symfony\\Polyfill\\Intl\\Icu\\DateFormat\\MonthTransformer' => $vendorDir . '/symfony/polyfill-intl-icu/DateFormat/MonthTransformer.php',
'Symfony\\Polyfill\\Intl\\Icu\\DateFormat\\QuarterTransformer' => $vendorDir . '/symfony/polyfill-intl-icu/DateFormat/QuarterTransformer.php',
'Symfony\\Polyfill\\Intl\\Icu\\DateFormat\\SecondTransformer' => $vendorDir . '/symfony/polyfill-intl-icu/DateFormat/SecondTransformer.php',
'Symfony\\Polyfill\\Intl\\Icu\\DateFormat\\TimezoneTransformer' => $vendorDir . '/symfony/polyfill-intl-icu/DateFormat/TimezoneTransformer.php',
'Symfony\\Polyfill\\Intl\\Icu\\DateFormat\\Transformer' => $vendorDir . '/symfony/polyfill-intl-icu/DateFormat/Transformer.php',
'Symfony\\Polyfill\\Intl\\Icu\\DateFormat\\YearTransformer' => $vendorDir . '/symfony/polyfill-intl-icu/DateFormat/YearTransformer.php',
'Symfony\\Polyfill\\Intl\\Icu\\Exception\\ExceptionInterface' => $vendorDir . '/symfony/polyfill-intl-icu/Exception/ExceptionInterface.php',
'Symfony\\Polyfill\\Intl\\Icu\\Exception\\MethodArgumentNotImplementedException' => $vendorDir . '/symfony/polyfill-intl-icu/Exception/MethodArgumentNotImplementedException.php',
'Symfony\\Polyfill\\Intl\\Icu\\Exception\\MethodArgumentValueNotImplementedException' => $vendorDir . '/symfony/polyfill-intl-icu/Exception/MethodArgumentValueNotImplementedException.php',
'Symfony\\Polyfill\\Intl\\Icu\\Exception\\MethodNotImplementedException' => $vendorDir . '/symfony/polyfill-intl-icu/Exception/MethodNotImplementedException.php',
'Symfony\\Polyfill\\Intl\\Icu\\Exception\\NotImplementedException' => $vendorDir . '/symfony/polyfill-intl-icu/Exception/NotImplementedException.php',
'Symfony\\Polyfill\\Intl\\Icu\\Exception\\RuntimeException' => $vendorDir . '/symfony/polyfill-intl-icu/Exception/RuntimeException.php',
'Symfony\\Polyfill\\Intl\\Icu\\Icu' => $vendorDir . '/symfony/polyfill-intl-icu/Icu.php',
'Symfony\\Polyfill\\Intl\\Icu\\IntlDateFormatter' => $vendorDir . '/symfony/polyfill-intl-icu/IntlDateFormatter.php',
'Symfony\\Polyfill\\Intl\\Icu\\Locale' => $vendorDir . '/symfony/polyfill-intl-icu/Locale.php',
'Symfony\\Polyfill\\Intl\\Icu\\NumberFormatter' => $vendorDir . '/symfony/polyfill-intl-icu/NumberFormatter.php',
'Symfony\\Polyfill\\Intl\\Idn\\Idn' => $vendorDir . '/symfony/polyfill-intl-idn/Idn.php',
'Symfony\\Polyfill\\Intl\\Idn\\Info' => $vendorDir . '/symfony/polyfill-intl-idn/Info.php',
'Symfony\\Polyfill\\Intl\\Idn\\Resources\\unidata\\DisallowedRanges' => $vendorDir . '/symfony/polyfill-intl-idn/Resources/unidata/DisallowedRanges.php',
@@ -3514,6 +3169,7 @@ return array(
'iRestServiceProvider' => $baseDir . '/application/applicationextension/rest/iRestServiceProvider.php',
'iScheduledProcess' => $baseDir . '/core/backgroundprocess.inc.php',
'iSelfRegister' => $baseDir . '/core/userrights.class.inc.php',
'iTokenLoginUIExtension' => $baseDir . '/application/applicationextension/login/iTokenLoginUIExtension.php',
'iTopConfigParser' => $baseDir . '/core/iTopConfigParser.php',
'iTopMutex' => $baseDir . '/core/mutex.class.inc.php',
'iTopOwnershipLock' => $baseDir . '/core/ownershiplock.class.inc.php',

View File

@@ -17,11 +17,10 @@ return array(
'c7baa00073ee9c61edf148c51917cfb4' => $vendorDir . '/twig/twig/src/Resources/escaper.php',
'f844ccf1d25df8663951193c3fc307c8' => $vendorDir . '/twig/twig/src/Resources/string_loader.php',
'7b11c4dc42b3b3023073cb14e519683c' => $vendorDir . '/ralouphie/getallheaders/src/getallheaders.php',
'8825ede83f2f289127722d4e842cf7e8' => $vendorDir . '/symfony/polyfill-intl-grapheme/bootstrap.php',
'f598d06aa772fa33d905e87be6398fb1' => $vendorDir . '/symfony/polyfill-intl-idn/bootstrap.php',
'b6b991a57620e2fb6b2f66f03fe9ddc2' => $vendorDir . '/symfony/string/Resources/functions.php',
'37a3dc5111fe8f707ab4c132ef1dbc62' => $vendorDir . '/guzzlehttp/guzzle/src/functions_include.php',
'6a47392539ca2329373e0d33e1dba053' => $vendorDir . '/symfony/polyfill-intl-icu/bootstrap.php',
'8825ede83f2f289127722d4e842cf7e8' => $vendorDir . '/symfony/polyfill-intl-grapheme/bootstrap.php',
'b6b991a57620e2fb6b2f66f03fe9ddc2' => $vendorDir . '/symfony/string/Resources/functions.php',
'344f11dc3484aaed5cbde58e23513be4' => $vendorDir . '/apereo/phpcas/source/CAS.php',
'6997bc0ca52a383ea79e2a4a84bb1f3e' => $baseDir . '/sources/alias.php',
);

View File

@@ -13,7 +13,6 @@ return array(
'Symfony\\Polyfill\\Mbstring\\' => array($vendorDir . '/symfony/polyfill-mbstring'),
'Symfony\\Polyfill\\Intl\\Normalizer\\' => array($vendorDir . '/symfony/polyfill-intl-normalizer'),
'Symfony\\Polyfill\\Intl\\Idn\\' => array($vendorDir . '/symfony/polyfill-intl-idn'),
'Symfony\\Polyfill\\Intl\\Icu\\' => array($vendorDir . '/symfony/polyfill-intl-icu'),
'Symfony\\Polyfill\\Intl\\Grapheme\\' => array($vendorDir . '/symfony/polyfill-intl-grapheme'),
'Symfony\\Polyfill\\Ctype\\' => array($vendorDir . '/symfony/polyfill-ctype'),
'Symfony\\Contracts\\Translation\\' => array($vendorDir . '/symfony/translation-contracts'),
@@ -27,14 +26,10 @@ return array(
'Symfony\\Component\\Stopwatch\\' => array($vendorDir . '/symfony/stopwatch'),
'Symfony\\Component\\Runtime\\' => array($vendorDir . '/symfony/runtime'),
'Symfony\\Component\\Routing\\' => array($vendorDir . '/symfony/routing'),
'Symfony\\Component\\PropertyInfo\\' => array($vendorDir . '/symfony/property-info'),
'Symfony\\Component\\PropertyAccess\\' => array($vendorDir . '/symfony/property-access'),
'Symfony\\Component\\OptionsResolver\\' => array($vendorDir . '/symfony/options-resolver'),
'Symfony\\Component\\Mime\\' => array($vendorDir . '/symfony/mime'),
'Symfony\\Component\\Mailer\\' => array($vendorDir . '/symfony/mailer'),
'Symfony\\Component\\HttpKernel\\' => array($vendorDir . '/symfony/http-kernel'),
'Symfony\\Component\\HttpFoundation\\' => array($vendorDir . '/symfony/http-foundation'),
'Symfony\\Component\\Form\\' => array($vendorDir . '/symfony/form'),
'Symfony\\Component\\Finder\\' => array($vendorDir . '/symfony/finder'),
'Symfony\\Component\\Filesystem\\' => array($vendorDir . '/symfony/filesystem'),
'Symfony\\Component\\EventDispatcher\\' => array($vendorDir . '/symfony/event-dispatcher'),
@@ -61,7 +56,7 @@ return array(
'Psr\\Cache\\' => array($vendorDir . '/psr/cache/src'),
'PhpParser\\' => array($vendorDir . '/nikic/php-parser/lib/PhpParser'),
'Pelago\\Emogrifier\\' => array($vendorDir . '/pelago/emogrifier/src'),
'League\\OAuth2\\Client\\' => array($vendorDir . '/league/oauth2-google/src', $vendorDir . '/league/oauth2-client/src'),
'League\\OAuth2\\Client\\' => array($vendorDir . '/league/oauth2-client/src', $vendorDir . '/league/oauth2-google/src'),
'GuzzleHttp\\Psr7\\' => array($vendorDir . '/guzzlehttp/psr7/src'),
'GuzzleHttp\\Promise\\' => array($vendorDir . '/guzzlehttp/promises/src'),
'GuzzleHttp\\' => array($vendorDir . '/guzzlehttp/guzzle/src'),

View File

@@ -18,11 +18,10 @@ class ComposerStaticInit7f81b4a2a468a061c306af5e447a9a9f
'c7baa00073ee9c61edf148c51917cfb4' => __DIR__ . '/..' . '/twig/twig/src/Resources/escaper.php',
'f844ccf1d25df8663951193c3fc307c8' => __DIR__ . '/..' . '/twig/twig/src/Resources/string_loader.php',
'7b11c4dc42b3b3023073cb14e519683c' => __DIR__ . '/..' . '/ralouphie/getallheaders/src/getallheaders.php',
'8825ede83f2f289127722d4e842cf7e8' => __DIR__ . '/..' . '/symfony/polyfill-intl-grapheme/bootstrap.php',
'f598d06aa772fa33d905e87be6398fb1' => __DIR__ . '/..' . '/symfony/polyfill-intl-idn/bootstrap.php',
'b6b991a57620e2fb6b2f66f03fe9ddc2' => __DIR__ . '/..' . '/symfony/string/Resources/functions.php',
'37a3dc5111fe8f707ab4c132ef1dbc62' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/functions_include.php',
'6a47392539ca2329373e0d33e1dba053' => __DIR__ . '/..' . '/symfony/polyfill-intl-icu/bootstrap.php',
'8825ede83f2f289127722d4e842cf7e8' => __DIR__ . '/..' . '/symfony/polyfill-intl-grapheme/bootstrap.php',
'b6b991a57620e2fb6b2f66f03fe9ddc2' => __DIR__ . '/..' . '/symfony/string/Resources/functions.php',
'344f11dc3484aaed5cbde58e23513be4' => __DIR__ . '/..' . '/apereo/phpcas/source/CAS.php',
'6997bc0ca52a383ea79e2a4a84bb1f3e' => __DIR__ . '/../..' . '/sources/alias.php',
);
@@ -40,7 +39,6 @@ class ComposerStaticInit7f81b4a2a468a061c306af5e447a9a9f
'Symfony\\Polyfill\\Mbstring\\' => 26,
'Symfony\\Polyfill\\Intl\\Normalizer\\' => 33,
'Symfony\\Polyfill\\Intl\\Idn\\' => 26,
'Symfony\\Polyfill\\Intl\\Icu\\' => 26,
'Symfony\\Polyfill\\Intl\\Grapheme\\' => 31,
'Symfony\\Polyfill\\Ctype\\' => 23,
'Symfony\\Contracts\\Translation\\' => 30,
@@ -54,14 +52,10 @@ class ComposerStaticInit7f81b4a2a468a061c306af5e447a9a9f
'Symfony\\Component\\Stopwatch\\' => 28,
'Symfony\\Component\\Runtime\\' => 26,
'Symfony\\Component\\Routing\\' => 26,
'Symfony\\Component\\PropertyInfo\\' => 31,
'Symfony\\Component\\PropertyAccess\\' => 33,
'Symfony\\Component\\OptionsResolver\\' => 34,
'Symfony\\Component\\Mime\\' => 23,
'Symfony\\Component\\Mailer\\' => 25,
'Symfony\\Component\\HttpKernel\\' => 29,
'Symfony\\Component\\HttpFoundation\\' => 33,
'Symfony\\Component\\Form\\' => 23,
'Symfony\\Component\\Finder\\' => 25,
'Symfony\\Component\\Filesystem\\' => 29,
'Symfony\\Component\\EventDispatcher\\' => 34,
@@ -145,10 +139,6 @@ class ComposerStaticInit7f81b4a2a468a061c306af5e447a9a9f
array (
0 => __DIR__ . '/..' . '/symfony/polyfill-intl-idn',
),
'Symfony\\Polyfill\\Intl\\Icu\\' =>
array (
0 => __DIR__ . '/..' . '/symfony/polyfill-intl-icu',
),
'Symfony\\Polyfill\\Intl\\Grapheme\\' =>
array (
0 => __DIR__ . '/..' . '/symfony/polyfill-intl-grapheme',
@@ -201,18 +191,6 @@ class ComposerStaticInit7f81b4a2a468a061c306af5e447a9a9f
array (
0 => __DIR__ . '/..' . '/symfony/routing',
),
'Symfony\\Component\\PropertyInfo\\' =>
array (
0 => __DIR__ . '/..' . '/symfony/property-info',
),
'Symfony\\Component\\PropertyAccess\\' =>
array (
0 => __DIR__ . '/..' . '/symfony/property-access',
),
'Symfony\\Component\\OptionsResolver\\' =>
array (
0 => __DIR__ . '/..' . '/symfony/options-resolver',
),
'Symfony\\Component\\Mime\\' =>
array (
0 => __DIR__ . '/..' . '/symfony/mime',
@@ -229,10 +207,6 @@ class ComposerStaticInit7f81b4a2a468a061c306af5e447a9a9f
array (
0 => __DIR__ . '/..' . '/symfony/http-foundation',
),
'Symfony\\Component\\Form\\' =>
array (
0 => __DIR__ . '/..' . '/symfony/form',
),
'Symfony\\Component\\Finder\\' =>
array (
0 => __DIR__ . '/..' . '/symfony/finder',
@@ -340,8 +314,8 @@ class ComposerStaticInit7f81b4a2a468a061c306af5e447a9a9f
),
'League\\OAuth2\\Client\\' =>
array (
0 => __DIR__ . '/..' . '/league/oauth2-google/src',
1 => __DIR__ . '/..' . '/league/oauth2-client/src',
0 => __DIR__ . '/..' . '/league/oauth2-client/src',
1 => __DIR__ . '/..' . '/league/oauth2-google/src',
),
'GuzzleHttp\\Psr7\\' =>
array (
@@ -509,7 +483,6 @@ class ComposerStaticInit7f81b4a2a468a061c306af5e447a9a9f
'CharConcatWSExpression' => __DIR__ . '/../..' . '/core/oql/expression.class.inc.php',
'CheckStopWatchThresholds' => __DIR__ . '/../..' . '/core/ormstopwatch.class.inc.php',
'CheckableExpression' => __DIR__ . '/../..' . '/core/oql/oqlquery.class.inc.php',
'Collator' => __DIR__ . '/..' . '/symfony/polyfill-intl-icu/Resources/stubs/Collator.php',
'Combodo\\iTop\\Application\\Branding' => __DIR__ . '/../..' . '/sources/Application/Branding.php',
'Combodo\\iTop\\Application\\EventRegister\\ApplicationEvents' => __DIR__ . '/../..' . '/sources/Application/EventRegister/ApplicationEvents.php',
'Combodo\\iTop\\Application\\Helper\\CKEditorHelper' => __DIR__ . '/../..' . '/sources/Application/Helper/CKEditorHelper.php',
@@ -525,8 +498,6 @@ class ComposerStaticInit7f81b4a2a468a061c306af5e447a9a9f
'Combodo\\iTop\\Application\\Search\\CriterionParser' => __DIR__ . '/../..' . '/sources/Application/Search/criterionparser.class.inc.php',
'Combodo\\iTop\\Application\\Search\\SearchForm' => __DIR__ . '/../..' . '/sources/Application/Search/searchform.class.inc.php',
'Combodo\\iTop\\Application\\Status\\Status' => __DIR__ . '/../..' . '/sources/Application/Status/Status.php',
'Combodo\\iTop\\Application\\Symfony\\Poc\\BaseForm\\BaseFormController' => __DIR__ . '/../..' . '/sources/Application/Symfony/Poc/BaseForm/BaseFormController.php',
'Combodo\\iTop\\Application\\Symfony\\Poc\\BaseForm\\BaseFormType' => __DIR__ . '/../..' . '/sources/Application/Symfony/Poc/BaseForm/BaseFormType.php',
'Combodo\\iTop\\Application\\TwigBase\\Controller\\Controller' => __DIR__ . '/../..' . '/sources/Application/TwigBase/Controller/Controller.php',
'Combodo\\iTop\\Application\\TwigBase\\Controller\\PageNotFoundException' => __DIR__ . '/../..' . '/application/exceptions/PageNotFoundException.php',
'Combodo\\iTop\\Application\\TwigBase\\Twig\\Extension' => __DIR__ . '/../..' . '/sources/Application/TwigBase/Twig/Extension.php',
@@ -854,24 +825,6 @@ class ComposerStaticInit7f81b4a2a468a061c306af5e447a9a9f
'Combodo\\iTop\\Form\\Validator\\MultipleChoicesValidator' => __DIR__ . '/../..' . '/sources/Form/Validator/MultipleChoicesValidator.php',
'Combodo\\iTop\\Form\\Validator\\NotEmptyExtKeyValidator' => __DIR__ . '/../..' . '/sources/Form/Validator/NotEmptyExtKeyValidator.php',
'Combodo\\iTop\\Form\\Validator\\SelectObjectValidator' => __DIR__ . '/../..' . '/sources/Form/Validator/SelectObjectValidator.php',
'Combodo\\iTop\\Forms\\Dependency\\DependencyException' => __DIR__ . '/../..' . '/sources/Forms/Dependency/DependencyException.php',
'Combodo\\iTop\\Forms\\Dependency\\DependencyGraph' => __DIR__ . '/../..' . '/sources/Forms/Dependency/DependencyGraph.php',
'Combodo\\iTop\\Forms\\Dependency\\DependencyNode' => __DIR__ . '/../..' . '/sources/Forms/Dependency/DependencyNode.php',
'Combodo\\iTop\\Forms\\Dependency\\GraphTrait' => __DIR__ . '/../..' . '/sources/Forms/Dependency/GraphTrait.php',
'Combodo\\iTop\\Forms\\FormException' => __DIR__ . '/../..' . '/sources/Forms/FormException.php',
'Combodo\\iTop\\Forms\\FormType\\Base\\AbstractType' => __DIR__ . '/../..' . '/sources/Forms/FormType/Base/AbstractType.php',
'Combodo\\iTop\\Forms\\FormType\\Base\\FormBuilder' => __DIR__ . '/../..' . '/sources/Forms/FormType/Base/FormBuilder.php',
'Combodo\\iTop\\Forms\\FormType\\Base\\HiddenType' => __DIR__ . '/../..' . '/sources/Forms/FormType/Base/HiddenType.php',
'Combodo\\iTop\\Forms\\FormType\\Base\\TextType' => __DIR__ . '/../..' . '/sources/Forms/FormType/Base/TextType.php',
'Combodo\\iTop\\Forms\\FormType\\Base\\TextareaType' => __DIR__ . '/../..' . '/sources/Forms/FormType/Base/TextareaType.php',
'Combodo\\iTop\\Forms\\FormType\\FormTypeException' => __DIR__ . '/../..' . '/sources/Forms/FormType/FormTypeException.php',
'Combodo\\iTop\\Forms\\FormType\\Orm\\AttCodeGroupByType' => __DIR__ . '/../..' . '/sources/Forms/FormType/Orm/AttCodeGroupByType.php',
'Combodo\\iTop\\Forms\\FormType\\Orm\\Attribute\\ExternalKeyType' => __DIR__ . '/../..' . '/sources/Forms/FormType/Orm/Attribute/ExternalKeyType.php',
'Combodo\\iTop\\Forms\\FormType\\Orm\\QueryType' => __DIR__ . '/../..' . '/sources/Forms/FormType/Orm/QueryType.php',
'Combodo\\iTop\\Forms\\FormType\\Orm\\ValuesFromAttcodeType' => __DIR__ . '/../..' . '/sources/Forms/FormType/Orm/ValuesFromAttcodeType.php',
'Combodo\\iTop\\Forms\\Forms' => __DIR__ . '/../..' . '/sources/Forms/Forms.php',
'Combodo\\iTop\\Forms\\ResolvedFormType' => __DIR__ . '/../..' . '/sources/Forms/ResolvedFormType.php',
'Combodo\\iTop\\Forms\\ResolvedFormTypeFactory' => __DIR__ . '/../..' . '/sources/Forms/ResolvedFormTypeFactory.php',
'Combodo\\iTop\\Kernel' => __DIR__ . '/../..' . '/sources/Kernel.php',
'Combodo\\iTop\\PhpParser\\Evaluation\\PhpExpressionEvaluator' => __DIR__ . '/../..' . '/sources/PhpParser/Evaluation/PhpExpressionEvaluator.php',
'Combodo\\iTop\\Renderer\\BlockRenderer' => __DIR__ . '/../..' . '/sources/Renderer/BlockRenderer.php',
@@ -1242,7 +1195,6 @@ class ComposerStaticInit7f81b4a2a468a061c306af5e447a9a9f
'InputOutputTask' => __DIR__ . '/../..' . '/application/iotask.class.inc.php',
'IntervalExpression' => __DIR__ . '/../..' . '/core/oql/expression.class.inc.php',
'IntervalOqlExpression' => __DIR__ . '/../..' . '/core/oql/oqlquery.class.inc.php',
'IntlDateFormatter' => __DIR__ . '/..' . '/symfony/polyfill-intl-icu/Resources/stubs/IntlDateFormatter.php',
'Introspection' => __DIR__ . '/../..' . '/core/introspection.class.inc.php',
'InvalidConfigParamException' => __DIR__ . '/../..' . '/application/exceptions/InvalidConfigParamException.php',
'InvalidExternalKeyValueException' => __DIR__ . '/../..' . '/application/exceptions/InvalidExternalKeyValueException.php',
@@ -1284,7 +1236,6 @@ class ComposerStaticInit7f81b4a2a468a061c306af5e447a9a9f
'League\\OAuth2\\Client\\Tool\\RequiredParameterTrait' => __DIR__ . '/..' . '/league/oauth2-client/src/Tool/RequiredParameterTrait.php',
'ListExpression' => __DIR__ . '/../..' . '/core/oql/expression.class.inc.php',
'ListOqlExpression' => __DIR__ . '/../..' . '/core/oql/oqlquery.class.inc.php',
'Locale' => __DIR__ . '/..' . '/symfony/polyfill-intl-icu/Resources/stubs/Locale.php',
'LogAPI' => __DIR__ . '/../..' . '/core/log.class.inc.php',
'LogChannels' => __DIR__ . '/../..' . '/core/log.class.inc.php',
'LogFileNameBuilderFactory' => __DIR__ . '/../..' . '/core/log.class.inc.php',
@@ -1318,7 +1269,6 @@ class ComposerStaticInit7f81b4a2a468a061c306af5e447a9a9f
'NewsroomProviderBase' => __DIR__ . '/../..' . '/application/newsroomprovider.class.inc.php',
'Normalizer' => __DIR__ . '/..' . '/symfony/polyfill-intl-normalizer/Resources/stubs/Normalizer.php',
'NotYetEvaluatedExpression' => __DIR__ . '/../..' . '/core/oql/expression.class.inc.php',
'NumberFormatter' => __DIR__ . '/..' . '/symfony/polyfill-intl-icu/Resources/stubs/NumberFormatter.php',
'OQLActualClassTreeResolver' => __DIR__ . '/../..' . '/core/oqlactualclasstreeresolver.class.inc.php',
'OQLClassNode' => __DIR__ . '/../..' . '/core/oqlclassnode.class.inc.php',
'OQLClassTreeBuilder' => __DIR__ . '/../..' . '/core/oqlclasstreebuilder.class.inc.php',
@@ -2597,241 +2547,6 @@ class ComposerStaticInit7f81b4a2a468a061c306af5e447a9a9f
'Symfony\\Component\\Finder\\Iterator\\SortableIterator' => __DIR__ . '/..' . '/symfony/finder/Iterator/SortableIterator.php',
'Symfony\\Component\\Finder\\Iterator\\VcsIgnoredFilterIterator' => __DIR__ . '/..' . '/symfony/finder/Iterator/VcsIgnoredFilterIterator.php',
'Symfony\\Component\\Finder\\SplFileInfo' => __DIR__ . '/..' . '/symfony/finder/SplFileInfo.php',
'Symfony\\Component\\Form\\AbstractExtension' => __DIR__ . '/..' . '/symfony/form/AbstractExtension.php',
'Symfony\\Component\\Form\\AbstractRendererEngine' => __DIR__ . '/..' . '/symfony/form/AbstractRendererEngine.php',
'Symfony\\Component\\Form\\AbstractType' => __DIR__ . '/..' . '/symfony/form/AbstractType.php',
'Symfony\\Component\\Form\\AbstractTypeExtension' => __DIR__ . '/..' . '/symfony/form/AbstractTypeExtension.php',
'Symfony\\Component\\Form\\Button' => __DIR__ . '/..' . '/symfony/form/Button.php',
'Symfony\\Component\\Form\\ButtonBuilder' => __DIR__ . '/..' . '/symfony/form/ButtonBuilder.php',
'Symfony\\Component\\Form\\ButtonTypeInterface' => __DIR__ . '/..' . '/symfony/form/ButtonTypeInterface.php',
'Symfony\\Component\\Form\\CallbackTransformer' => __DIR__ . '/..' . '/symfony/form/CallbackTransformer.php',
'Symfony\\Component\\Form\\ChoiceList\\ArrayChoiceList' => __DIR__ . '/..' . '/symfony/form/ChoiceList/ArrayChoiceList.php',
'Symfony\\Component\\Form\\ChoiceList\\ChoiceList' => __DIR__ . '/..' . '/symfony/form/ChoiceList/ChoiceList.php',
'Symfony\\Component\\Form\\ChoiceList\\ChoiceListInterface' => __DIR__ . '/..' . '/symfony/form/ChoiceList/ChoiceListInterface.php',
'Symfony\\Component\\Form\\ChoiceList\\Factory\\Cache\\AbstractStaticOption' => __DIR__ . '/..' . '/symfony/form/ChoiceList/Factory/Cache/AbstractStaticOption.php',
'Symfony\\Component\\Form\\ChoiceList\\Factory\\Cache\\ChoiceAttr' => __DIR__ . '/..' . '/symfony/form/ChoiceList/Factory/Cache/ChoiceAttr.php',
'Symfony\\Component\\Form\\ChoiceList\\Factory\\Cache\\ChoiceFieldName' => __DIR__ . '/..' . '/symfony/form/ChoiceList/Factory/Cache/ChoiceFieldName.php',
'Symfony\\Component\\Form\\ChoiceList\\Factory\\Cache\\ChoiceFilter' => __DIR__ . '/..' . '/symfony/form/ChoiceList/Factory/Cache/ChoiceFilter.php',
'Symfony\\Component\\Form\\ChoiceList\\Factory\\Cache\\ChoiceLabel' => __DIR__ . '/..' . '/symfony/form/ChoiceList/Factory/Cache/ChoiceLabel.php',
'Symfony\\Component\\Form\\ChoiceList\\Factory\\Cache\\ChoiceLoader' => __DIR__ . '/..' . '/symfony/form/ChoiceList/Factory/Cache/ChoiceLoader.php',
'Symfony\\Component\\Form\\ChoiceList\\Factory\\Cache\\ChoiceTranslationParameters' => __DIR__ . '/..' . '/symfony/form/ChoiceList/Factory/Cache/ChoiceTranslationParameters.php',
'Symfony\\Component\\Form\\ChoiceList\\Factory\\Cache\\ChoiceValue' => __DIR__ . '/..' . '/symfony/form/ChoiceList/Factory/Cache/ChoiceValue.php',
'Symfony\\Component\\Form\\ChoiceList\\Factory\\Cache\\GroupBy' => __DIR__ . '/..' . '/symfony/form/ChoiceList/Factory/Cache/GroupBy.php',
'Symfony\\Component\\Form\\ChoiceList\\Factory\\Cache\\PreferredChoice' => __DIR__ . '/..' . '/symfony/form/ChoiceList/Factory/Cache/PreferredChoice.php',
'Symfony\\Component\\Form\\ChoiceList\\Factory\\CachingFactoryDecorator' => __DIR__ . '/..' . '/symfony/form/ChoiceList/Factory/CachingFactoryDecorator.php',
'Symfony\\Component\\Form\\ChoiceList\\Factory\\ChoiceListFactoryInterface' => __DIR__ . '/..' . '/symfony/form/ChoiceList/Factory/ChoiceListFactoryInterface.php',
'Symfony\\Component\\Form\\ChoiceList\\Factory\\DefaultChoiceListFactory' => __DIR__ . '/..' . '/symfony/form/ChoiceList/Factory/DefaultChoiceListFactory.php',
'Symfony\\Component\\Form\\ChoiceList\\Factory\\PropertyAccessDecorator' => __DIR__ . '/..' . '/symfony/form/ChoiceList/Factory/PropertyAccessDecorator.php',
'Symfony\\Component\\Form\\ChoiceList\\LazyChoiceList' => __DIR__ . '/..' . '/symfony/form/ChoiceList/LazyChoiceList.php',
'Symfony\\Component\\Form\\ChoiceList\\Loader\\AbstractChoiceLoader' => __DIR__ . '/..' . '/symfony/form/ChoiceList/Loader/AbstractChoiceLoader.php',
'Symfony\\Component\\Form\\ChoiceList\\Loader\\CallbackChoiceLoader' => __DIR__ . '/..' . '/symfony/form/ChoiceList/Loader/CallbackChoiceLoader.php',
'Symfony\\Component\\Form\\ChoiceList\\Loader\\ChoiceLoaderInterface' => __DIR__ . '/..' . '/symfony/form/ChoiceList/Loader/ChoiceLoaderInterface.php',
'Symfony\\Component\\Form\\ChoiceList\\Loader\\FilterChoiceLoaderDecorator' => __DIR__ . '/..' . '/symfony/form/ChoiceList/Loader/FilterChoiceLoaderDecorator.php',
'Symfony\\Component\\Form\\ChoiceList\\Loader\\IntlCallbackChoiceLoader' => __DIR__ . '/..' . '/symfony/form/ChoiceList/Loader/IntlCallbackChoiceLoader.php',
'Symfony\\Component\\Form\\ChoiceList\\View\\ChoiceGroupView' => __DIR__ . '/..' . '/symfony/form/ChoiceList/View/ChoiceGroupView.php',
'Symfony\\Component\\Form\\ChoiceList\\View\\ChoiceListView' => __DIR__ . '/..' . '/symfony/form/ChoiceList/View/ChoiceListView.php',
'Symfony\\Component\\Form\\ChoiceList\\View\\ChoiceView' => __DIR__ . '/..' . '/symfony/form/ChoiceList/View/ChoiceView.php',
'Symfony\\Component\\Form\\ClearableErrorsInterface' => __DIR__ . '/..' . '/symfony/form/ClearableErrorsInterface.php',
'Symfony\\Component\\Form\\ClickableInterface' => __DIR__ . '/..' . '/symfony/form/ClickableInterface.php',
'Symfony\\Component\\Form\\Command\\DebugCommand' => __DIR__ . '/..' . '/symfony/form/Command/DebugCommand.php',
'Symfony\\Component\\Form\\Console\\Descriptor\\Descriptor' => __DIR__ . '/..' . '/symfony/form/Console/Descriptor/Descriptor.php',
'Symfony\\Component\\Form\\Console\\Descriptor\\JsonDescriptor' => __DIR__ . '/..' . '/symfony/form/Console/Descriptor/JsonDescriptor.php',
'Symfony\\Component\\Form\\Console\\Descriptor\\TextDescriptor' => __DIR__ . '/..' . '/symfony/form/Console/Descriptor/TextDescriptor.php',
'Symfony\\Component\\Form\\Console\\Helper\\DescriptorHelper' => __DIR__ . '/..' . '/symfony/form/Console/Helper/DescriptorHelper.php',
'Symfony\\Component\\Form\\DataAccessorInterface' => __DIR__ . '/..' . '/symfony/form/DataAccessorInterface.php',
'Symfony\\Component\\Form\\DataMapperInterface' => __DIR__ . '/..' . '/symfony/form/DataMapperInterface.php',
'Symfony\\Component\\Form\\DataTransformerInterface' => __DIR__ . '/..' . '/symfony/form/DataTransformerInterface.php',
'Symfony\\Component\\Form\\DependencyInjection\\FormPass' => __DIR__ . '/..' . '/symfony/form/DependencyInjection/FormPass.php',
'Symfony\\Component\\Form\\Event\\PostSetDataEvent' => __DIR__ . '/..' . '/symfony/form/Event/PostSetDataEvent.php',
'Symfony\\Component\\Form\\Event\\PostSubmitEvent' => __DIR__ . '/..' . '/symfony/form/Event/PostSubmitEvent.php',
'Symfony\\Component\\Form\\Event\\PreSetDataEvent' => __DIR__ . '/..' . '/symfony/form/Event/PreSetDataEvent.php',
'Symfony\\Component\\Form\\Event\\PreSubmitEvent' => __DIR__ . '/..' . '/symfony/form/Event/PreSubmitEvent.php',
'Symfony\\Component\\Form\\Event\\SubmitEvent' => __DIR__ . '/..' . '/symfony/form/Event/SubmitEvent.php',
'Symfony\\Component\\Form\\Exception\\AccessException' => __DIR__ . '/..' . '/symfony/form/Exception/AccessException.php',
'Symfony\\Component\\Form\\Exception\\AlreadySubmittedException' => __DIR__ . '/..' . '/symfony/form/Exception/AlreadySubmittedException.php',
'Symfony\\Component\\Form\\Exception\\BadMethodCallException' => __DIR__ . '/..' . '/symfony/form/Exception/BadMethodCallException.php',
'Symfony\\Component\\Form\\Exception\\ErrorMappingException' => __DIR__ . '/..' . '/symfony/form/Exception/ErrorMappingException.php',
'Symfony\\Component\\Form\\Exception\\ExceptionInterface' => __DIR__ . '/..' . '/symfony/form/Exception/ExceptionInterface.php',
'Symfony\\Component\\Form\\Exception\\InvalidArgumentException' => __DIR__ . '/..' . '/symfony/form/Exception/InvalidArgumentException.php',
'Symfony\\Component\\Form\\Exception\\InvalidConfigurationException' => __DIR__ . '/..' . '/symfony/form/Exception/InvalidConfigurationException.php',
'Symfony\\Component\\Form\\Exception\\LogicException' => __DIR__ . '/..' . '/symfony/form/Exception/LogicException.php',
'Symfony\\Component\\Form\\Exception\\OutOfBoundsException' => __DIR__ . '/..' . '/symfony/form/Exception/OutOfBoundsException.php',
'Symfony\\Component\\Form\\Exception\\RuntimeException' => __DIR__ . '/..' . '/symfony/form/Exception/RuntimeException.php',
'Symfony\\Component\\Form\\Exception\\StringCastException' => __DIR__ . '/..' . '/symfony/form/Exception/StringCastException.php',
'Symfony\\Component\\Form\\Exception\\TransformationFailedException' => __DIR__ . '/..' . '/symfony/form/Exception/TransformationFailedException.php',
'Symfony\\Component\\Form\\Exception\\UnexpectedTypeException' => __DIR__ . '/..' . '/symfony/form/Exception/UnexpectedTypeException.php',
'Symfony\\Component\\Form\\Extension\\Core\\CoreExtension' => __DIR__ . '/..' . '/symfony/form/Extension/Core/CoreExtension.php',
'Symfony\\Component\\Form\\Extension\\Core\\DataAccessor\\CallbackAccessor' => __DIR__ . '/..' . '/symfony/form/Extension/Core/DataAccessor/CallbackAccessor.php',
'Symfony\\Component\\Form\\Extension\\Core\\DataAccessor\\ChainAccessor' => __DIR__ . '/..' . '/symfony/form/Extension/Core/DataAccessor/ChainAccessor.php',
'Symfony\\Component\\Form\\Extension\\Core\\DataAccessor\\PropertyPathAccessor' => __DIR__ . '/..' . '/symfony/form/Extension/Core/DataAccessor/PropertyPathAccessor.php',
'Symfony\\Component\\Form\\Extension\\Core\\DataMapper\\CheckboxListMapper' => __DIR__ . '/..' . '/symfony/form/Extension/Core/DataMapper/CheckboxListMapper.php',
'Symfony\\Component\\Form\\Extension\\Core\\DataMapper\\DataMapper' => __DIR__ . '/..' . '/symfony/form/Extension/Core/DataMapper/DataMapper.php',
'Symfony\\Component\\Form\\Extension\\Core\\DataMapper\\RadioListMapper' => __DIR__ . '/..' . '/symfony/form/Extension/Core/DataMapper/RadioListMapper.php',
'Symfony\\Component\\Form\\Extension\\Core\\DataTransformer\\ArrayToPartsTransformer' => __DIR__ . '/..' . '/symfony/form/Extension/Core/DataTransformer/ArrayToPartsTransformer.php',
'Symfony\\Component\\Form\\Extension\\Core\\DataTransformer\\BaseDateTimeTransformer' => __DIR__ . '/..' . '/symfony/form/Extension/Core/DataTransformer/BaseDateTimeTransformer.php',
'Symfony\\Component\\Form\\Extension\\Core\\DataTransformer\\BooleanToStringTransformer' => __DIR__ . '/..' . '/symfony/form/Extension/Core/DataTransformer/BooleanToStringTransformer.php',
'Symfony\\Component\\Form\\Extension\\Core\\DataTransformer\\ChoiceToValueTransformer' => __DIR__ . '/..' . '/symfony/form/Extension/Core/DataTransformer/ChoiceToValueTransformer.php',
'Symfony\\Component\\Form\\Extension\\Core\\DataTransformer\\ChoicesToValuesTransformer' => __DIR__ . '/..' . '/symfony/form/Extension/Core/DataTransformer/ChoicesToValuesTransformer.php',
'Symfony\\Component\\Form\\Extension\\Core\\DataTransformer\\DataTransformerChain' => __DIR__ . '/..' . '/symfony/form/Extension/Core/DataTransformer/DataTransformerChain.php',
'Symfony\\Component\\Form\\Extension\\Core\\DataTransformer\\DateIntervalToArrayTransformer' => __DIR__ . '/..' . '/symfony/form/Extension/Core/DataTransformer/DateIntervalToArrayTransformer.php',
'Symfony\\Component\\Form\\Extension\\Core\\DataTransformer\\DateIntervalToStringTransformer' => __DIR__ . '/..' . '/symfony/form/Extension/Core/DataTransformer/DateIntervalToStringTransformer.php',
'Symfony\\Component\\Form\\Extension\\Core\\DataTransformer\\DateTimeImmutableToDateTimeTransformer' => __DIR__ . '/..' . '/symfony/form/Extension/Core/DataTransformer/DateTimeImmutableToDateTimeTransformer.php',
'Symfony\\Component\\Form\\Extension\\Core\\DataTransformer\\DateTimeToArrayTransformer' => __DIR__ . '/..' . '/symfony/form/Extension/Core/DataTransformer/DateTimeToArrayTransformer.php',
'Symfony\\Component\\Form\\Extension\\Core\\DataTransformer\\DateTimeToHtml5LocalDateTimeTransformer' => __DIR__ . '/..' . '/symfony/form/Extension/Core/DataTransformer/DateTimeToHtml5LocalDateTimeTransformer.php',
'Symfony\\Component\\Form\\Extension\\Core\\DataTransformer\\DateTimeToLocalizedStringTransformer' => __DIR__ . '/..' . '/symfony/form/Extension/Core/DataTransformer/DateTimeToLocalizedStringTransformer.php',
'Symfony\\Component\\Form\\Extension\\Core\\DataTransformer\\DateTimeToRfc3339Transformer' => __DIR__ . '/..' . '/symfony/form/Extension/Core/DataTransformer/DateTimeToRfc3339Transformer.php',
'Symfony\\Component\\Form\\Extension\\Core\\DataTransformer\\DateTimeToStringTransformer' => __DIR__ . '/..' . '/symfony/form/Extension/Core/DataTransformer/DateTimeToStringTransformer.php',
'Symfony\\Component\\Form\\Extension\\Core\\DataTransformer\\DateTimeToTimestampTransformer' => __DIR__ . '/..' . '/symfony/form/Extension/Core/DataTransformer/DateTimeToTimestampTransformer.php',
'Symfony\\Component\\Form\\Extension\\Core\\DataTransformer\\DateTimeZoneToStringTransformer' => __DIR__ . '/..' . '/symfony/form/Extension/Core/DataTransformer/DateTimeZoneToStringTransformer.php',
'Symfony\\Component\\Form\\Extension\\Core\\DataTransformer\\IntegerToLocalizedStringTransformer' => __DIR__ . '/..' . '/symfony/form/Extension/Core/DataTransformer/IntegerToLocalizedStringTransformer.php',
'Symfony\\Component\\Form\\Extension\\Core\\DataTransformer\\IntlTimeZoneToStringTransformer' => __DIR__ . '/..' . '/symfony/form/Extension/Core/DataTransformer/IntlTimeZoneToStringTransformer.php',
'Symfony\\Component\\Form\\Extension\\Core\\DataTransformer\\MoneyToLocalizedStringTransformer' => __DIR__ . '/..' . '/symfony/form/Extension/Core/DataTransformer/MoneyToLocalizedStringTransformer.php',
'Symfony\\Component\\Form\\Extension\\Core\\DataTransformer\\NumberToLocalizedStringTransformer' => __DIR__ . '/..' . '/symfony/form/Extension/Core/DataTransformer/NumberToLocalizedStringTransformer.php',
'Symfony\\Component\\Form\\Extension\\Core\\DataTransformer\\PercentToLocalizedStringTransformer' => __DIR__ . '/..' . '/symfony/form/Extension/Core/DataTransformer/PercentToLocalizedStringTransformer.php',
'Symfony\\Component\\Form\\Extension\\Core\\DataTransformer\\StringToFloatTransformer' => __DIR__ . '/..' . '/symfony/form/Extension/Core/DataTransformer/StringToFloatTransformer.php',
'Symfony\\Component\\Form\\Extension\\Core\\DataTransformer\\UlidToStringTransformer' => __DIR__ . '/..' . '/symfony/form/Extension/Core/DataTransformer/UlidToStringTransformer.php',
'Symfony\\Component\\Form\\Extension\\Core\\DataTransformer\\UuidToStringTransformer' => __DIR__ . '/..' . '/symfony/form/Extension/Core/DataTransformer/UuidToStringTransformer.php',
'Symfony\\Component\\Form\\Extension\\Core\\DataTransformer\\ValueToDuplicatesTransformer' => __DIR__ . '/..' . '/symfony/form/Extension/Core/DataTransformer/ValueToDuplicatesTransformer.php',
'Symfony\\Component\\Form\\Extension\\Core\\DataTransformer\\WeekToArrayTransformer' => __DIR__ . '/..' . '/symfony/form/Extension/Core/DataTransformer/WeekToArrayTransformer.php',
'Symfony\\Component\\Form\\Extension\\Core\\EventListener\\FixUrlProtocolListener' => __DIR__ . '/..' . '/symfony/form/Extension/Core/EventListener/FixUrlProtocolListener.php',
'Symfony\\Component\\Form\\Extension\\Core\\EventListener\\MergeCollectionListener' => __DIR__ . '/..' . '/symfony/form/Extension/Core/EventListener/MergeCollectionListener.php',
'Symfony\\Component\\Form\\Extension\\Core\\EventListener\\ResizeFormListener' => __DIR__ . '/..' . '/symfony/form/Extension/Core/EventListener/ResizeFormListener.php',
'Symfony\\Component\\Form\\Extension\\Core\\EventListener\\TransformationFailureListener' => __DIR__ . '/..' . '/symfony/form/Extension/Core/EventListener/TransformationFailureListener.php',
'Symfony\\Component\\Form\\Extension\\Core\\EventListener\\TrimListener' => __DIR__ . '/..' . '/symfony/form/Extension/Core/EventListener/TrimListener.php',
'Symfony\\Component\\Form\\Extension\\Core\\Type\\BaseType' => __DIR__ . '/..' . '/symfony/form/Extension/Core/Type/BaseType.php',
'Symfony\\Component\\Form\\Extension\\Core\\Type\\BirthdayType' => __DIR__ . '/..' . '/symfony/form/Extension/Core/Type/BirthdayType.php',
'Symfony\\Component\\Form\\Extension\\Core\\Type\\ButtonType' => __DIR__ . '/..' . '/symfony/form/Extension/Core/Type/ButtonType.php',
'Symfony\\Component\\Form\\Extension\\Core\\Type\\CheckboxType' => __DIR__ . '/..' . '/symfony/form/Extension/Core/Type/CheckboxType.php',
'Symfony\\Component\\Form\\Extension\\Core\\Type\\ChoiceType' => __DIR__ . '/..' . '/symfony/form/Extension/Core/Type/ChoiceType.php',
'Symfony\\Component\\Form\\Extension\\Core\\Type\\CollectionType' => __DIR__ . '/..' . '/symfony/form/Extension/Core/Type/CollectionType.php',
'Symfony\\Component\\Form\\Extension\\Core\\Type\\ColorType' => __DIR__ . '/..' . '/symfony/form/Extension/Core/Type/ColorType.php',
'Symfony\\Component\\Form\\Extension\\Core\\Type\\CountryType' => __DIR__ . '/..' . '/symfony/form/Extension/Core/Type/CountryType.php',
'Symfony\\Component\\Form\\Extension\\Core\\Type\\CurrencyType' => __DIR__ . '/..' . '/symfony/form/Extension/Core/Type/CurrencyType.php',
'Symfony\\Component\\Form\\Extension\\Core\\Type\\DateIntervalType' => __DIR__ . '/..' . '/symfony/form/Extension/Core/Type/DateIntervalType.php',
'Symfony\\Component\\Form\\Extension\\Core\\Type\\DateTimeType' => __DIR__ . '/..' . '/symfony/form/Extension/Core/Type/DateTimeType.php',
'Symfony\\Component\\Form\\Extension\\Core\\Type\\DateType' => __DIR__ . '/..' . '/symfony/form/Extension/Core/Type/DateType.php',
'Symfony\\Component\\Form\\Extension\\Core\\Type\\EmailType' => __DIR__ . '/..' . '/symfony/form/Extension/Core/Type/EmailType.php',
'Symfony\\Component\\Form\\Extension\\Core\\Type\\EnumType' => __DIR__ . '/..' . '/symfony/form/Extension/Core/Type/EnumType.php',
'Symfony\\Component\\Form\\Extension\\Core\\Type\\FileType' => __DIR__ . '/..' . '/symfony/form/Extension/Core/Type/FileType.php',
'Symfony\\Component\\Form\\Extension\\Core\\Type\\FormType' => __DIR__ . '/..' . '/symfony/form/Extension/Core/Type/FormType.php',
'Symfony\\Component\\Form\\Extension\\Core\\Type\\HiddenType' => __DIR__ . '/..' . '/symfony/form/Extension/Core/Type/HiddenType.php',
'Symfony\\Component\\Form\\Extension\\Core\\Type\\IntegerType' => __DIR__ . '/..' . '/symfony/form/Extension/Core/Type/IntegerType.php',
'Symfony\\Component\\Form\\Extension\\Core\\Type\\LanguageType' => __DIR__ . '/..' . '/symfony/form/Extension/Core/Type/LanguageType.php',
'Symfony\\Component\\Form\\Extension\\Core\\Type\\LocaleType' => __DIR__ . '/..' . '/symfony/form/Extension/Core/Type/LocaleType.php',
'Symfony\\Component\\Form\\Extension\\Core\\Type\\MoneyType' => __DIR__ . '/..' . '/symfony/form/Extension/Core/Type/MoneyType.php',
'Symfony\\Component\\Form\\Extension\\Core\\Type\\NumberType' => __DIR__ . '/..' . '/symfony/form/Extension/Core/Type/NumberType.php',
'Symfony\\Component\\Form\\Extension\\Core\\Type\\PasswordType' => __DIR__ . '/..' . '/symfony/form/Extension/Core/Type/PasswordType.php',
'Symfony\\Component\\Form\\Extension\\Core\\Type\\PercentType' => __DIR__ . '/..' . '/symfony/form/Extension/Core/Type/PercentType.php',
'Symfony\\Component\\Form\\Extension\\Core\\Type\\RadioType' => __DIR__ . '/..' . '/symfony/form/Extension/Core/Type/RadioType.php',
'Symfony\\Component\\Form\\Extension\\Core\\Type\\RangeType' => __DIR__ . '/..' . '/symfony/form/Extension/Core/Type/RangeType.php',
'Symfony\\Component\\Form\\Extension\\Core\\Type\\RepeatedType' => __DIR__ . '/..' . '/symfony/form/Extension/Core/Type/RepeatedType.php',
'Symfony\\Component\\Form\\Extension\\Core\\Type\\ResetType' => __DIR__ . '/..' . '/symfony/form/Extension/Core/Type/ResetType.php',
'Symfony\\Component\\Form\\Extension\\Core\\Type\\SearchType' => __DIR__ . '/..' . '/symfony/form/Extension/Core/Type/SearchType.php',
'Symfony\\Component\\Form\\Extension\\Core\\Type\\SubmitType' => __DIR__ . '/..' . '/symfony/form/Extension/Core/Type/SubmitType.php',
'Symfony\\Component\\Form\\Extension\\Core\\Type\\TelType' => __DIR__ . '/..' . '/symfony/form/Extension/Core/Type/TelType.php',
'Symfony\\Component\\Form\\Extension\\Core\\Type\\TextType' => __DIR__ . '/..' . '/symfony/form/Extension/Core/Type/TextType.php',
'Symfony\\Component\\Form\\Extension\\Core\\Type\\TextareaType' => __DIR__ . '/..' . '/symfony/form/Extension/Core/Type/TextareaType.php',
'Symfony\\Component\\Form\\Extension\\Core\\Type\\TimeType' => __DIR__ . '/..' . '/symfony/form/Extension/Core/Type/TimeType.php',
'Symfony\\Component\\Form\\Extension\\Core\\Type\\TimezoneType' => __DIR__ . '/..' . '/symfony/form/Extension/Core/Type/TimezoneType.php',
'Symfony\\Component\\Form\\Extension\\Core\\Type\\TransformationFailureExtension' => __DIR__ . '/..' . '/symfony/form/Extension/Core/Type/TransformationFailureExtension.php',
'Symfony\\Component\\Form\\Extension\\Core\\Type\\UlidType' => __DIR__ . '/..' . '/symfony/form/Extension/Core/Type/UlidType.php',
'Symfony\\Component\\Form\\Extension\\Core\\Type\\UrlType' => __DIR__ . '/..' . '/symfony/form/Extension/Core/Type/UrlType.php',
'Symfony\\Component\\Form\\Extension\\Core\\Type\\UuidType' => __DIR__ . '/..' . '/symfony/form/Extension/Core/Type/UuidType.php',
'Symfony\\Component\\Form\\Extension\\Core\\Type\\WeekType' => __DIR__ . '/..' . '/symfony/form/Extension/Core/Type/WeekType.php',
'Symfony\\Component\\Form\\Extension\\Csrf\\CsrfExtension' => __DIR__ . '/..' . '/symfony/form/Extension/Csrf/CsrfExtension.php',
'Symfony\\Component\\Form\\Extension\\Csrf\\EventListener\\CsrfValidationListener' => __DIR__ . '/..' . '/symfony/form/Extension/Csrf/EventListener/CsrfValidationListener.php',
'Symfony\\Component\\Form\\Extension\\Csrf\\Type\\FormTypeCsrfExtension' => __DIR__ . '/..' . '/symfony/form/Extension/Csrf/Type/FormTypeCsrfExtension.php',
'Symfony\\Component\\Form\\Extension\\DataCollector\\DataCollectorExtension' => __DIR__ . '/..' . '/symfony/form/Extension/DataCollector/DataCollectorExtension.php',
'Symfony\\Component\\Form\\Extension\\DataCollector\\EventListener\\DataCollectorListener' => __DIR__ . '/..' . '/symfony/form/Extension/DataCollector/EventListener/DataCollectorListener.php',
'Symfony\\Component\\Form\\Extension\\DataCollector\\FormDataCollector' => __DIR__ . '/..' . '/symfony/form/Extension/DataCollector/FormDataCollector.php',
'Symfony\\Component\\Form\\Extension\\DataCollector\\FormDataCollectorInterface' => __DIR__ . '/..' . '/symfony/form/Extension/DataCollector/FormDataCollectorInterface.php',
'Symfony\\Component\\Form\\Extension\\DataCollector\\FormDataExtractor' => __DIR__ . '/..' . '/symfony/form/Extension/DataCollector/FormDataExtractor.php',
'Symfony\\Component\\Form\\Extension\\DataCollector\\FormDataExtractorInterface' => __DIR__ . '/..' . '/symfony/form/Extension/DataCollector/FormDataExtractorInterface.php',
'Symfony\\Component\\Form\\Extension\\DataCollector\\Proxy\\ResolvedTypeDataCollectorProxy' => __DIR__ . '/..' . '/symfony/form/Extension/DataCollector/Proxy/ResolvedTypeDataCollectorProxy.php',
'Symfony\\Component\\Form\\Extension\\DataCollector\\Proxy\\ResolvedTypeFactoryDataCollectorProxy' => __DIR__ . '/..' . '/symfony/form/Extension/DataCollector/Proxy/ResolvedTypeFactoryDataCollectorProxy.php',
'Symfony\\Component\\Form\\Extension\\DataCollector\\Type\\DataCollectorTypeExtension' => __DIR__ . '/..' . '/symfony/form/Extension/DataCollector/Type/DataCollectorTypeExtension.php',
'Symfony\\Component\\Form\\Extension\\DependencyInjection\\DependencyInjectionExtension' => __DIR__ . '/..' . '/symfony/form/Extension/DependencyInjection/DependencyInjectionExtension.php',
'Symfony\\Component\\Form\\Extension\\HtmlSanitizer\\HtmlSanitizerExtension' => __DIR__ . '/..' . '/symfony/form/Extension/HtmlSanitizer/HtmlSanitizerExtension.php',
'Symfony\\Component\\Form\\Extension\\HtmlSanitizer\\Type\\TextTypeHtmlSanitizerExtension' => __DIR__ . '/..' . '/symfony/form/Extension/HtmlSanitizer/Type/TextTypeHtmlSanitizerExtension.php',
'Symfony\\Component\\Form\\Extension\\HttpFoundation\\HttpFoundationExtension' => __DIR__ . '/..' . '/symfony/form/Extension/HttpFoundation/HttpFoundationExtension.php',
'Symfony\\Component\\Form\\Extension\\HttpFoundation\\HttpFoundationRequestHandler' => __DIR__ . '/..' . '/symfony/form/Extension/HttpFoundation/HttpFoundationRequestHandler.php',
'Symfony\\Component\\Form\\Extension\\HttpFoundation\\Type\\FormTypeHttpFoundationExtension' => __DIR__ . '/..' . '/symfony/form/Extension/HttpFoundation/Type/FormTypeHttpFoundationExtension.php',
'Symfony\\Component\\Form\\Extension\\PasswordHasher\\EventListener\\PasswordHasherListener' => __DIR__ . '/..' . '/symfony/form/Extension/PasswordHasher/EventListener/PasswordHasherListener.php',
'Symfony\\Component\\Form\\Extension\\PasswordHasher\\PasswordHasherExtension' => __DIR__ . '/..' . '/symfony/form/Extension/PasswordHasher/PasswordHasherExtension.php',
'Symfony\\Component\\Form\\Extension\\PasswordHasher\\Type\\FormTypePasswordHasherExtension' => __DIR__ . '/..' . '/symfony/form/Extension/PasswordHasher/Type/FormTypePasswordHasherExtension.php',
'Symfony\\Component\\Form\\Extension\\PasswordHasher\\Type\\PasswordTypePasswordHasherExtension' => __DIR__ . '/..' . '/symfony/form/Extension/PasswordHasher/Type/PasswordTypePasswordHasherExtension.php',
'Symfony\\Component\\Form\\Extension\\Validator\\Constraints\\Form' => __DIR__ . '/..' . '/symfony/form/Extension/Validator/Constraints/Form.php',
'Symfony\\Component\\Form\\Extension\\Validator\\Constraints\\FormValidator' => __DIR__ . '/..' . '/symfony/form/Extension/Validator/Constraints/FormValidator.php',
'Symfony\\Component\\Form\\Extension\\Validator\\EventListener\\ValidationListener' => __DIR__ . '/..' . '/symfony/form/Extension/Validator/EventListener/ValidationListener.php',
'Symfony\\Component\\Form\\Extension\\Validator\\Type\\BaseValidatorExtension' => __DIR__ . '/..' . '/symfony/form/Extension/Validator/Type/BaseValidatorExtension.php',
'Symfony\\Component\\Form\\Extension\\Validator\\Type\\FormTypeValidatorExtension' => __DIR__ . '/..' . '/symfony/form/Extension/Validator/Type/FormTypeValidatorExtension.php',
'Symfony\\Component\\Form\\Extension\\Validator\\Type\\RepeatedTypeValidatorExtension' => __DIR__ . '/..' . '/symfony/form/Extension/Validator/Type/RepeatedTypeValidatorExtension.php',
'Symfony\\Component\\Form\\Extension\\Validator\\Type\\SubmitTypeValidatorExtension' => __DIR__ . '/..' . '/symfony/form/Extension/Validator/Type/SubmitTypeValidatorExtension.php',
'Symfony\\Component\\Form\\Extension\\Validator\\Type\\UploadValidatorExtension' => __DIR__ . '/..' . '/symfony/form/Extension/Validator/Type/UploadValidatorExtension.php',
'Symfony\\Component\\Form\\Extension\\Validator\\ValidatorExtension' => __DIR__ . '/..' . '/symfony/form/Extension/Validator/ValidatorExtension.php',
'Symfony\\Component\\Form\\Extension\\Validator\\ValidatorTypeGuesser' => __DIR__ . '/..' . '/symfony/form/Extension/Validator/ValidatorTypeGuesser.php',
'Symfony\\Component\\Form\\Extension\\Validator\\ViolationMapper\\MappingRule' => __DIR__ . '/..' . '/symfony/form/Extension/Validator/ViolationMapper/MappingRule.php',
'Symfony\\Component\\Form\\Extension\\Validator\\ViolationMapper\\RelativePath' => __DIR__ . '/..' . '/symfony/form/Extension/Validator/ViolationMapper/RelativePath.php',
'Symfony\\Component\\Form\\Extension\\Validator\\ViolationMapper\\ViolationMapper' => __DIR__ . '/..' . '/symfony/form/Extension/Validator/ViolationMapper/ViolationMapper.php',
'Symfony\\Component\\Form\\Extension\\Validator\\ViolationMapper\\ViolationMapperInterface' => __DIR__ . '/..' . '/symfony/form/Extension/Validator/ViolationMapper/ViolationMapperInterface.php',
'Symfony\\Component\\Form\\Extension\\Validator\\ViolationMapper\\ViolationPath' => __DIR__ . '/..' . '/symfony/form/Extension/Validator/ViolationMapper/ViolationPath.php',
'Symfony\\Component\\Form\\Extension\\Validator\\ViolationMapper\\ViolationPathIterator' => __DIR__ . '/..' . '/symfony/form/Extension/Validator/ViolationMapper/ViolationPathIterator.php',
'Symfony\\Component\\Form\\FileUploadError' => __DIR__ . '/..' . '/symfony/form/FileUploadError.php',
'Symfony\\Component\\Form\\Form' => __DIR__ . '/..' . '/symfony/form/Form.php',
'Symfony\\Component\\Form\\FormBuilder' => __DIR__ . '/..' . '/symfony/form/FormBuilder.php',
'Symfony\\Component\\Form\\FormBuilderInterface' => __DIR__ . '/..' . '/symfony/form/FormBuilderInterface.php',
'Symfony\\Component\\Form\\FormConfigBuilder' => __DIR__ . '/..' . '/symfony/form/FormConfigBuilder.php',
'Symfony\\Component\\Form\\FormConfigBuilderInterface' => __DIR__ . '/..' . '/symfony/form/FormConfigBuilderInterface.php',
'Symfony\\Component\\Form\\FormConfigInterface' => __DIR__ . '/..' . '/symfony/form/FormConfigInterface.php',
'Symfony\\Component\\Form\\FormError' => __DIR__ . '/..' . '/symfony/form/FormError.php',
'Symfony\\Component\\Form\\FormErrorIterator' => __DIR__ . '/..' . '/symfony/form/FormErrorIterator.php',
'Symfony\\Component\\Form\\FormEvent' => __DIR__ . '/..' . '/symfony/form/FormEvent.php',
'Symfony\\Component\\Form\\FormEvents' => __DIR__ . '/..' . '/symfony/form/FormEvents.php',
'Symfony\\Component\\Form\\FormExtensionInterface' => __DIR__ . '/..' . '/symfony/form/FormExtensionInterface.php',
'Symfony\\Component\\Form\\FormFactory' => __DIR__ . '/..' . '/symfony/form/FormFactory.php',
'Symfony\\Component\\Form\\FormFactoryBuilder' => __DIR__ . '/..' . '/symfony/form/FormFactoryBuilder.php',
'Symfony\\Component\\Form\\FormFactoryBuilderInterface' => __DIR__ . '/..' . '/symfony/form/FormFactoryBuilderInterface.php',
'Symfony\\Component\\Form\\FormFactoryInterface' => __DIR__ . '/..' . '/symfony/form/FormFactoryInterface.php',
'Symfony\\Component\\Form\\FormInterface' => __DIR__ . '/..' . '/symfony/form/FormInterface.php',
'Symfony\\Component\\Form\\FormRegistry' => __DIR__ . '/..' . '/symfony/form/FormRegistry.php',
'Symfony\\Component\\Form\\FormRegistryInterface' => __DIR__ . '/..' . '/symfony/form/FormRegistryInterface.php',
'Symfony\\Component\\Form\\FormRenderer' => __DIR__ . '/..' . '/symfony/form/FormRenderer.php',
'Symfony\\Component\\Form\\FormRendererEngineInterface' => __DIR__ . '/..' . '/symfony/form/FormRendererEngineInterface.php',
'Symfony\\Component\\Form\\FormRendererInterface' => __DIR__ . '/..' . '/symfony/form/FormRendererInterface.php',
'Symfony\\Component\\Form\\FormTypeExtensionInterface' => __DIR__ . '/..' . '/symfony/form/FormTypeExtensionInterface.php',
'Symfony\\Component\\Form\\FormTypeGuesserChain' => __DIR__ . '/..' . '/symfony/form/FormTypeGuesserChain.php',
'Symfony\\Component\\Form\\FormTypeGuesserInterface' => __DIR__ . '/..' . '/symfony/form/FormTypeGuesserInterface.php',
'Symfony\\Component\\Form\\FormTypeInterface' => __DIR__ . '/..' . '/symfony/form/FormTypeInterface.php',
'Symfony\\Component\\Form\\FormView' => __DIR__ . '/..' . '/symfony/form/FormView.php',
'Symfony\\Component\\Form\\Forms' => __DIR__ . '/..' . '/symfony/form/Forms.php',
'Symfony\\Component\\Form\\Guess\\Guess' => __DIR__ . '/..' . '/symfony/form/Guess/Guess.php',
'Symfony\\Component\\Form\\Guess\\TypeGuess' => __DIR__ . '/..' . '/symfony/form/Guess/TypeGuess.php',
'Symfony\\Component\\Form\\Guess\\ValueGuess' => __DIR__ . '/..' . '/symfony/form/Guess/ValueGuess.php',
'Symfony\\Component\\Form\\NativeRequestHandler' => __DIR__ . '/..' . '/symfony/form/NativeRequestHandler.php',
'Symfony\\Component\\Form\\PreloadedExtension' => __DIR__ . '/..' . '/symfony/form/PreloadedExtension.php',
'Symfony\\Component\\Form\\RequestHandlerInterface' => __DIR__ . '/..' . '/symfony/form/RequestHandlerInterface.php',
'Symfony\\Component\\Form\\ResolvedFormType' => __DIR__ . '/..' . '/symfony/form/ResolvedFormType.php',
'Symfony\\Component\\Form\\ResolvedFormTypeFactory' => __DIR__ . '/..' . '/symfony/form/ResolvedFormTypeFactory.php',
'Symfony\\Component\\Form\\ResolvedFormTypeFactoryInterface' => __DIR__ . '/..' . '/symfony/form/ResolvedFormTypeFactoryInterface.php',
'Symfony\\Component\\Form\\ResolvedFormTypeInterface' => __DIR__ . '/..' . '/symfony/form/ResolvedFormTypeInterface.php',
'Symfony\\Component\\Form\\ReversedTransformer' => __DIR__ . '/..' . '/symfony/form/ReversedTransformer.php',
'Symfony\\Component\\Form\\SubmitButton' => __DIR__ . '/..' . '/symfony/form/SubmitButton.php',
'Symfony\\Component\\Form\\SubmitButtonBuilder' => __DIR__ . '/..' . '/symfony/form/SubmitButtonBuilder.php',
'Symfony\\Component\\Form\\SubmitButtonTypeInterface' => __DIR__ . '/..' . '/symfony/form/SubmitButtonTypeInterface.php',
'Symfony\\Component\\Form\\Test\\FormBuilderInterface' => __DIR__ . '/..' . '/symfony/form/Test/FormBuilderInterface.php',
'Symfony\\Component\\Form\\Test\\FormIntegrationTestCase' => __DIR__ . '/..' . '/symfony/form/Test/FormIntegrationTestCase.php',
'Symfony\\Component\\Form\\Test\\FormInterface' => __DIR__ . '/..' . '/symfony/form/Test/FormInterface.php',
'Symfony\\Component\\Form\\Test\\FormPerformanceTestCase' => __DIR__ . '/..' . '/symfony/form/Test/FormPerformanceTestCase.php',
'Symfony\\Component\\Form\\Test\\Traits\\RunTestTrait' => __DIR__ . '/..' . '/symfony/form/Test/Traits/RunTestTrait.php',
'Symfony\\Component\\Form\\Test\\Traits\\ValidatorExtensionTrait' => __DIR__ . '/..' . '/symfony/form/Test/Traits/ValidatorExtensionTrait.php',
'Symfony\\Component\\Form\\Test\\TypeTestCase' => __DIR__ . '/..' . '/symfony/form/Test/TypeTestCase.php',
'Symfony\\Component\\Form\\Util\\FormUtil' => __DIR__ . '/..' . '/symfony/form/Util/FormUtil.php',
'Symfony\\Component\\Form\\Util\\InheritDataAwareIterator' => __DIR__ . '/..' . '/symfony/form/Util/InheritDataAwareIterator.php',
'Symfony\\Component\\Form\\Util\\OptionsResolverWrapper' => __DIR__ . '/..' . '/symfony/form/Util/OptionsResolverWrapper.php',
'Symfony\\Component\\Form\\Util\\OrderedHashMap' => __DIR__ . '/..' . '/symfony/form/Util/OrderedHashMap.php',
'Symfony\\Component\\Form\\Util\\OrderedHashMapIterator' => __DIR__ . '/..' . '/symfony/form/Util/OrderedHashMapIterator.php',
'Symfony\\Component\\Form\\Util\\ServerParams' => __DIR__ . '/..' . '/symfony/form/Util/ServerParams.php',
'Symfony\\Component\\Form\\Util\\StringUtil' => __DIR__ . '/..' . '/symfony/form/Util/StringUtil.php',
'Symfony\\Component\\HttpFoundation\\AcceptHeader' => __DIR__ . '/..' . '/symfony/http-foundation/AcceptHeader.php',
'Symfony\\Component\\HttpFoundation\\AcceptHeaderItem' => __DIR__ . '/..' . '/symfony/http-foundation/AcceptHeaderItem.php',
'Symfony\\Component\\HttpFoundation\\BinaryFileResponse' => __DIR__ . '/..' . '/symfony/http-foundation/BinaryFileResponse.php',
@@ -3212,63 +2927,6 @@ class ComposerStaticInit7f81b4a2a468a061c306af5e447a9a9f
'Symfony\\Component\\Mime\\Part\\SMimePart' => __DIR__ . '/..' . '/symfony/mime/Part/SMimePart.php',
'Symfony\\Component\\Mime\\Part\\TextPart' => __DIR__ . '/..' . '/symfony/mime/Part/TextPart.php',
'Symfony\\Component\\Mime\\RawMessage' => __DIR__ . '/..' . '/symfony/mime/RawMessage.php',
'Symfony\\Component\\OptionsResolver\\Debug\\OptionsResolverIntrospector' => __DIR__ . '/..' . '/symfony/options-resolver/Debug/OptionsResolverIntrospector.php',
'Symfony\\Component\\OptionsResolver\\Exception\\AccessException' => __DIR__ . '/..' . '/symfony/options-resolver/Exception/AccessException.php',
'Symfony\\Component\\OptionsResolver\\Exception\\ExceptionInterface' => __DIR__ . '/..' . '/symfony/options-resolver/Exception/ExceptionInterface.php',
'Symfony\\Component\\OptionsResolver\\Exception\\InvalidArgumentException' => __DIR__ . '/..' . '/symfony/options-resolver/Exception/InvalidArgumentException.php',
'Symfony\\Component\\OptionsResolver\\Exception\\InvalidOptionsException' => __DIR__ . '/..' . '/symfony/options-resolver/Exception/InvalidOptionsException.php',
'Symfony\\Component\\OptionsResolver\\Exception\\MissingOptionsException' => __DIR__ . '/..' . '/symfony/options-resolver/Exception/MissingOptionsException.php',
'Symfony\\Component\\OptionsResolver\\Exception\\NoConfigurationException' => __DIR__ . '/..' . '/symfony/options-resolver/Exception/NoConfigurationException.php',
'Symfony\\Component\\OptionsResolver\\Exception\\NoSuchOptionException' => __DIR__ . '/..' . '/symfony/options-resolver/Exception/NoSuchOptionException.php',
'Symfony\\Component\\OptionsResolver\\Exception\\OptionDefinitionException' => __DIR__ . '/..' . '/symfony/options-resolver/Exception/OptionDefinitionException.php',
'Symfony\\Component\\OptionsResolver\\Exception\\UndefinedOptionsException' => __DIR__ . '/..' . '/symfony/options-resolver/Exception/UndefinedOptionsException.php',
'Symfony\\Component\\OptionsResolver\\OptionConfigurator' => __DIR__ . '/..' . '/symfony/options-resolver/OptionConfigurator.php',
'Symfony\\Component\\OptionsResolver\\Options' => __DIR__ . '/..' . '/symfony/options-resolver/Options.php',
'Symfony\\Component\\OptionsResolver\\OptionsResolver' => __DIR__ . '/..' . '/symfony/options-resolver/OptionsResolver.php',
'Symfony\\Component\\PropertyAccess\\Exception\\AccessException' => __DIR__ . '/..' . '/symfony/property-access/Exception/AccessException.php',
'Symfony\\Component\\PropertyAccess\\Exception\\ExceptionInterface' => __DIR__ . '/..' . '/symfony/property-access/Exception/ExceptionInterface.php',
'Symfony\\Component\\PropertyAccess\\Exception\\InvalidArgumentException' => __DIR__ . '/..' . '/symfony/property-access/Exception/InvalidArgumentException.php',
'Symfony\\Component\\PropertyAccess\\Exception\\InvalidPropertyPathException' => __DIR__ . '/..' . '/symfony/property-access/Exception/InvalidPropertyPathException.php',
'Symfony\\Component\\PropertyAccess\\Exception\\NoSuchIndexException' => __DIR__ . '/..' . '/symfony/property-access/Exception/NoSuchIndexException.php',
'Symfony\\Component\\PropertyAccess\\Exception\\NoSuchPropertyException' => __DIR__ . '/..' . '/symfony/property-access/Exception/NoSuchPropertyException.php',
'Symfony\\Component\\PropertyAccess\\Exception\\OutOfBoundsException' => __DIR__ . '/..' . '/symfony/property-access/Exception/OutOfBoundsException.php',
'Symfony\\Component\\PropertyAccess\\Exception\\RuntimeException' => __DIR__ . '/..' . '/symfony/property-access/Exception/RuntimeException.php',
'Symfony\\Component\\PropertyAccess\\Exception\\UnexpectedTypeException' => __DIR__ . '/..' . '/symfony/property-access/Exception/UnexpectedTypeException.php',
'Symfony\\Component\\PropertyAccess\\Exception\\UninitializedPropertyException' => __DIR__ . '/..' . '/symfony/property-access/Exception/UninitializedPropertyException.php',
'Symfony\\Component\\PropertyAccess\\PropertyAccess' => __DIR__ . '/..' . '/symfony/property-access/PropertyAccess.php',
'Symfony\\Component\\PropertyAccess\\PropertyAccessor' => __DIR__ . '/..' . '/symfony/property-access/PropertyAccessor.php',
'Symfony\\Component\\PropertyAccess\\PropertyAccessorBuilder' => __DIR__ . '/..' . '/symfony/property-access/PropertyAccessorBuilder.php',
'Symfony\\Component\\PropertyAccess\\PropertyAccessorInterface' => __DIR__ . '/..' . '/symfony/property-access/PropertyAccessorInterface.php',
'Symfony\\Component\\PropertyAccess\\PropertyPath' => __DIR__ . '/..' . '/symfony/property-access/PropertyPath.php',
'Symfony\\Component\\PropertyAccess\\PropertyPathBuilder' => __DIR__ . '/..' . '/symfony/property-access/PropertyPathBuilder.php',
'Symfony\\Component\\PropertyAccess\\PropertyPathInterface' => __DIR__ . '/..' . '/symfony/property-access/PropertyPathInterface.php',
'Symfony\\Component\\PropertyAccess\\PropertyPathIterator' => __DIR__ . '/..' . '/symfony/property-access/PropertyPathIterator.php',
'Symfony\\Component\\PropertyAccess\\PropertyPathIteratorInterface' => __DIR__ . '/..' . '/symfony/property-access/PropertyPathIteratorInterface.php',
'Symfony\\Component\\PropertyInfo\\DependencyInjection\\PropertyInfoConstructorPass' => __DIR__ . '/..' . '/symfony/property-info/DependencyInjection/PropertyInfoConstructorPass.php',
'Symfony\\Component\\PropertyInfo\\DependencyInjection\\PropertyInfoPass' => __DIR__ . '/..' . '/symfony/property-info/DependencyInjection/PropertyInfoPass.php',
'Symfony\\Component\\PropertyInfo\\Extractor\\ConstructorArgumentTypeExtractorInterface' => __DIR__ . '/..' . '/symfony/property-info/Extractor/ConstructorArgumentTypeExtractorInterface.php',
'Symfony\\Component\\PropertyInfo\\Extractor\\ConstructorExtractor' => __DIR__ . '/..' . '/symfony/property-info/Extractor/ConstructorExtractor.php',
'Symfony\\Component\\PropertyInfo\\Extractor\\PhpDocExtractor' => __DIR__ . '/..' . '/symfony/property-info/Extractor/PhpDocExtractor.php',
'Symfony\\Component\\PropertyInfo\\Extractor\\PhpStanExtractor' => __DIR__ . '/..' . '/symfony/property-info/Extractor/PhpStanExtractor.php',
'Symfony\\Component\\PropertyInfo\\Extractor\\ReflectionExtractor' => __DIR__ . '/..' . '/symfony/property-info/Extractor/ReflectionExtractor.php',
'Symfony\\Component\\PropertyInfo\\Extractor\\SerializerExtractor' => __DIR__ . '/..' . '/symfony/property-info/Extractor/SerializerExtractor.php',
'Symfony\\Component\\PropertyInfo\\PhpStan\\NameScope' => __DIR__ . '/..' . '/symfony/property-info/PhpStan/NameScope.php',
'Symfony\\Component\\PropertyInfo\\PhpStan\\NameScopeFactory' => __DIR__ . '/..' . '/symfony/property-info/PhpStan/NameScopeFactory.php',
'Symfony\\Component\\PropertyInfo\\PropertyAccessExtractorInterface' => __DIR__ . '/..' . '/symfony/property-info/PropertyAccessExtractorInterface.php',
'Symfony\\Component\\PropertyInfo\\PropertyDescriptionExtractorInterface' => __DIR__ . '/..' . '/symfony/property-info/PropertyDescriptionExtractorInterface.php',
'Symfony\\Component\\PropertyInfo\\PropertyInfoCacheExtractor' => __DIR__ . '/..' . '/symfony/property-info/PropertyInfoCacheExtractor.php',
'Symfony\\Component\\PropertyInfo\\PropertyInfoExtractor' => __DIR__ . '/..' . '/symfony/property-info/PropertyInfoExtractor.php',
'Symfony\\Component\\PropertyInfo\\PropertyInfoExtractorInterface' => __DIR__ . '/..' . '/symfony/property-info/PropertyInfoExtractorInterface.php',
'Symfony\\Component\\PropertyInfo\\PropertyInitializableExtractorInterface' => __DIR__ . '/..' . '/symfony/property-info/PropertyInitializableExtractorInterface.php',
'Symfony\\Component\\PropertyInfo\\PropertyListExtractorInterface' => __DIR__ . '/..' . '/symfony/property-info/PropertyListExtractorInterface.php',
'Symfony\\Component\\PropertyInfo\\PropertyReadInfo' => __DIR__ . '/..' . '/symfony/property-info/PropertyReadInfo.php',
'Symfony\\Component\\PropertyInfo\\PropertyReadInfoExtractorInterface' => __DIR__ . '/..' . '/symfony/property-info/PropertyReadInfoExtractorInterface.php',
'Symfony\\Component\\PropertyInfo\\PropertyTypeExtractorInterface' => __DIR__ . '/..' . '/symfony/property-info/PropertyTypeExtractorInterface.php',
'Symfony\\Component\\PropertyInfo\\PropertyWriteInfo' => __DIR__ . '/..' . '/symfony/property-info/PropertyWriteInfo.php',
'Symfony\\Component\\PropertyInfo\\PropertyWriteInfoExtractorInterface' => __DIR__ . '/..' . '/symfony/property-info/PropertyWriteInfoExtractorInterface.php',
'Symfony\\Component\\PropertyInfo\\Type' => __DIR__ . '/..' . '/symfony/property-info/Type.php',
'Symfony\\Component\\PropertyInfo\\Util\\PhpDocTypeHelper' => __DIR__ . '/..' . '/symfony/property-info/Util/PhpDocTypeHelper.php',
'Symfony\\Component\\PropertyInfo\\Util\\PhpStanTypeHelper' => __DIR__ . '/..' . '/symfony/property-info/Util/PhpStanTypeHelper.php',
'Symfony\\Component\\Routing\\Alias' => __DIR__ . '/..' . '/symfony/routing/Alias.php',
'Symfony\\Component\\Routing\\Annotation\\Route' => __DIR__ . '/..' . '/symfony/routing/Annotation/Route.php',
'Symfony\\Component\\Routing\\Attribute\\Route' => __DIR__ . '/..' . '/symfony/routing/Attribute/Route.php',
@@ -3493,35 +3151,6 @@ class ComposerStaticInit7f81b4a2a468a061c306af5e447a9a9f
'Symfony\\Contracts\\Translation\\TranslatorTrait' => __DIR__ . '/..' . '/symfony/translation-contracts/TranslatorTrait.php',
'Symfony\\Polyfill\\Ctype\\Ctype' => __DIR__ . '/..' . '/symfony/polyfill-ctype/Ctype.php',
'Symfony\\Polyfill\\Intl\\Grapheme\\Grapheme' => __DIR__ . '/..' . '/symfony/polyfill-intl-grapheme/Grapheme.php',
'Symfony\\Polyfill\\Intl\\Icu\\Collator' => __DIR__ . '/..' . '/symfony/polyfill-intl-icu/Collator.php',
'Symfony\\Polyfill\\Intl\\Icu\\Currencies' => __DIR__ . '/..' . '/symfony/polyfill-intl-icu/Currencies.php',
'Symfony\\Polyfill\\Intl\\Icu\\DateFormat\\AmPmTransformer' => __DIR__ . '/..' . '/symfony/polyfill-intl-icu/DateFormat/AmPmTransformer.php',
'Symfony\\Polyfill\\Intl\\Icu\\DateFormat\\DayOfWeekTransformer' => __DIR__ . '/..' . '/symfony/polyfill-intl-icu/DateFormat/DayOfWeekTransformer.php',
'Symfony\\Polyfill\\Intl\\Icu\\DateFormat\\DayOfYearTransformer' => __DIR__ . '/..' . '/symfony/polyfill-intl-icu/DateFormat/DayOfYearTransformer.php',
'Symfony\\Polyfill\\Intl\\Icu\\DateFormat\\DayTransformer' => __DIR__ . '/..' . '/symfony/polyfill-intl-icu/DateFormat/DayTransformer.php',
'Symfony\\Polyfill\\Intl\\Icu\\DateFormat\\FullTransformer' => __DIR__ . '/..' . '/symfony/polyfill-intl-icu/DateFormat/FullTransformer.php',
'Symfony\\Polyfill\\Intl\\Icu\\DateFormat\\Hour1200Transformer' => __DIR__ . '/..' . '/symfony/polyfill-intl-icu/DateFormat/Hour1200Transformer.php',
'Symfony\\Polyfill\\Intl\\Icu\\DateFormat\\Hour1201Transformer' => __DIR__ . '/..' . '/symfony/polyfill-intl-icu/DateFormat/Hour1201Transformer.php',
'Symfony\\Polyfill\\Intl\\Icu\\DateFormat\\Hour2400Transformer' => __DIR__ . '/..' . '/symfony/polyfill-intl-icu/DateFormat/Hour2400Transformer.php',
'Symfony\\Polyfill\\Intl\\Icu\\DateFormat\\Hour2401Transformer' => __DIR__ . '/..' . '/symfony/polyfill-intl-icu/DateFormat/Hour2401Transformer.php',
'Symfony\\Polyfill\\Intl\\Icu\\DateFormat\\HourTransformer' => __DIR__ . '/..' . '/symfony/polyfill-intl-icu/DateFormat/HourTransformer.php',
'Symfony\\Polyfill\\Intl\\Icu\\DateFormat\\MinuteTransformer' => __DIR__ . '/..' . '/symfony/polyfill-intl-icu/DateFormat/MinuteTransformer.php',
'Symfony\\Polyfill\\Intl\\Icu\\DateFormat\\MonthTransformer' => __DIR__ . '/..' . '/symfony/polyfill-intl-icu/DateFormat/MonthTransformer.php',
'Symfony\\Polyfill\\Intl\\Icu\\DateFormat\\QuarterTransformer' => __DIR__ . '/..' . '/symfony/polyfill-intl-icu/DateFormat/QuarterTransformer.php',
'Symfony\\Polyfill\\Intl\\Icu\\DateFormat\\SecondTransformer' => __DIR__ . '/..' . '/symfony/polyfill-intl-icu/DateFormat/SecondTransformer.php',
'Symfony\\Polyfill\\Intl\\Icu\\DateFormat\\TimezoneTransformer' => __DIR__ . '/..' . '/symfony/polyfill-intl-icu/DateFormat/TimezoneTransformer.php',
'Symfony\\Polyfill\\Intl\\Icu\\DateFormat\\Transformer' => __DIR__ . '/..' . '/symfony/polyfill-intl-icu/DateFormat/Transformer.php',
'Symfony\\Polyfill\\Intl\\Icu\\DateFormat\\YearTransformer' => __DIR__ . '/..' . '/symfony/polyfill-intl-icu/DateFormat/YearTransformer.php',
'Symfony\\Polyfill\\Intl\\Icu\\Exception\\ExceptionInterface' => __DIR__ . '/..' . '/symfony/polyfill-intl-icu/Exception/ExceptionInterface.php',
'Symfony\\Polyfill\\Intl\\Icu\\Exception\\MethodArgumentNotImplementedException' => __DIR__ . '/..' . '/symfony/polyfill-intl-icu/Exception/MethodArgumentNotImplementedException.php',
'Symfony\\Polyfill\\Intl\\Icu\\Exception\\MethodArgumentValueNotImplementedException' => __DIR__ . '/..' . '/symfony/polyfill-intl-icu/Exception/MethodArgumentValueNotImplementedException.php',
'Symfony\\Polyfill\\Intl\\Icu\\Exception\\MethodNotImplementedException' => __DIR__ . '/..' . '/symfony/polyfill-intl-icu/Exception/MethodNotImplementedException.php',
'Symfony\\Polyfill\\Intl\\Icu\\Exception\\NotImplementedException' => __DIR__ . '/..' . '/symfony/polyfill-intl-icu/Exception/NotImplementedException.php',
'Symfony\\Polyfill\\Intl\\Icu\\Exception\\RuntimeException' => __DIR__ . '/..' . '/symfony/polyfill-intl-icu/Exception/RuntimeException.php',
'Symfony\\Polyfill\\Intl\\Icu\\Icu' => __DIR__ . '/..' . '/symfony/polyfill-intl-icu/Icu.php',
'Symfony\\Polyfill\\Intl\\Icu\\IntlDateFormatter' => __DIR__ . '/..' . '/symfony/polyfill-intl-icu/IntlDateFormatter.php',
'Symfony\\Polyfill\\Intl\\Icu\\Locale' => __DIR__ . '/..' . '/symfony/polyfill-intl-icu/Locale.php',
'Symfony\\Polyfill\\Intl\\Icu\\NumberFormatter' => __DIR__ . '/..' . '/symfony/polyfill-intl-icu/NumberFormatter.php',
'Symfony\\Polyfill\\Intl\\Idn\\Idn' => __DIR__ . '/..' . '/symfony/polyfill-intl-idn/Idn.php',
'Symfony\\Polyfill\\Intl\\Idn\\Info' => __DIR__ . '/..' . '/symfony/polyfill-intl-idn/Info.php',
'Symfony\\Polyfill\\Intl\\Idn\\Resources\\unidata\\DisallowedRanges' => __DIR__ . '/..' . '/symfony/polyfill-intl-idn/Resources/unidata/DisallowedRanges.php',
@@ -3895,6 +3524,7 @@ class ComposerStaticInit7f81b4a2a468a061c306af5e447a9a9f
'iRestServiceProvider' => __DIR__ . '/../..' . '/application/applicationextension/rest/iRestServiceProvider.php',
'iScheduledProcess' => __DIR__ . '/../..' . '/core/backgroundprocess.inc.php',
'iSelfRegister' => __DIR__ . '/../..' . '/core/userrights.class.inc.php',
'iTokenLoginUIExtension' => __DIR__ . '/../..' . '/application/applicationextension/login/iTokenLoginUIExtension.php',
'iTopConfigParser' => __DIR__ . '/../..' . '/core/iTopConfigParser.php',
'iTopMutex' => __DIR__ . '/../..' . '/core/mutex.class.inc.php',
'iTopOwnershipLock' => __DIR__ . '/../..' . '/core/ownershiplock.class.inc.php',

View File

@@ -2936,110 +2936,6 @@
],
"install-path": "../symfony/finder"
},
{
"name": "symfony/form",
"version": "v6.4.26",
"version_normalized": "6.4.26.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/form.git",
"reference": "b40cdbe70be9274ea807ef61da7d0f8d1c70dc51"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/form/zipball/b40cdbe70be9274ea807ef61da7d0f8d1c70dc51",
"reference": "b40cdbe70be9274ea807ef61da7d0f8d1c70dc51",
"shasum": ""
},
"require": {
"php": ">=8.1",
"symfony/deprecation-contracts": "^2.5|^3",
"symfony/event-dispatcher": "^5.4|^6.0|^7.0",
"symfony/options-resolver": "^5.4|^6.0|^7.0",
"symfony/polyfill-ctype": "~1.8",
"symfony/polyfill-intl-icu": "^1.21",
"symfony/polyfill-mbstring": "~1.0",
"symfony/property-access": "^5.4|^6.0|^7.0",
"symfony/service-contracts": "^2.5|^3"
},
"conflict": {
"symfony/console": "<5.4",
"symfony/dependency-injection": "<5.4",
"symfony/doctrine-bridge": "<5.4.21|>=6,<6.2.7",
"symfony/error-handler": "<5.4",
"symfony/framework-bundle": "<5.4",
"symfony/http-kernel": "<5.4",
"symfony/translation": "<5.4.35|>=6.0,<6.3.12|>=6.4,<6.4.3|>=7.0,<7.0.3",
"symfony/translation-contracts": "<2.5",
"symfony/twig-bridge": "<6.3"
},
"require-dev": {
"doctrine/collections": "^1.0|^2.0",
"symfony/config": "^5.4|^6.0|^7.0",
"symfony/console": "^5.4|^6.0|^7.0",
"symfony/dependency-injection": "^5.4|^6.0|^7.0",
"symfony/expression-language": "^5.4|^6.0|^7.0",
"symfony/html-sanitizer": "^6.1|^7.0",
"symfony/http-foundation": "^5.4|^6.0|^7.0",
"symfony/http-kernel": "^5.4|^6.0|^7.0",
"symfony/intl": "^5.4|^6.0|^7.0",
"symfony/security-core": "^6.2|^7.0",
"symfony/security-csrf": "^5.4|^6.0|^7.0",
"symfony/translation": "^5.4.35|~6.3.12|^6.4.3|^7.0.3",
"symfony/uid": "^5.4|^6.0|^7.0",
"symfony/validator": "^5.4|^6.0|^7.0",
"symfony/var-dumper": "^5.4|^6.0|^7.0"
},
"time": "2025-09-20T07:40:41+00:00",
"type": "library",
"installation-source": "dist",
"autoload": {
"psr-4": {
"Symfony\\Component\\Form\\": ""
},
"exclude-from-classmap": [
"/Tests/"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Fabien Potencier",
"email": "fabien@symfony.com"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
"description": "Allows to easily create, process and reuse HTML forms",
"homepage": "https://symfony.com",
"support": {
"source": "https://github.com/symfony/form/tree/v6.4.26"
},
"funding": [
{
"url": "https://symfony.com/sponsor",
"type": "custom"
},
{
"url": "https://github.com/fabpot",
"type": "github"
},
{
"url": "https://github.com/nicolas-grekas",
"type": "github"
},
{
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift"
}
],
"install-path": "../symfony/form"
},
{
"name": "symfony/framework-bundle",
"version": "v6.4.25",
@@ -3580,80 +3476,6 @@
],
"install-path": "../symfony/mime"
},
{
"name": "symfony/options-resolver",
"version": "v6.4.25",
"version_normalized": "6.4.25.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/options-resolver.git",
"reference": "d28e7e2db8a73e9511df892d36445f61314bbebe"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/options-resolver/zipball/d28e7e2db8a73e9511df892d36445f61314bbebe",
"reference": "d28e7e2db8a73e9511df892d36445f61314bbebe",
"shasum": ""
},
"require": {
"php": ">=8.1",
"symfony/deprecation-contracts": "^2.5|^3"
},
"time": "2025-08-04T17:06:28+00:00",
"type": "library",
"installation-source": "dist",
"autoload": {
"psr-4": {
"Symfony\\Component\\OptionsResolver\\": ""
},
"exclude-from-classmap": [
"/Tests/"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Fabien Potencier",
"email": "fabien@symfony.com"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
"description": "Provides an improved replacement for the array_replace PHP function",
"homepage": "https://symfony.com",
"keywords": [
"config",
"configuration",
"options"
],
"support": {
"source": "https://github.com/symfony/options-resolver/tree/v6.4.25"
},
"funding": [
{
"url": "https://symfony.com/sponsor",
"type": "custom"
},
{
"url": "https://github.com/fabpot",
"type": "github"
},
{
"url": "https://github.com/nicolas-grekas",
"type": "github"
},
{
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift"
}
],
"install-path": "../symfony/options-resolver"
},
{
"name": "symfony/polyfill-ctype",
"version": "v1.33.0",
@@ -3825,97 +3647,6 @@
],
"install-path": "../symfony/polyfill-intl-grapheme"
},
{
"name": "symfony/polyfill-intl-icu",
"version": "v1.33.0",
"version_normalized": "1.33.0.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-intl-icu.git",
"reference": "bfc8fa13dbaf21d69114b0efcd72ab700fb04d0c"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-intl-icu/zipball/bfc8fa13dbaf21d69114b0efcd72ab700fb04d0c",
"reference": "bfc8fa13dbaf21d69114b0efcd72ab700fb04d0c",
"shasum": ""
},
"require": {
"php": ">=7.2"
},
"suggest": {
"ext-intl": "For best performance and support of other locales than \"en\""
},
"time": "2025-06-20T22:24:30+00:00",
"type": "library",
"extra": {
"thanks": {
"url": "https://github.com/symfony/polyfill",
"name": "symfony/polyfill"
}
},
"installation-source": "dist",
"autoload": {
"files": [
"bootstrap.php"
],
"psr-4": {
"Symfony\\Polyfill\\Intl\\Icu\\": ""
},
"classmap": [
"Resources/stubs"
],
"exclude-from-classmap": [
"/Tests/"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Nicolas Grekas",
"email": "p@tchwork.com"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
"description": "Symfony polyfill for intl's ICU-related data and classes",
"homepage": "https://symfony.com",
"keywords": [
"compatibility",
"icu",
"intl",
"polyfill",
"portable",
"shim"
],
"support": {
"source": "https://github.com/symfony/polyfill-intl-icu/tree/v1.33.0"
},
"funding": [
{
"url": "https://symfony.com/sponsor",
"type": "custom"
},
{
"url": "https://github.com/fabpot",
"type": "github"
},
{
"url": "https://github.com/nicolas-grekas",
"type": "github"
},
{
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift"
}
],
"install-path": "../symfony/polyfill-intl-icu"
},
{
"name": "symfony/polyfill-intl-idn",
"version": "v1.33.0",
@@ -4265,183 +3996,6 @@
],
"install-path": "../symfony/polyfill-php83"
},
{
"name": "symfony/property-access",
"version": "v6.4.25",
"version_normalized": "6.4.25.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/property-access.git",
"reference": "fedc771326d4978a7d3167fa009a509b06a2e168"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/property-access/zipball/fedc771326d4978a7d3167fa009a509b06a2e168",
"reference": "fedc771326d4978a7d3167fa009a509b06a2e168",
"shasum": ""
},
"require": {
"php": ">=8.1",
"symfony/deprecation-contracts": "^2.5|^3",
"symfony/property-info": "^5.4|^6.0|^7.0"
},
"require-dev": {
"symfony/cache": "^5.4|^6.0|^7.0"
},
"time": "2025-08-12T15:42:57+00:00",
"type": "library",
"installation-source": "dist",
"autoload": {
"psr-4": {
"Symfony\\Component\\PropertyAccess\\": ""
},
"exclude-from-classmap": [
"/Tests/"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Fabien Potencier",
"email": "fabien@symfony.com"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
"description": "Provides functions to read and write from/to an object or array using a simple string notation",
"homepage": "https://symfony.com",
"keywords": [
"access",
"array",
"extraction",
"index",
"injection",
"object",
"property",
"property-path",
"reflection"
],
"support": {
"source": "https://github.com/symfony/property-access/tree/v6.4.25"
},
"funding": [
{
"url": "https://symfony.com/sponsor",
"type": "custom"
},
{
"url": "https://github.com/fabpot",
"type": "github"
},
{
"url": "https://github.com/nicolas-grekas",
"type": "github"
},
{
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift"
}
],
"install-path": "../symfony/property-access"
},
{
"name": "symfony/property-info",
"version": "v6.4.24",
"version_normalized": "6.4.24.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/property-info.git",
"reference": "1056ae3621eeddd78d7c5ec074f1c1784324eec6"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/property-info/zipball/1056ae3621eeddd78d7c5ec074f1c1784324eec6",
"reference": "1056ae3621eeddd78d7c5ec074f1c1784324eec6",
"shasum": ""
},
"require": {
"php": ">=8.1",
"symfony/string": "^5.4|^6.0|^7.0"
},
"conflict": {
"doctrine/annotations": "<1.12",
"phpdocumentor/reflection-docblock": "<5.2",
"phpdocumentor/type-resolver": "<1.5.1",
"symfony/cache": "<5.4",
"symfony/dependency-injection": "<5.4|>=6.0,<6.4",
"symfony/serializer": "<5.4"
},
"require-dev": {
"doctrine/annotations": "^1.12|^2",
"phpdocumentor/reflection-docblock": "^5.2",
"phpstan/phpdoc-parser": "^1.0|^2.0",
"symfony/cache": "^5.4|^6.0|^7.0",
"symfony/dependency-injection": "^5.4|^6.0|^7.0",
"symfony/serializer": "^5.4|^6.4|^7.0"
},
"time": "2025-07-14T16:38:25+00:00",
"type": "library",
"installation-source": "dist",
"autoload": {
"psr-4": {
"Symfony\\Component\\PropertyInfo\\": ""
},
"exclude-from-classmap": [
"/Tests/"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Kévin Dunglas",
"email": "dunglas@gmail.com"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
"description": "Extracts information about PHP class' properties using metadata of popular sources",
"homepage": "https://symfony.com",
"keywords": [
"doctrine",
"phpdoc",
"property",
"symfony",
"type",
"validator"
],
"support": {
"source": "https://github.com/symfony/property-info/tree/v6.4.24"
},
"funding": [
{
"url": "https://symfony.com/sponsor",
"type": "custom"
},
{
"url": "https://github.com/fabpot",
"type": "github"
},
{
"url": "https://github.com/nicolas-grekas",
"type": "github"
},
{
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift"
}
],
"install-path": "../symfony/property-info"
},
{
"name": "symfony/routing",
"version": "v6.4.24",
@@ -5497,63 +5051,6 @@
],
"install-path": "../symfony/yaml"
},
{
"name": "symfonycasts/dynamic-forms",
"version": "v0.1.3",
"version_normalized": "0.1.3.0",
"source": {
"type": "git",
"url": "https://github.com/SymfonyCasts/dynamic-forms.git",
"reference": "4c86c48f18a707e451c4dfffe87f3710b2052be6"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/SymfonyCasts/dynamic-forms/zipball/4c86c48f18a707e451c4dfffe87f3710b2052be6",
"reference": "4c86c48f18a707e451c4dfffe87f3710b2052be6",
"shasum": ""
},
"require": {
"php": ">=8.1",
"symfony/form": "^5.4|^6.3|^7.0"
},
"require-dev": {
"phpunit/phpunit": "^9.6",
"symfony/framework-bundle": "^6.3|^7.0",
"symfony/options-resolver": "^5.4|^6.3|^7.0",
"symfony/phpunit-bridge": "^5.4.32|^6.3.9|^7.0",
"symfony/twig-bundle": "^5.4|^6.3|^7.0",
"twig/twig": "^2.15|^3.0",
"zenstruck/browser": "^1.4"
},
"time": "2024-10-22T16:59:02+00:00",
"type": "library",
"installation-source": "dist",
"autoload": {
"psr-4": {
"Symfonycasts\\DynamicForms\\": "src"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Ryan Weaver",
"homepage": "https://symfonycasts.com"
}
],
"description": "Add dynamic/dependent fields to Symfony forms",
"keywords": [
"Forms",
"symfony"
],
"support": {
"issues": "https://github.com/SymfonyCasts/dynamic-forms/issues",
"source": "https://github.com/SymfonyCasts/dynamic-forms/tree/v0.1.3"
},
"install-path": "../symfonycasts/dynamic-forms"
},
{
"name": "tecnickcom/tcpdf",
"version": "6.10.0",

View File

@@ -3,7 +3,7 @@
'name' => 'combodo/itop',
'pretty_version' => 'dev-develop',
'version' => 'dev-develop',
'reference' => '0ea0da525e7dea5ec0ba619afa06a88abe5df919',
'reference' => '7e515e7216f019f4c69e3699ad9bc6221988ff1e',
'type' => 'project',
'install_path' => __DIR__ . '/../../',
'aliases' => array(),
@@ -22,7 +22,7 @@
'combodo/itop' => array(
'pretty_version' => 'dev-develop',
'version' => 'dev-develop',
'reference' => '0ea0da525e7dea5ec0ba619afa06a88abe5df919',
'reference' => '7e515e7216f019f4c69e3699ad9bc6221988ff1e',
'type' => 'project',
'install_path' => __DIR__ . '/../../',
'aliases' => array(),
@@ -447,15 +447,6 @@
'aliases' => array(),
'dev_requirement' => false,
),
'symfony/form' => array(
'pretty_version' => 'v6.4.26',
'version' => '6.4.26.0',
'reference' => 'b40cdbe70be9274ea807ef61da7d0f8d1c70dc51',
'type' => 'library',
'install_path' => __DIR__ . '/../symfony/form',
'aliases' => array(),
'dev_requirement' => false,
),
'symfony/framework-bundle' => array(
'pretty_version' => 'v6.4.25',
'version' => '6.4.25.0',
@@ -501,15 +492,6 @@
'aliases' => array(),
'dev_requirement' => false,
),
'symfony/options-resolver' => array(
'pretty_version' => 'v6.4.25',
'version' => '6.4.25.0',
'reference' => 'd28e7e2db8a73e9511df892d36445f61314bbebe',
'type' => 'library',
'install_path' => __DIR__ . '/../symfony/options-resolver',
'aliases' => array(),
'dev_requirement' => false,
),
'symfony/polyfill-ctype' => array(
'pretty_version' => 'v1.33.0',
'version' => '1.33.0.0',
@@ -528,15 +510,6 @@
'aliases' => array(),
'dev_requirement' => false,
),
'symfony/polyfill-intl-icu' => array(
'pretty_version' => 'v1.33.0',
'version' => '1.33.0.0',
'reference' => 'bfc8fa13dbaf21d69114b0efcd72ab700fb04d0c',
'type' => 'library',
'install_path' => __DIR__ . '/../symfony/polyfill-intl-icu',
'aliases' => array(),
'dev_requirement' => false,
),
'symfony/polyfill-intl-idn' => array(
'pretty_version' => 'v1.33.0',
'version' => '1.33.0.0',
@@ -573,24 +546,6 @@
'aliases' => array(),
'dev_requirement' => false,
),
'symfony/property-access' => array(
'pretty_version' => 'v6.4.25',
'version' => '6.4.25.0',
'reference' => 'fedc771326d4978a7d3167fa009a509b06a2e168',
'type' => 'library',
'install_path' => __DIR__ . '/../symfony/property-access',
'aliases' => array(),
'dev_requirement' => false,
),
'symfony/property-info' => array(
'pretty_version' => 'v6.4.24',
'version' => '6.4.24.0',
'reference' => '1056ae3621eeddd78d7c5ec074f1c1784324eec6',
'type' => 'library',
'install_path' => __DIR__ . '/../symfony/property-info',
'aliases' => array(),
'dev_requirement' => false,
),
'symfony/routing' => array(
'pretty_version' => 'v6.4.24',
'version' => '6.4.24.0',
@@ -705,15 +660,6 @@
'aliases' => array(),
'dev_requirement' => false,
),
'symfonycasts/dynamic-forms' => array(
'pretty_version' => 'v0.1.3',
'version' => '0.1.3.0',
'reference' => '4c86c48f18a707e451c4dfffe87f3710b2052be6',
'type' => 'library',
'install_path' => __DIR__ . '/../symfonycasts/dynamic-forms',
'aliases' => array(),
'dev_requirement' => false,
),
'tecnickcom/tcpdf' => array(
'pretty_version' => '6.10.0',
'version' => '6.10.0.0',

View File

@@ -36,7 +36,8 @@ if ($issues) {
echo 'Composer detected issues in your platform:' . PHP_EOL.PHP_EOL . str_replace('You are running '.PHP_VERSION.'.', '', implode(PHP_EOL, $issues)) . PHP_EOL.PHP_EOL;
}
}
throw new \RuntimeException(
'Composer detected issues in your platform: ' . implode(' ', $issues)
trigger_error(
'Composer detected issues in your platform: ' . implode(' ', $issues),
E_USER_ERROR
);
}

View File

@@ -1,179 +0,0 @@
<?php
/*
* This file is part of the Symfony package.
*
* (c) Fabien Potencier <fabien@symfony.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Symfony\Component\Form;
use Symfony\Component\Form\Exception\InvalidArgumentException;
use Symfony\Component\Form\Exception\UnexpectedTypeException;
/**
* @author Bernhard Schussek <bschussek@gmail.com>
*/
abstract class AbstractExtension implements FormExtensionInterface
{
/**
* The types provided by this extension.
*
* @var FormTypeInterface[]
*/
private array $types;
/**
* The type extensions provided by this extension.
*
* @var FormTypeExtensionInterface[][]
*/
private array $typeExtensions;
/**
* The type guesser provided by this extension.
*/
private ?FormTypeGuesserInterface $typeGuesser = null;
/**
* Whether the type guesser has been loaded.
*/
private bool $typeGuesserLoaded = false;
public function getType(string $name): FormTypeInterface
{
if (!isset($this->types)) {
$this->initTypes();
}
if (!isset($this->types[$name])) {
throw new InvalidArgumentException(\sprintf('The type "%s" cannot be loaded by this extension.', $name));
}
return $this->types[$name];
}
public function hasType(string $name): bool
{
if (!isset($this->types)) {
$this->initTypes();
}
return isset($this->types[$name]);
}
public function getTypeExtensions(string $name): array
{
if (!isset($this->typeExtensions)) {
$this->initTypeExtensions();
}
return $this->typeExtensions[$name]
?? [];
}
public function hasTypeExtensions(string $name): bool
{
if (!isset($this->typeExtensions)) {
$this->initTypeExtensions();
}
return isset($this->typeExtensions[$name]) && \count($this->typeExtensions[$name]) > 0;
}
public function getTypeGuesser(): ?FormTypeGuesserInterface
{
if (!$this->typeGuesserLoaded) {
$this->initTypeGuesser();
}
return $this->typeGuesser;
}
/**
* Registers the types.
*
* @return FormTypeInterface[]
*/
protected function loadTypes()
{
return [];
}
/**
* Registers the type extensions.
*
* @return FormTypeExtensionInterface[]
*/
protected function loadTypeExtensions(): array
{
return [];
}
/**
* Registers the type guesser.
*
* @return FormTypeGuesserInterface|null
*/
protected function loadTypeGuesser()
{
return null;
}
/**
* Initializes the types.
*
* @throws UnexpectedTypeException if any registered type is not an instance of FormTypeInterface
*/
private function initTypes(): void
{
$this->types = [];
foreach ($this->loadTypes() as $type) {
if (!$type instanceof FormTypeInterface) {
throw new UnexpectedTypeException($type, FormTypeInterface::class);
}
$this->types[$type::class] = $type;
}
}
/**
* Initializes the type extensions.
*
* @throws UnexpectedTypeException if any registered type extension is not
* an instance of FormTypeExtensionInterface
*/
private function initTypeExtensions(): void
{
$this->typeExtensions = [];
foreach ($this->loadTypeExtensions() as $extension) {
if (!$extension instanceof FormTypeExtensionInterface) {
throw new UnexpectedTypeException($extension, FormTypeExtensionInterface::class);
}
foreach ($extension::getExtendedTypes() as $extendedType) {
$this->typeExtensions[$extendedType][] = $extension;
}
}
}
/**
* Initializes the type guesser.
*
* @throws UnexpectedTypeException if the type guesser is not an instance of FormTypeGuesserInterface
*/
private function initTypeGuesser(): void
{
$this->typeGuesserLoaded = true;
$this->typeGuesser = $this->loadTypeGuesser();
if (null !== $this->typeGuesser && !$this->typeGuesser instanceof FormTypeGuesserInterface) {
throw new UnexpectedTypeException($this->typeGuesser, FormTypeGuesserInterface::class);
}
}
}

View File

@@ -1,197 +0,0 @@
<?php
/*
* This file is part of the Symfony package.
*
* (c) Fabien Potencier <fabien@symfony.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Symfony\Component\Form;
use Symfony\Contracts\Service\ResetInterface;
/**
* Default implementation of {@link FormRendererEngineInterface}.
*
* @author Bernhard Schussek <bschussek@gmail.com>
*/
abstract class AbstractRendererEngine implements FormRendererEngineInterface, ResetInterface
{
/**
* The variable in {@link FormView} used as cache key.
*/
public const CACHE_KEY_VAR = 'cache_key';
/**
* @var array
*/
protected $defaultThemes;
/**
* @var array[]
*/
protected $themes = [];
/**
* @var bool[]
*/
protected $useDefaultThemes = [];
/**
* @var array[]
*/
protected $resources = [];
/**
* @var array<array<int|false>>
*/
private array $resourceHierarchyLevels = [];
/**
* Creates a new renderer engine.
*
* @param array $defaultThemes The default themes. The type of these
* themes is open to the implementation.
*/
public function __construct(array $defaultThemes = [])
{
$this->defaultThemes = $defaultThemes;
}
/**
* @return void
*/
public function setTheme(FormView $view, mixed $themes, bool $useDefaultThemes = true)
{
$cacheKey = $view->vars[self::CACHE_KEY_VAR];
// Do not cast, as casting turns objects into arrays of properties
$this->themes[$cacheKey] = \is_array($themes) ? $themes : [$themes];
$this->useDefaultThemes[$cacheKey] = $useDefaultThemes;
// Unset instead of resetting to an empty array, in order to allow
// implementations (like TwigRendererEngine) to check whether $cacheKey
// is set at all.
unset($this->resources[$cacheKey], $this->resourceHierarchyLevels[$cacheKey]);
}
public function getResourceForBlockName(FormView $view, string $blockName): mixed
{
$cacheKey = $view->vars[self::CACHE_KEY_VAR];
if (!isset($this->resources[$cacheKey][$blockName])) {
$this->loadResourceForBlockName($cacheKey, $view, $blockName);
}
return $this->resources[$cacheKey][$blockName];
}
public function getResourceForBlockNameHierarchy(FormView $view, array $blockNameHierarchy, int $hierarchyLevel): mixed
{
$cacheKey = $view->vars[self::CACHE_KEY_VAR];
$blockName = $blockNameHierarchy[$hierarchyLevel];
if (!isset($this->resources[$cacheKey][$blockName])) {
$this->loadResourceForBlockNameHierarchy($cacheKey, $view, $blockNameHierarchy, $hierarchyLevel);
}
return $this->resources[$cacheKey][$blockName];
}
public function getResourceHierarchyLevel(FormView $view, array $blockNameHierarchy, int $hierarchyLevel): int|false
{
$cacheKey = $view->vars[self::CACHE_KEY_VAR];
$blockName = $blockNameHierarchy[$hierarchyLevel];
if (!isset($this->resources[$cacheKey][$blockName])) {
$this->loadResourceForBlockNameHierarchy($cacheKey, $view, $blockNameHierarchy, $hierarchyLevel);
}
// If $block was previously rendered loaded with loadTemplateForBlock(), the template
// is cached but the hierarchy level is not. In this case, we know that the block
// exists at this very hierarchy level, so we can just set it.
if (!isset($this->resourceHierarchyLevels[$cacheKey][$blockName])) {
$this->resourceHierarchyLevels[$cacheKey][$blockName] = $hierarchyLevel;
}
return $this->resourceHierarchyLevels[$cacheKey][$blockName];
}
/**
* Loads the cache with the resource for a given block name.
*
* @see getResourceForBlock()
*
* @return bool
*/
abstract protected function loadResourceForBlockName(string $cacheKey, FormView $view, string $blockName);
/**
* Loads the cache with the resource for a specific level of a block hierarchy.
*
* @see getResourceForBlockHierarchy()
*/
private function loadResourceForBlockNameHierarchy(string $cacheKey, FormView $view, array $blockNameHierarchy, int $hierarchyLevel): bool
{
$blockName = $blockNameHierarchy[$hierarchyLevel];
// Try to find a template for that block
if ($this->loadResourceForBlockName($cacheKey, $view, $blockName)) {
// If loadTemplateForBlock() returns true, it was able to populate the
// cache. The only missing thing is to set the hierarchy level at which
// the template was found.
$this->resourceHierarchyLevels[$cacheKey][$blockName] = $hierarchyLevel;
return true;
}
if ($hierarchyLevel > 0) {
$parentLevel = $hierarchyLevel - 1;
$parentBlockName = $blockNameHierarchy[$parentLevel];
// The next two if statements contain slightly duplicated code. This is by intention
// and tries to avoid execution of unnecessary checks in order to increase performance.
if (isset($this->resources[$cacheKey][$parentBlockName])) {
// It may happen that the parent block is already loaded, but its level is not.
// In this case, the parent block must have been loaded by loadResourceForBlock(),
// which does not check the hierarchy of the block. Subsequently the block must have
// been found directly on the parent level.
if (!isset($this->resourceHierarchyLevels[$cacheKey][$parentBlockName])) {
$this->resourceHierarchyLevels[$cacheKey][$parentBlockName] = $parentLevel;
}
// Cache the shortcuts for further accesses
$this->resources[$cacheKey][$blockName] = $this->resources[$cacheKey][$parentBlockName];
$this->resourceHierarchyLevels[$cacheKey][$blockName] = $this->resourceHierarchyLevels[$cacheKey][$parentBlockName];
return true;
}
if ($this->loadResourceForBlockNameHierarchy($cacheKey, $view, $blockNameHierarchy, $parentLevel)) {
// Cache the shortcuts for further accesses
$this->resources[$cacheKey][$blockName] = $this->resources[$cacheKey][$parentBlockName];
$this->resourceHierarchyLevels[$cacheKey][$blockName] = $this->resourceHierarchyLevels[$cacheKey][$parentBlockName];
return true;
}
}
// Cache the result for further accesses
$this->resources[$cacheKey][$blockName] = false;
$this->resourceHierarchyLevels[$cacheKey][$blockName] = false;
return false;
}
public function reset(): void
{
$this->themes = [];
$this->useDefaultThemes = [];
$this->resources = [];
$this->resourceHierarchyLevels = [];
}
}

View File

@@ -1,66 +0,0 @@
<?php
/*
* This file is part of the Symfony package.
*
* (c) Fabien Potencier <fabien@symfony.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Symfony\Component\Form;
use Symfony\Component\Form\Extension\Core\Type\FormType;
use Symfony\Component\Form\Util\StringUtil;
use Symfony\Component\OptionsResolver\OptionsResolver;
/**
* @author Bernhard Schussek <bschussek@gmail.com>
*/
abstract class AbstractType implements FormTypeInterface
{
/**
* @return string|null
*/
public function getParent()
{
return FormType::class;
}
/**
* @return void
*/
public function configureOptions(OptionsResolver $resolver)
{
}
/**
* @return void
*/
public function buildForm(FormBuilderInterface $builder, array $options)
{
}
/**
* @return void
*/
public function buildView(FormView $view, FormInterface $form, array $options)
{
}
/**
* @return void
*/
public function finishView(FormView $view, FormInterface $form, array $options)
{
}
/**
* @return string
*/
public function getBlockPrefix()
{
return StringUtil::fqcnToBlockPrefix(static::class) ?: '';
}
}

View File

@@ -1,48 +0,0 @@
<?php
/*
* This file is part of the Symfony package.
*
* (c) Fabien Potencier <fabien@symfony.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Symfony\Component\Form;
use Symfony\Component\OptionsResolver\OptionsResolver;
/**
* @author Bernhard Schussek <bschussek@gmail.com>
*/
abstract class AbstractTypeExtension implements FormTypeExtensionInterface
{
/**
* @return void
*/
public function configureOptions(OptionsResolver $resolver)
{
}
/**
* @return void
*/
public function buildForm(FormBuilderInterface $builder, array $options)
{
}
/**
* @return void
*/
public function buildView(FormView $view, FormInterface $form, array $options)
{
}
/**
* @return void
*/
public function finishView(FormView $view, FormInterface $form, array $options)
{
}
}

View File

@@ -1,373 +0,0 @@
<?php
/*
* This file is part of the Symfony package.
*
* (c) Fabien Potencier <fabien@symfony.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Symfony\Component\Form;
use Symfony\Component\Form\Exception\AlreadySubmittedException;
use Symfony\Component\Form\Exception\BadMethodCallException;
use Symfony\Component\Form\Exception\TransformationFailedException;
use Symfony\Component\PropertyAccess\PropertyPathInterface;
/**
* A form button.
*
* @author Bernhard Schussek <bschussek@gmail.com>
*
* @implements \IteratorAggregate<string, FormInterface>
*/
class Button implements \IteratorAggregate, FormInterface
{
private ?FormInterface $parent = null;
private FormConfigInterface $config;
private bool $submitted = false;
/**
* Creates a new button from a form configuration.
*/
public function __construct(FormConfigInterface $config)
{
$this->config = $config;
}
/**
* Unsupported method.
*/
public function offsetExists(mixed $offset): bool
{
return false;
}
/**
* Unsupported method.
*
* This method should not be invoked.
*
* @throws BadMethodCallException
*/
public function offsetGet(mixed $offset): FormInterface
{
throw new BadMethodCallException('Buttons cannot have children.');
}
/**
* Unsupported method.
*
* This method should not be invoked.
*
* @throws BadMethodCallException
*/
public function offsetSet(mixed $offset, mixed $value): void
{
throw new BadMethodCallException('Buttons cannot have children.');
}
/**
* Unsupported method.
*
* This method should not be invoked.
*
* @throws BadMethodCallException
*/
public function offsetUnset(mixed $offset): void
{
throw new BadMethodCallException('Buttons cannot have children.');
}
public function setParent(?FormInterface $parent = null): static
{
if (1 > \func_num_args()) {
trigger_deprecation('symfony/form', '6.2', 'Calling "%s()" without any arguments is deprecated, pass null explicitly instead.', __METHOD__);
}
if ($this->submitted) {
throw new AlreadySubmittedException('You cannot set the parent of a submitted button.');
}
$this->parent = $parent;
return $this;
}
public function getParent(): ?FormInterface
{
return $this->parent;
}
/**
* Unsupported method.
*
* This method should not be invoked.
*
* @throws BadMethodCallException
*/
public function add(string|FormInterface $child, ?string $type = null, array $options = []): static
{
throw new BadMethodCallException('Buttons cannot have children.');
}
/**
* Unsupported method.
*
* This method should not be invoked.
*
* @throws BadMethodCallException
*/
public function get(string $name): FormInterface
{
throw new BadMethodCallException('Buttons cannot have children.');
}
/**
* Unsupported method.
*/
public function has(string $name): bool
{
return false;
}
/**
* Unsupported method.
*
* This method should not be invoked.
*
* @throws BadMethodCallException
*/
public function remove(string $name): static
{
throw new BadMethodCallException('Buttons cannot have children.');
}
public function all(): array
{
return [];
}
public function getErrors(bool $deep = false, bool $flatten = true): FormErrorIterator
{
return new FormErrorIterator($this, []);
}
/**
* Unsupported method.
*
* This method should not be invoked.
*
* @return $this
*/
public function setData(mixed $modelData): static
{
// no-op, called during initialization of the form tree
return $this;
}
/**
* Unsupported method.
*/
public function getData(): mixed
{
return null;
}
/**
* Unsupported method.
*/
public function getNormData(): mixed
{
return null;
}
/**
* Unsupported method.
*/
public function getViewData(): mixed
{
return null;
}
/**
* Unsupported method.
*/
public function getExtraData(): array
{
return [];
}
/**
* Returns the button's configuration.
*/
public function getConfig(): FormConfigInterface
{
return $this->config;
}
/**
* Returns whether the button is submitted.
*/
public function isSubmitted(): bool
{
return $this->submitted;
}
/**
* Returns the name by which the button is identified in forms.
*/
public function getName(): string
{
return $this->config->getName();
}
/**
* Unsupported method.
*/
public function getPropertyPath(): ?PropertyPathInterface
{
return null;
}
/**
* Unsupported method.
*
* @throws BadMethodCallException
*/
public function addError(FormError $error): static
{
throw new BadMethodCallException('Buttons cannot have errors.');
}
/**
* Unsupported method.
*/
public function isValid(): bool
{
return true;
}
/**
* Unsupported method.
*/
public function isRequired(): bool
{
return false;
}
public function isDisabled(): bool
{
if ($this->parent?->isDisabled()) {
return true;
}
return $this->config->getDisabled();
}
/**
* Unsupported method.
*/
public function isEmpty(): bool
{
return true;
}
/**
* Unsupported method.
*/
public function isSynchronized(): bool
{
return true;
}
/**
* Unsupported method.
*/
public function getTransformationFailure(): ?TransformationFailedException
{
return null;
}
/**
* Unsupported method.
*
* @throws BadMethodCallException
*/
public function initialize(): static
{
throw new BadMethodCallException('Buttons cannot be initialized. Call initialize() on the root form instead.');
}
/**
* Unsupported method.
*
* @throws BadMethodCallException
*/
public function handleRequest(mixed $request = null): static
{
throw new BadMethodCallException('Buttons cannot handle requests. Call handleRequest() on the root form instead.');
}
/**
* Submits data to the button.
*
* @return $this
*
* @throws AlreadySubmittedException if the button has already been submitted
*/
public function submit(array|string|null $submittedData, bool $clearMissing = true): static
{
if ($this->submitted) {
throw new AlreadySubmittedException('A form can only be submitted once.');
}
$this->submitted = true;
return $this;
}
public function getRoot(): FormInterface
{
return $this->parent ? $this->parent->getRoot() : $this;
}
public function isRoot(): bool
{
return null === $this->parent;
}
public function createView(?FormView $parent = null): FormView
{
if (null === $parent && $this->parent) {
$parent = $this->parent->createView();
}
$type = $this->config->getType();
$options = $this->config->getOptions();
$view = $type->createView($this, $parent);
$type->buildView($view, $this, $options);
$type->finishView($view, $this, $options);
return $view;
}
/**
* Unsupported method.
*/
public function count(): int
{
return 0;
}
/**
* Unsupported method.
*/
public function getIterator(): \EmptyIterator
{
return new \EmptyIterator();
}
}

View File

@@ -1,738 +0,0 @@
<?php
/*
* This file is part of the Symfony package.
*
* (c) Fabien Potencier <fabien@symfony.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Symfony\Component\Form;
use Symfony\Component\EventDispatcher\EventDispatcherInterface;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Component\Form\Exception\BadMethodCallException;
use Symfony\Component\Form\Exception\InvalidArgumentException;
use Symfony\Component\PropertyAccess\PropertyPathInterface;
/**
* A builder for {@link Button} instances.
*
* @author Bernhard Schussek <bschussek@gmail.com>
*
* @implements \IteratorAggregate<string, FormBuilderInterface>
*/
class ButtonBuilder implements \IteratorAggregate, FormBuilderInterface
{
protected $locked = false;
private bool $disabled = false;
private ResolvedFormTypeInterface $type;
private string $name;
private array $attributes = [];
private array $options;
/**
* @throws InvalidArgumentException if the name is empty
*/
public function __construct(?string $name, array $options = [])
{
if ('' === $name || null === $name) {
throw new InvalidArgumentException('Buttons cannot have empty names.');
}
$this->name = $name;
$this->options = $options;
FormConfigBuilder::validateName($name);
}
/**
* Unsupported method.
*
* @return never
*
* @throws BadMethodCallException
*/
public function add(string|FormBuilderInterface $child, ?string $type = null, array $options = []): static
{
throw new BadMethodCallException('Buttons cannot have children.');
}
/**
* Unsupported method.
*
* @return never
*
* @throws BadMethodCallException
*/
public function create(string $name, ?string $type = null, array $options = []): FormBuilderInterface
{
throw new BadMethodCallException('Buttons cannot have children.');
}
/**
* Unsupported method.
*
* @return never
*
* @throws BadMethodCallException
*/
public function get(string $name): FormBuilderInterface
{
throw new BadMethodCallException('Buttons cannot have children.');
}
/**
* Unsupported method.
*
* @return never
*
* @throws BadMethodCallException
*/
public function remove(string $name): static
{
throw new BadMethodCallException('Buttons cannot have children.');
}
/**
* Unsupported method.
*/
public function has(string $name): bool
{
return false;
}
/**
* Returns the children.
*/
public function all(): array
{
return [];
}
/**
* Creates the button.
*/
public function getForm(): Button
{
return new Button($this->getFormConfig());
}
/**
* Unsupported method.
*
* @return never
*
* @throws BadMethodCallException
*/
public function addEventListener(string $eventName, callable $listener, int $priority = 0): static
{
throw new BadMethodCallException('Buttons do not support event listeners.');
}
/**
* Unsupported method.
*
* @return never
*
* @throws BadMethodCallException
*/
public function addEventSubscriber(EventSubscriberInterface $subscriber): static
{
throw new BadMethodCallException('Buttons do not support event subscribers.');
}
/**
* Unsupported method.
*
* @return never
*
* @throws BadMethodCallException
*/
public function addViewTransformer(DataTransformerInterface $viewTransformer, bool $forcePrepend = false): static
{
throw new BadMethodCallException('Buttons do not support data transformers.');
}
/**
* Unsupported method.
*
* @return never
*
* @throws BadMethodCallException
*/
public function resetViewTransformers(): static
{
throw new BadMethodCallException('Buttons do not support data transformers.');
}
/**
* Unsupported method.
*
* @return never
*
* @throws BadMethodCallException
*/
public function addModelTransformer(DataTransformerInterface $modelTransformer, bool $forceAppend = false): static
{
throw new BadMethodCallException('Buttons do not support data transformers.');
}
/**
* Unsupported method.
*
* @return never
*
* @throws BadMethodCallException
*/
public function resetModelTransformers(): static
{
throw new BadMethodCallException('Buttons do not support data transformers.');
}
/**
* @return $this
*/
public function setAttribute(string $name, mixed $value): static
{
$this->attributes[$name] = $value;
return $this;
}
/**
* @return $this
*/
public function setAttributes(array $attributes): static
{
$this->attributes = $attributes;
return $this;
}
/**
* Unsupported method.
*
* @return never
*
* @throws BadMethodCallException
*/
public function setDataMapper(?DataMapperInterface $dataMapper = null): static
{
if (1 > \func_num_args()) {
trigger_deprecation('symfony/form', '6.2', 'Calling "%s()" without any arguments is deprecated, pass null explicitly instead.', __METHOD__);
}
throw new BadMethodCallException('Buttons do not support data mappers.');
}
/**
* Set whether the button is disabled.
*
* @return $this
*/
public function setDisabled(bool $disabled): static
{
$this->disabled = $disabled;
return $this;
}
/**
* Unsupported method.
*
* @return never
*
* @throws BadMethodCallException
*/
public function setEmptyData(mixed $emptyData): static
{
throw new BadMethodCallException('Buttons do not support empty data.');
}
/**
* Unsupported method.
*
* @return never
*
* @throws BadMethodCallException
*/
public function setErrorBubbling(bool $errorBubbling): static
{
throw new BadMethodCallException('Buttons do not support error bubbling.');
}
/**
* Unsupported method.
*
* @return never
*
* @throws BadMethodCallException
*/
public function setRequired(bool $required): static
{
throw new BadMethodCallException('Buttons cannot be required.');
}
/**
* Unsupported method.
*
* @return never
*
* @throws BadMethodCallException
*/
public function setPropertyPath(string|PropertyPathInterface|null $propertyPath): static
{
throw new BadMethodCallException('Buttons do not support property paths.');
}
/**
* Unsupported method.
*
* @return never
*
* @throws BadMethodCallException
*/
public function setMapped(bool $mapped): static
{
throw new BadMethodCallException('Buttons do not support data mapping.');
}
/**
* Unsupported method.
*
* @return never
*
* @throws BadMethodCallException
*/
public function setByReference(bool $byReference): static
{
throw new BadMethodCallException('Buttons do not support data mapping.');
}
/**
* Unsupported method.
*
* @return never
*
* @throws BadMethodCallException
*/
public function setCompound(bool $compound): static
{
throw new BadMethodCallException('Buttons cannot be compound.');
}
/**
* Sets the type of the button.
*
* @return $this
*/
public function setType(ResolvedFormTypeInterface $type): static
{
$this->type = $type;
return $this;
}
/**
* Unsupported method.
*
* @return never
*
* @throws BadMethodCallException
*/
public function setData(mixed $data): static
{
throw new BadMethodCallException('Buttons do not support data.');
}
/**
* Unsupported method.
*
* @return never
*
* @throws BadMethodCallException
*/
public function setDataLocked(bool $locked): static
{
throw new BadMethodCallException('Buttons do not support data locking.');
}
/**
* Unsupported method.
*
* @return never
*
* @throws BadMethodCallException
*/
public function setFormFactory(FormFactoryInterface $formFactory)
{
throw new BadMethodCallException('Buttons do not support form factories.');
}
/**
* Unsupported method.
*
* @return never
*
* @throws BadMethodCallException
*/
public function setAction(string $action): static
{
throw new BadMethodCallException('Buttons do not support actions.');
}
/**
* Unsupported method.
*
* @return never
*
* @throws BadMethodCallException
*/
public function setMethod(string $method): static
{
throw new BadMethodCallException('Buttons do not support methods.');
}
/**
* Unsupported method.
*
* @return never
*
* @throws BadMethodCallException
*/
public function setRequestHandler(RequestHandlerInterface $requestHandler): static
{
throw new BadMethodCallException('Buttons do not support request handlers.');
}
/**
* Unsupported method.
*
* @return $this
*
* @throws BadMethodCallException
*/
public function setAutoInitialize(bool $initialize): static
{
if (true === $initialize) {
throw new BadMethodCallException('Buttons do not support automatic initialization.');
}
return $this;
}
/**
* Unsupported method.
*
* @return never
*
* @throws BadMethodCallException
*/
public function setInheritData(bool $inheritData): static
{
throw new BadMethodCallException('Buttons do not support data inheritance.');
}
/**
* Builds and returns the button configuration.
*/
public function getFormConfig(): FormConfigInterface
{
// This method should be idempotent, so clone the builder
$config = clone $this;
$config->locked = true;
return $config;
}
/**
* Unsupported method.
*
* @return never
*
* @throws BadMethodCallException
*/
public function setIsEmptyCallback(?callable $isEmptyCallback): static
{
throw new BadMethodCallException('Buttons do not support "is empty" callback.');
}
/**
* Unsupported method.
*
* @return never
*
* @throws BadMethodCallException
*/
public function getEventDispatcher(): EventDispatcherInterface
{
throw new BadMethodCallException('Buttons do not support event dispatching.');
}
public function getName(): string
{
return $this->name;
}
/**
* Unsupported method.
*/
public function getPropertyPath(): ?PropertyPathInterface
{
return null;
}
/**
* Unsupported method.
*/
public function getMapped(): bool
{
return false;
}
/**
* Unsupported method.
*/
public function getByReference(): bool
{
return false;
}
/**
* Unsupported method.
*/
public function getCompound(): bool
{
return false;
}
/**
* Returns the form type used to construct the button.
*/
public function getType(): ResolvedFormTypeInterface
{
return $this->type;
}
/**
* Unsupported method.
*/
public function getViewTransformers(): array
{
return [];
}
/**
* Unsupported method.
*/
public function getModelTransformers(): array
{
return [];
}
/**
* Unsupported method.
*/
public function getDataMapper(): ?DataMapperInterface
{
return null;
}
/**
* Unsupported method.
*/
public function getRequired(): bool
{
return false;
}
/**
* Returns whether the button is disabled.
*/
public function getDisabled(): bool
{
return $this->disabled;
}
/**
* Unsupported method.
*/
public function getErrorBubbling(): bool
{
return false;
}
/**
* Unsupported method.
*/
public function getEmptyData(): mixed
{
return null;
}
/**
* Returns additional attributes of the button.
*/
public function getAttributes(): array
{
return $this->attributes;
}
/**
* Returns whether the attribute with the given name exists.
*/
public function hasAttribute(string $name): bool
{
return \array_key_exists($name, $this->attributes);
}
/**
* Returns the value of the given attribute.
*/
public function getAttribute(string $name, mixed $default = null): mixed
{
return \array_key_exists($name, $this->attributes) ? $this->attributes[$name] : $default;
}
/**
* Unsupported method.
*/
public function getData(): mixed
{
return null;
}
/**
* Unsupported method.
*/
public function getDataClass(): ?string
{
return null;
}
/**
* Unsupported method.
*/
public function getDataLocked(): bool
{
return false;
}
/**
* Unsupported method.
*
* @return never
*/
public function getFormFactory(): FormFactoryInterface
{
throw new BadMethodCallException('Buttons do not support adding children.');
}
/**
* Unsupported method.
*
* @return never
*
* @throws BadMethodCallException
*/
public function getAction(): string
{
throw new BadMethodCallException('Buttons do not support actions.');
}
/**
* Unsupported method.
*
* @return never
*
* @throws BadMethodCallException
*/
public function getMethod(): string
{
throw new BadMethodCallException('Buttons do not support methods.');
}
/**
* Unsupported method.
*
* @return never
*
* @throws BadMethodCallException
*/
public function getRequestHandler(): RequestHandlerInterface
{
throw new BadMethodCallException('Buttons do not support request handlers.');
}
/**
* Unsupported method.
*/
public function getAutoInitialize(): bool
{
return false;
}
/**
* Unsupported method.
*/
public function getInheritData(): bool
{
return false;
}
/**
* Returns all options passed during the construction of the button.
*/
public function getOptions(): array
{
return $this->options;
}
/**
* Returns whether a specific option exists.
*/
public function hasOption(string $name): bool
{
return \array_key_exists($name, $this->options);
}
/**
* Returns the value of a specific option.
*/
public function getOption(string $name, mixed $default = null): mixed
{
return \array_key_exists($name, $this->options) ? $this->options[$name] : $default;
}
/**
* Unsupported method.
*
* @return never
*
* @throws BadMethodCallException
*/
public function getIsEmptyCallback(): ?callable
{
throw new BadMethodCallException('Buttons do not support "is empty" callback.');
}
/**
* Unsupported method.
*/
public function count(): int
{
return 0;
}
/**
* Unsupported method.
*/
public function getIterator(): \EmptyIterator
{
return new \EmptyIterator();
}
}

View File

@@ -1,21 +0,0 @@
<?php
/*
* This file is part of the Symfony package.
*
* (c) Fabien Potencier <fabien@symfony.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Symfony\Component\Form;
/**
* A type that should be converted into a {@link Button} instance.
*
* @author Bernhard Schussek <bschussek@gmail.com>
*/
interface ButtonTypeInterface extends FormTypeInterface
{
}

View File

@@ -1,616 +0,0 @@
CHANGELOG
=========
6.4
---
* Deprecate using `DateTime` or `DateTimeImmutable` model data with a different timezone than configured with the
`model_timezone` option in `DateType`, `DateTimeType`, and `TimeType`
* Deprecate `PostSetDataEvent::setData()`, use `PreSetDataEvent::setData()` instead
* Deprecate `PostSubmitEvent::setData()`, use `PreSubmitDataEvent::setData()` or `SubmitDataEvent::setData()` instead
* Add `duplicate_preferred_choices` option in `ChoiceType`
* Add `$duplicatePreferredChoices` parameter to `ChoiceListFactoryInterface::createView()`
6.3
---
* Don't render seconds for HTML5 date pickers unless "with_seconds" is explicitly set
* Add a `placeholder_attr` option to `ChoiceType`
* Deprecate not configuring the "widget" option of date/time form types, it will default to "single_text" in v7
6.2
---
* Allow passing `TranslatableInterface` objects to the `ChoiceView` label
* Allow passing `TranslatableInterface` objects to the `help` option
* Deprecate calling `Button/Form::setParent()`, `ButtonBuilder/FormConfigBuilder::setDataMapper()`, `TransformationFailedException::setInvalidMessage()` without arguments
* Change the signature of `FormConfigBuilderInterface::setDataMapper()` to `setDataMapper(?DataMapperInterface)`
* Change the signature of `FormInterface::setParent()` to `setParent(?self)`
* Add `PasswordHasherExtension` with support for `hash_property_path` option in `PasswordType`
6.1
---
* Add a `prototype_options` option to `CollectionType`
6.0
---
* Remove `PropertyPathMaper`
* Remove `Symfony\Component\Form\Extension\Validator\Util\ServerParams`
* Remove `FormPass` configuration
* Remove the `NumberToLocalizedStringTransformer::ROUND_*` constants, use `\NumberFormatter::ROUND_*` instead
* The `rounding_mode` option of the `PercentType` defaults to `\NumberFormatter::ROUND_HALFUP`
* The rounding mode argument of the constructor of `PercentToLocalizedStringTransformer` defaults to `\NumberFormatter::ROUND_HALFUP`
* Add `FormConfigInterface::getIsEmptyCallback()` and `FormConfigBuilderInterface::setIsEmptyCallback()`
* Change `$forms` parameter type of the `DataMapper::mapDataToForms()` method from `iterable` to `\Traversable`
* Change `$forms` parameter type of the `DataMapper::mapFormsToData()` method from `iterable` to `\Traversable`
* Change `$checkboxes` parameter type of the `CheckboxListMapper::mapDataToForms()` method from `iterable` to `\Traversable`
* Change `$checkboxes` parameter type of the `CheckboxListMapper::mapFormsToData()` method from `iterable` to `\Traversable`
* Change `$radios` parameter type of the `RadioListMapper::mapDataToForms()` method from `iterable` to `\Traversable`
* Change `$radios` parameter type of the `RadioListMapper::mapFormsToData()` method from `iterable` to `\Traversable`
5.4
---
* Deprecate calling `FormErrorIterator::children()` if the current element is not iterable.
* Allow to pass `TranslatableMessage` objects to the `help` option
* Add the `EnumType`
5.3
---
* Changed `$forms` parameter type of the `DataMapperInterface::mapDataToForms()` method from `iterable` to `\Traversable`.
* Changed `$forms` parameter type of the `DataMapperInterface::mapFormsToData()` method from `iterable` to `\Traversable`.
* Deprecated passing an array as the second argument of the `DataMapper::mapDataToForms()` method, pass `\Traversable` instead.
* Deprecated passing an array as the first argument of the `DataMapper::mapFormsToData()` method, pass `\Traversable` instead.
* Deprecated passing an array as the second argument of the `CheckboxListMapper::mapDataToForms()` method, pass `\Traversable` instead.
* Deprecated passing an array as the first argument of the `CheckboxListMapper::mapFormsToData()` method, pass `\Traversable` instead.
* Deprecated passing an array as the second argument of the `RadioListMapper::mapDataToForms()` method, pass `\Traversable` instead.
* Deprecated passing an array as the first argument of the `RadioListMapper::mapFormsToData()` method, pass `\Traversable` instead.
* Added a `choice_translation_parameters` option to `ChoiceType`
* Add `UuidType` and `UlidType`
* Dependency on `symfony/intl` was removed. Install `symfony/intl` if you are using `LocaleType`, `CountryType`, `CurrencyType`, `LanguageType` or `TimezoneType`.
* Add `priority` option to `BaseType` and sorting view fields
5.2.0
-----
* Added support for using the `{{ label }}` placeholder in constraint messages, which is replaced in the `ViolationMapper` by the corresponding field form label.
* Added `DataMapper`, `ChainAccessor`, `PropertyPathAccessor` and `CallbackAccessor` with new callable `getter` and `setter` options for each form type
* Deprecated `PropertyPathMapper` in favor of `DataMapper` and `PropertyPathAccessor`
* Added an `html5` option to `MoneyType` and `PercentType`, to use `<input type="number" />`
5.1.0
-----
* Deprecated not configuring the `rounding_mode` option of the `PercentType`. It will default to `\NumberFormatter::ROUND_HALFUP` in Symfony 6.
* Deprecated not passing a rounding mode to the constructor of `PercentToLocalizedStringTransformer`. It will default to `\NumberFormatter::ROUND_HALFUP` in Symfony 6.
* Added `collection_entry` block prefix to `CollectionType` entries
* Added a `choice_filter` option to `ChoiceType`
* Added argument `callable|null $filter` to `ChoiceListFactoryInterface::createListFromChoices()` and `createListFromLoader()` - not defining them is deprecated.
* Added a `ChoiceList` facade to leverage explicit choice list caching based on options
* Added an `AbstractChoiceLoader` to simplify implementations and handle global optimizations
* The `view_timezone` option defaults to the `model_timezone` if no `reference_date` is configured.
* Implementing the `FormConfigInterface` without implementing the `getIsEmptyCallback()` method
is deprecated. The method will be added to the interface in 6.0.
* Implementing the `FormConfigBuilderInterface` without implementing the `setIsEmptyCallback()` method
is deprecated. The method will be added to the interface in 6.0.
* Added a `rounding_mode` option for the PercentType and correctly round the value when submitted
* Deprecated `Symfony\Component\Form\Extension\Validator\Util\ServerParams` in favor of its parent class `Symfony\Component\Form\Util\ServerParams`
* Added the `html5` option to the `ColorType` to validate the input
* Deprecated `NumberToLocalizedStringTransformer::ROUND_*` constants, use `\NumberFormatter::ROUND_*` instead
5.0.0
-----
* Removed support for using different values for the "model_timezone" and "view_timezone" options of the `TimeType`
without configuring a reference date.
* Removed the `scale` option of the `IntegerType`.
* Using the `date_format`, `date_widget`, and `time_widget` options of the `DateTimeType` when the `widget` option is
set to `single_text` is not supported anymore.
* The `format` option of `DateType` and `DateTimeType` cannot be used when the `html5` option is enabled.
* Using names for buttons that do not start with a letter, a digit, or an underscore throw an exception
* Using names for buttons that do not contain only letters, digits, underscores, hyphens, and colons throw an exception.
* removed the `ChoiceLoaderInterface` implementation in `CountryType`, `LanguageType`, `LocaleType` and `CurrencyType`
* removed `getExtendedType()` method of the `FormTypeExtensionInterface`
* added static `getExtendedTypes()` method to the `FormTypeExtensionInterface`
* calling to `FormRenderer::searchAndRenderBlock()` method for fields which were already rendered throw a `BadMethodCallException`
* removed the `regions` option of the `TimezoneType`
* removed the `$scale` argument of the `IntegerToLocalizedStringTransformer`
* removed `TemplatingExtension` and `TemplatingRendererEngine` classes, use Twig instead
* passing a null message when instantiating a `Symfony\Component\Form\FormError` is not allowed
* removed support for using `int` or `float` as data for the `NumberType` when the `input` option is set to `string`
4.4.0
-----
* add new `WeekType`
* using different values for the "model_timezone" and "view_timezone" options of the `TimeType` without configuring a
reference date is deprecated
* preferred choices are repeated in the list of all choices
* deprecated using `int` or `float` as data for the `NumberType` when the `input` option is set to `string`
* The type guesser guesses the HTML accept attribute when a mime type is configured in the File or Image constraint.
* Overriding the methods `FormIntegrationTestCase::setUp()`, `TypeTestCase::setUp()` and `TypeTestCase::tearDown()` without the `void` return-type is deprecated.
* marked all dispatched event classes as `@final`
* Added the `validate` option to `SubmitType` to toggle the browser built-in form validation.
* Added the `alpha3` option to `LanguageType` and `CountryType` to use alpha3 instead of alpha2 codes
4.3.0
-----
* added a `symbol` option to the `PercentType` that allows to disable or customize the output of the percent character
* Using the `format` option of `DateType` and `DateTimeType` when the `html5` option is enabled is deprecated.
* Using names for buttons that do not start with a letter, a digit, or an underscore is deprecated and will lead to an
exception in 5.0.
* Using names for buttons that do not contain only letters, digits, underscores, hyphens, and colons is deprecated and
will lead to an exception in 5.0.
* added `html5` option to `NumberType` that allows to render `type="number"` input fields
* deprecated using the `date_format`, `date_widget`, and `time_widget` options of the `DateTimeType` when the `widget`
option is set to `single_text`
* added `block_prefix` option to `BaseType`.
* added `help_html` option to display the `help` text as HTML.
* `FormError` doesn't implement `Serializable` anymore
* `FormDataCollector` has been marked as `final`
* added `label_translation_parameters`, `attr_translation_parameters`, `help_translation_parameters` options
to `FormType` to pass translation parameters to form labels, attributes (`placeholder` and `title`) and help text respectively.
The passed parameters will replace placeholders in translation messages.
```php
class OrderType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add('comment', TextType::class, [
'label' => 'Comment to the order to %company%',
'label_translation_parameters' => [
'%company%' => 'Acme',
],
'help' => 'The address of the %company% is %address%',
'help_translation_parameters' => [
'%company%' => 'Acme Ltd.',
'%address%' => '4 Form street, Symfonyville',
],
])
}
}
```
* added the `input_format` option to `DateType`, `DateTimeType`, and `TimeType` to specify the input format when setting
the `input` option to `string`
* dispatch `PreSubmitEvent` on `form.pre_submit`
* dispatch `SubmitEvent` on `form.submit`
* dispatch `PostSubmitEvent` on `form.post_submit`
* dispatch `PreSetDataEvent` on `form.pre_set_data`
* dispatch `PostSetDataEvent` on `form.post_set_data`
* added an `input` option to `NumberType`
* removed default option grouping in `TimezoneType`, use `group_by` instead
4.2.0
-----
* The `getExtendedType()` method of the `FormTypeExtensionInterface` is deprecated and will be removed in 5.0. Type
extensions must implement the static `getExtendedTypes()` method instead and return an iterable of extended types.
Before:
```php
class FooTypeExtension extends AbstractTypeExtension
{
public function getExtendedType()
{
return FormType::class;
}
// ...
}
```
After:
```php
class FooTypeExtension extends AbstractTypeExtension
{
public static function getExtendedTypes(): iterable
{
return [FormType::class];
}
// ...
}
```
* deprecated the `$scale` argument of the `IntegerToLocalizedStringTransformer`
* added `Symfony\Component\Form\ClearableErrorsInterface`
* deprecated calling `FormRenderer::searchAndRenderBlock` for fields which were already rendered
* added a cause when a CSRF error has occurred
* deprecated the `scale` option of the `IntegerType`
* removed restriction on allowed HTTP methods
* deprecated the `regions` option of the `TimezoneType`
4.1.0
-----
* added `input=datetime_immutable` to `DateType`, `TimeType`, `DateTimeType`
* added `rounding_mode` option to `MoneyType`
* added `choice_translation_locale` option to `CountryType`, `LanguageType`, `LocaleType` and `CurrencyType`
* deprecated the `ChoiceLoaderInterface` implementation in `CountryType`, `LanguageType`, `LocaleType` and `CurrencyType`
* added `input=datetime_immutable` to DateType, TimeType, DateTimeType
* added `rounding_mode` option to MoneyType
4.0.0
-----
* using the `choices` option in `CountryType`, `CurrencyType`, `LanguageType`,
`LocaleType`, and `TimezoneType` when the `choice_loader` option is not `null`
is not supported anymore and the configured choices will be ignored
* callable strings that are passed to the options of the `ChoiceType` are
treated as property paths
* the `choices_as_values` option of the `ChoiceType` has been removed
* removed the support for caching loaded choice lists in `LazyChoiceList`,
cache the choice list in the used `ChoiceLoaderInterface` implementation
instead
* removed the support for objects implementing both `\Traversable` and `\ArrayAccess` in `ResizeFormListener::preSubmit()`
* removed the ability to use `FormDataCollector` without the `symfony/var-dumper` component
* removed passing a `ValueExporter` instance to the `FormDataExtractor::__construct()` method
* removed passing guesser services ids as the fourth argument of `DependencyInjectionExtension::__construct()`
* removed the ability to validate an unsubmitted form.
* removed `ChoiceLoaderInterface` implementation in `TimezoneType`
* added the `false_values` option to the `CheckboxType` which allows to configure custom values which will be treated as `false` during submission
3.4.0
-----
* added `DebugCommand`
* deprecated `ChoiceLoaderInterface` implementation in `TimezoneType`
* added options "input" and "regions" to `TimezoneType`
* added an option to ``Symfony\Component\Form\FormRendererEngineInterface::setTheme()`` and
``Symfony\Component\Form\FormRendererInterface::setTheme()`` to disable usage of default themes when rendering a form
3.3.0
-----
* deprecated using "choices" option in ``CountryType``, ``CurrencyType``, ``LanguageType``, ``LocaleType``, and
``TimezoneType`` when "choice_loader" is not ``null``
* added `Symfony\Component\Form\FormErrorIterator::findByCodes()`
* added `getTypedExtensions`, `getTypes`, and `getTypeGuessers` to `Symfony\Component\Form\Test\FormIntegrationTestCase`
* added `FormPass`
3.2.0
-----
* added `CallbackChoiceLoader`
* implemented `ChoiceLoaderInterface` in children of `ChoiceType`
3.1.0
-----
* deprecated the "choices_as_values" option of ChoiceType
* deprecated support for data objects that implements both `Traversable` and
`ArrayAccess` in `ResizeFormListener::preSubmit` method
* Using callable strings as choice options in `ChoiceType` has been deprecated
and will be used as `PropertyPath` instead of callable in Symfony 4.0.
* implemented `DataTransformerInterface` in `TextType`
* deprecated caching loaded choice list in `LazyChoiceList::$loadedList`
3.0.0
-----
* removed `FormTypeInterface::setDefaultOptions()` method
* removed `AbstractType::setDefaultOptions()` method
* removed `FormTypeExtensionInterface::setDefaultOptions()` method
* removed `AbstractTypeExtension::setDefaultOptions()` method
* added `FormTypeInterface::configureOptions()` method
* added `FormTypeExtensionInterface::configureOptions()` method
2.8.0
-----
* added option "choice_translation_domain" to DateType, TimeType and DateTimeType.
* deprecated option "read_only" in favor of "attr['readonly']"
* added the html5 "range" FormType
* deprecated the "cascade_validation" option in favor of setting "constraints"
with the Valid constraint
* moved data trimming logic of TrimListener into StringUtil
* [BC BREAK] When registering a type extension through the DI extension, the tag alias has to match the actual extended type.
2.7.38
------
* [BC BREAK] the `isFileUpload()` method was added to the `RequestHandlerInterface`
2.7.0
-----
* added option "choice_translation_domain" to ChoiceType.
* deprecated option "precision" in favor of "scale"
* deprecated the overwriting of AbstractType::setDefaultOptions() in favor of overwriting AbstractType::configureOptions().
* deprecated the overwriting of AbstractTypeExtension::setDefaultOptions() in favor of overwriting AbstractTypeExtension::configureOptions().
* added new ChoiceList interface and implementations in the Symfony\Component\Form\ChoiceList namespace
* added new ChoiceView in the Symfony\Component\Form\ChoiceList\View namespace
* choice groups are now represented by ChoiceGroupView objects in the view
* deprecated the old ChoiceList interface and implementations
* deprecated the old ChoiceView class
* added CheckboxListMapper and RadioListMapper
* deprecated ChoiceToBooleanArrayTransformer and ChoicesToBooleanArrayTransformer
* deprecated FixCheckboxInputListener and FixRadioInputListener
* deprecated the "choice_list" option of ChoiceType
* added new options to ChoiceType:
* "choices_as_values"
* "choice_loader"
* "choice_label"
* "choice_name"
* "choice_value"
* "choice_attr"
* "group_by"
2.6.2
-----
* Added back the `model_timezone` and `view_timezone` options for `TimeType`, `DateType`
and `BirthdayType`
2.6.0
-----
* added "html5" option to Date, Time and DateTimeFormType to be able to
enable/disable HTML5 input date when widget option is "single_text"
* added "label_format" option with possible placeholders "%name%" and "%id%"
* [BC BREAK] drop support for model_timezone and view_timezone options in TimeType, DateType and BirthdayType,
update to 2.6.2 to get back support for these options
2.5.0
------
* deprecated options "max_length" and "pattern" in favor of putting these values in "attr" option
* added an option for multiple files upload
* form errors now reference their cause (constraint violation, exception, ...)
* form errors now remember which form they were originally added to
* [BC BREAK] added two optional parameters to FormInterface::getErrors() and
changed the method to return a Symfony\Component\Form\FormErrorIterator
instance instead of an array
* errors mapped to unsubmitted forms are discarded now
* ObjectChoiceList now compares choices by their value, if a value path is
given
* you can now pass interface names in the "data_class" option
* [BC BREAK] added `FormInterface::getTransformationFailure()`
2.4.0
-----
* moved CSRF implementation to the new Security CSRF sub-component
* deprecated CsrfProviderInterface and its implementations
* deprecated options "csrf_provider" and "intention" in favor of the new options "csrf_token_manager" and "csrf_token_id"
2.3.0
-----
* deprecated FormPerformanceTestCase and FormIntegrationTestCase in the Symfony\Component\Form\Tests namespace and moved them to the Symfony\Component\Form\Test namespace
* deprecated TypeTestCase in the Symfony\Component\Form\Tests\Extension\Core\Type namespace and moved it to the Symfony\Component\Form\Test namespace
* changed FormRenderer::humanize() to humanize also camel cased field name
* added RequestHandlerInterface and FormInterface::handleRequest()
* deprecated passing a Request instance to FormInterface::bind()
* added options "method" and "action" to FormType
* deprecated option "virtual" in favor "inherit_data"
* deprecated VirtualFormAwareIterator in favor of InheritDataAwareIterator
* [BC BREAK] removed the "array" type hint from DataMapperInterface
* improved forms inheriting their parent data to actually return that data from getData(), getNormData() and getViewData()
* added component-level exceptions for various SPL exceptions
changed all uses of the deprecated Exception class to use more specialized exceptions instead
removed NotInitializedException, NotValidException, TypeDefinitionException, TypeLoaderException, CreationException
* added events PRE_SUBMIT, SUBMIT and POST_SUBMIT
* deprecated events PRE_BIND, BIND and POST_BIND
* [BC BREAK] renamed bind() and isBound() in FormInterface to submit() and isSubmitted()
* added methods submit() and isSubmitted() to Form
* deprecated bind() and isBound() in Form
* deprecated AlreadyBoundException in favor of AlreadySubmittedException
* added support for PATCH requests
* [BC BREAK] added initialize() to FormInterface
* [BC BREAK] added getAutoInitialize() to FormConfigInterface
* [BC BREAK] added setAutoInitialize() to FormConfigBuilderInterface
* [BC BREAK] initialization for Form instances added to a form tree must be manually disabled
* PRE_SET_DATA is now guaranteed to be called after children were added by the form builder,
unless FormInterface::setData() is called manually
* fixed CSRF error message to be translated
* custom CSRF error messages can now be set through the "csrf_message" option
* fixed: expanded single-choice fields now show a radio button for the empty value
2.2.0
-----
* TrimListener now removes unicode whitespaces
* deprecated getParent(), setParent() and hasParent() in FormBuilderInterface
* FormInterface::add() now accepts a FormInterface instance OR a field's name, type and options
* removed special characters between the choice or text fields of DateType unless
the option "format" is set to a custom value
* deprecated FormException and introduced ExceptionInterface instead
* [BC BREAK] FormException is now an interface
* protected FormBuilder methods from being called when it is turned into a FormConfigInterface with getFormConfig()
* [BC BREAK] inserted argument `$message` in the constructor of `FormError`
* the PropertyPath class and related classes were moved to a dedicated
PropertyAccess component. During the move, InvalidPropertyException was
renamed to NoSuchPropertyException. FormUtil was split: FormUtil::singularify()
can now be found in Symfony\Component\PropertyAccess\StringUtil. The methods
getValue() and setValue() from PropertyPath were extracted into a new class
PropertyAccessor.
* added an optional PropertyAccessorInterface parameter to FormType,
ObjectChoiceList and PropertyPathMapper
* [BC BREAK] PropertyPathMapper and FormType now have a constructor
* [BC BREAK] setting the option "validation_groups" to ``false`` now disables validation
instead of assuming group "Default"
2.1.0
-----
* [BC BREAK] ``read_only`` field attribute now renders as ``readonly="readonly"``, use ``disabled`` instead
* [BC BREAK] child forms now aren't validated anymore by default
* made validation of form children configurable (new option: cascade_validation)
* added support for validation groups as callbacks
* made the translation catalogue configurable via the "translation_domain" option
* added Form::getErrorsAsString() to help debugging forms
* allowed setting different options for RepeatedType fields (like the label)
* added support for empty form name at root level, this enables rendering forms
without form name prefix in field names
* [BC BREAK] form and field names must start with a letter, digit or underscore
and only contain letters, digits, underscores, hyphens and colons
* [BC BREAK] changed default name of the prototype in the "collection" type
from "$$name$$" to "\__name\__". No dollars are appended/prepended to custom
names anymore.
* [BC BREAK] improved ChoiceListInterface
* [BC BREAK] added SimpleChoiceList and LazyChoiceList as replacement of
ArrayChoiceList
* added ChoiceList and ObjectChoiceList to use objects as choices
* [BC BREAK] removed EntitiesToArrayTransformer and EntityToIdTransformer.
The former has been replaced by CollectionToArrayTransformer in combination
with EntityChoiceList, the latter is not required in the core anymore.
* [BC BREAK] renamed
* ArrayToBooleanChoicesTransformer to ChoicesToBooleanArrayTransformer
* ScalarToBooleanChoicesTransformer to ChoiceToBooleanArrayTransformer
* ArrayToChoicesTransformer to ChoicesToValuesTransformer
* ScalarToChoiceTransformer to ChoiceToValueTransformer
to be consistent with the naming in ChoiceListInterface.
They were merged into ChoiceList and have no public equivalent anymore.
* choice fields now throw a FormException if neither the "choices" nor the
"choice_list" option is set
* the radio type is now a child of the checkbox type
* the collection, choice (with multiple selection) and entity (with multiple
selection) types now make use of addXxx() and removeXxx() methods in your
model if you set "by_reference" to false. For a custom, non-recognized
singular form, set the "property_path" option like this: "plural|singular"
* forms now don't create an empty object anymore if they are completely
empty and not required. The empty value for such forms is null.
* added constant Guess::VERY_HIGH_CONFIDENCE
* [BC BREAK] The methods `add`, `remove`, `setParent`, `bind` and `setData`
in class Form now throw an exception if the form is already bound
* fields of constrained classes without a NotBlank or NotNull constraint are
set to not required now, as stated in the docs
* fixed TimeType and DateTimeType to not display seconds when "widget" is
"single_text" unless "with_seconds" is set to true
* checkboxes of in an expanded multiple-choice field don't include the choice
in their name anymore. Their names terminate with "[]" now.
* deprecated FormValidatorInterface and substituted its implementations
by event subscribers
* simplified CSRF protection and removed the csrf type
* deprecated FieldType and merged it into FormType
* added new option "compound" that lets you switch between field and form behavior
* [BC BREAK] renamed theme blocks
* "field_*" to "form_*"
* "field_widget" to "form_widget_simple"
* "widget_choice_options" to "choice_widget_options"
* "generic_label" to "form_label"
* added theme blocks "form_widget_compound", "choice_widget_expanded" and
"choice_widget_collapsed" to make theming more modular
* ValidatorTypeGuesser now guesses "collection" for array type constraint
* added method `guessPattern` to FormTypeGuesserInterface to guess which pattern to use in the HTML5 attribute "pattern"
* deprecated method `guessMinLength` in favor of `guessPattern`
* labels don't display field attributes anymore. Label attributes can be
passed in the "label_attr" option/variable
* added option "mapped" which should be used instead of setting "property_path" to false
* [BC BREAK] "data_class" now *must* be set if a form maps to an object and should be left empty otherwise
* improved error mapping on forms
* dot (".") rules are now allowed to map errors assigned to a form to
one of its children
* errors are not mapped to unsynchronized forms anymore
* [BC BREAK] changed Form constructor to accept a single `FormConfigInterface` object
* [BC BREAK] changed argument order in the FormBuilder constructor
* added Form method `getViewData`
* deprecated Form methods
* `getTypes`
* `getErrorBubbling`
* `getNormTransformers`
* `getClientTransformers`
* `getAttribute`
* `hasAttribute`
* `getClientData`
* added FormBuilder methods
* `getTypes`
* `addViewTransformer`
* `getViewTransformers`
* `resetViewTransformers`
* `addModelTransformer`
* `getModelTransformers`
* `resetModelTransformers`
* deprecated FormBuilder methods
* `prependClientTransformer`
* `appendClientTransformer`
* `getClientTransformers`
* `resetClientTransformers`
* `prependNormTransformer`
* `appendNormTransformer`
* `getNormTransformers`
* `resetNormTransformers`
* deprecated the option "validation_constraint" in favor of the new
option "constraints"
* removed superfluous methods from DataMapperInterface
* `mapFormToData`
* `mapDataToForm`
* added `setDefaultOptions` to FormTypeInterface and FormTypeExtensionInterface
which accepts an OptionsResolverInterface instance
* deprecated the methods `getDefaultOptions` and `getAllowedOptionValues`
in FormTypeInterface and FormTypeExtensionInterface
* options passed during construction can now be accessed from FormConfigInterface
* added FormBuilderInterface and FormConfigEditorInterface
* [BC BREAK] the method `buildForm` in FormTypeInterface and FormTypeExtensionInterface
now receives a FormBuilderInterface instead of a FormBuilder instance
* [BC BREAK] the method `buildViewBottomUp` was renamed to `finishView` in
FormTypeInterface and FormTypeExtensionInterface
* [BC BREAK] the options array is now passed as last argument of the
methods
* `buildView`
* `finishView`
in FormTypeInterface and FormTypeExtensionInterface
* [BC BREAK] no options are passed to `getParent` of FormTypeInterface anymore
* deprecated DataEvent and FilterDataEvent in favor of the new FormEvent which is
now passed to all events thrown by the component
* FormEvents::BIND now replaces FormEvents::BIND_NORM_DATA
* FormEvents::PRE_SET_DATA now replaces FormEvents::SET_DATA
* FormEvents::PRE_BIND now replaces FormEvents::BIND_CLIENT_DATA
* deprecated FormEvents::SET_DATA, FormEvents::BIND_CLIENT_DATA and
FormEvents::BIND_NORM_DATA
* [BC BREAK] reversed the order of the first two arguments to `createNamed`
and `createNamedBuilder` in `FormFactoryInterface`
* deprecated `getChildren` in Form and FormBuilder in favor of `all`
* deprecated `hasChildren` in Form and FormBuilder in favor of `count`
* FormBuilder now implements \IteratorAggregate
* [BC BREAK] compound forms now always need a data mapper
* FormBuilder now maintains the order when explicitly adding form builders as children
* ChoiceType now doesn't add the empty value anymore if the choices already contain an empty element
* DateType, TimeType and DateTimeType now show empty values again if not required
* [BC BREAK] fixed rendering of errors for DateType, BirthdayType and similar ones
* [BC BREAK] fixed: form constraints are only validated if they belong to the validated group
* deprecated `bindRequest` in `Form` and replaced it by a listener to FormEvents::PRE_BIND
* fixed: the "data" option supersedes default values from the model
* changed DateType to refer to the "format" option for calculating the year and day choices instead
of padding them automatically
* [BC BREAK] DateType defaults to the format "yyyy-MM-dd" now if the widget is
"single_text", in order to support the HTML 5 date field out of the box
* added the option "format" to DateTimeType
* [BC BREAK] DateTimeType now outputs RFC 3339 dates by default, as generated and
consumed by HTML5 browsers, if the widget is "single_text"
* deprecated the options "data_timezone" and "user_timezone" in DateType, DateTimeType and TimeType
and renamed them to "model_timezone" and "view_timezone"
* fixed: TransformationFailedExceptions thrown in the model transformer are now caught by the form
* added FormRegistryInterface, ResolvedFormTypeInterface and ResolvedFormTypeFactoryInterface
* deprecated FormFactory methods
* `addType`
* `hasType`
* `getType`
* [BC BREAK] FormFactory now expects a FormRegistryInterface and a ResolvedFormTypeFactoryInterface as constructor argument
* [BC BREAK] The method `createBuilder` in FormTypeInterface is not supported anymore for performance reasons
* [BC BREAK] Removed `setTypes` from FormBuilder
* deprecated AbstractType methods
* `getExtensions`
* `setExtensions`
* ChoiceType now caches its created choice lists to improve performance
* [BC BREAK] Rows of a collection field cannot be themed individually anymore. All rows in the collection
field now have the same block names, which contains "entry" where it previously contained the row index.
* [BC BREAK] When registering a type through the DI extension, the tag alias has to match the actual type name.
* added FormRendererInterface, FormRendererEngineInterface and implementations of these interfaces
* [BC BREAK] removed the following methods from FormUtil:
* `toArrayKey`
* `toArrayKeys`
* `isChoiceGroup`
* `isChoiceSelected`
* [BC BREAK] renamed method `renderBlock` in FormHelper to `block` and changed its signature
* made FormView properties public and deprecated their accessor methods
* made the normalized data of a form accessible in the template through the variable "form.vars.data"
* made the original data of a choice accessible in the template through the property "choice.data"
* added convenience class Forms and FormFactoryBuilderInterface

View File

@@ -1,34 +0,0 @@
<?php
/*
* This file is part of the Symfony package.
*
* (c) Fabien Potencier <fabien@symfony.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Symfony\Component\Form;
class CallbackTransformer implements DataTransformerInterface
{
private \Closure $transform;
private \Closure $reverseTransform;
public function __construct(callable $transform, callable $reverseTransform)
{
$this->transform = $transform(...);
$this->reverseTransform = $reverseTransform(...);
}
public function transform(mixed $data): mixed
{
return ($this->transform)($data);
}
public function reverseTransform(mixed $data): mixed
{
return ($this->reverseTransform)($data);
}
}

View File

@@ -1,219 +0,0 @@
<?php
/*
* This file is part of the Symfony package.
*
* (c) Fabien Potencier <fabien@symfony.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Symfony\Component\Form\ChoiceList;
/**
* A list of choices with arbitrary data types.
*
* The user of this class is responsible for assigning string values to the
* choices and for their uniqueness.
* Both the choices and their values are passed to the constructor.
* Each choice must have a corresponding value (with the same key) in
* the values array.
*
* @author Bernhard Schussek <bschussek@gmail.com>
*/
class ArrayChoiceList implements ChoiceListInterface
{
/**
* The choices in the list.
*
* @var array
*/
protected $choices;
/**
* The values indexed by the original keys.
*
* @var array
*/
protected $structuredValues;
/**
* The original keys of the choices array.
*
* @var int[]|string[]
*/
protected $originalKeys;
protected $valueCallback;
/**
* Creates a list with the given choices and values.
*
* The given choice array must have the same array keys as the value array.
*
* @param iterable $choices The selectable choices
* @param callable|null $value The callable for creating the value
* for a choice. If `null` is passed,
* incrementing integers are used as
* values
*/
public function __construct(iterable $choices, ?callable $value = null)
{
if ($choices instanceof \Traversable) {
$choices = iterator_to_array($choices);
}
if (null === $value && $this->castableToString($choices)) {
$value = static fn ($choice) => false === $choice ? '0' : (string) $choice;
}
if (null !== $value) {
// If a deterministic value generator was passed, use it later
$this->valueCallback = $value(...);
} else {
// Otherwise generate incrementing integers as values
$value = static function () {
static $i = 0;
return $i++;
};
}
// If the choices are given as recursive array (i.e. with explicit
// choice groups), flatten the array. The grouping information is needed
// in the view only.
$this->flatten($choices, $value, $choicesByValues, $keysByValues, $structuredValues);
$this->choices = $choicesByValues;
$this->originalKeys = $keysByValues;
$this->structuredValues = $structuredValues;
}
public function getChoices(): array
{
return $this->choices;
}
public function getValues(): array
{
return array_map('strval', array_keys($this->choices));
}
public function getStructuredValues(): array
{
return $this->structuredValues;
}
public function getOriginalKeys(): array
{
return $this->originalKeys;
}
public function getChoicesForValues(array $values): array
{
$choices = [];
foreach ($values as $i => $givenValue) {
if (\array_key_exists($givenValue ?? '', $this->choices)) {
$choices[$i] = $this->choices[$givenValue];
}
}
return $choices;
}
public function getValuesForChoices(array $choices): array
{
$values = [];
// Use the value callback to compare choices by their values, if present
if ($this->valueCallback) {
$givenValues = [];
foreach ($choices as $i => $givenChoice) {
$givenValues[$i] = (string) ($this->valueCallback)($givenChoice);
}
return array_intersect($givenValues, array_keys($this->choices));
}
// Otherwise compare choices by identity
foreach ($choices as $i => $givenChoice) {
foreach ($this->choices as $value => $choice) {
if ($choice === $givenChoice) {
$values[$i] = (string) $value;
break;
}
}
}
return $values;
}
/**
* Flattens an array into the given output variables.
*
* @param array $choices The array to flatten
* @param callable $value The callable for generating choice values
* @param array|null $choicesByValues The flattened choices indexed by the
* corresponding values
* @param array|null $keysByValues The original keys indexed by the
* corresponding values
* @param array|null $structuredValues The values indexed by the original keys
*
* @internal
*/
protected function flatten(array $choices, callable $value, ?array &$choicesByValues, ?array &$keysByValues, ?array &$structuredValues): void
{
if (null === $choicesByValues) {
$choicesByValues = [];
$keysByValues = [];
$structuredValues = [];
}
foreach ($choices as $key => $choice) {
if (\is_array($choice)) {
$this->flatten($choice, $value, $choicesByValues, $keysByValues, $structuredValues[$key]);
continue;
}
$choiceValue = (string) $value($choice);
$choicesByValues[$choiceValue] = $choice;
$keysByValues[$choiceValue] = $key;
$structuredValues[$key] = $choiceValue;
}
}
/**
* Checks whether the given choices can be cast to strings without
* generating duplicates.
* This method is responsible for preventing conflict between scalar values
* and the empty value.
*/
private function castableToString(array $choices, array &$cache = []): bool
{
foreach ($choices as $choice) {
if (\is_array($choice)) {
if (!$this->castableToString($choice, $cache)) {
return false;
}
continue;
} elseif (!\is_scalar($choice)) {
return false;
}
// prevent having false casted to the empty string by isset()
$choice = false === $choice ? '0' : (string) $choice;
if (isset($cache[$choice])) {
return false;
}
$cache[$choice] = true;
}
return true;
}
}

View File

@@ -1,149 +0,0 @@
<?php
/*
* This file is part of the Symfony package.
*
* (c) Fabien Potencier <fabien@symfony.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Symfony\Component\Form\ChoiceList;
use Symfony\Component\Form\ChoiceList\Factory\Cache\ChoiceAttr;
use Symfony\Component\Form\ChoiceList\Factory\Cache\ChoiceFieldName;
use Symfony\Component\Form\ChoiceList\Factory\Cache\ChoiceFilter;
use Symfony\Component\Form\ChoiceList\Factory\Cache\ChoiceLabel;
use Symfony\Component\Form\ChoiceList\Factory\Cache\ChoiceLoader;
use Symfony\Component\Form\ChoiceList\Factory\Cache\ChoiceTranslationParameters;
use Symfony\Component\Form\ChoiceList\Factory\Cache\ChoiceValue;
use Symfony\Component\Form\ChoiceList\Factory\Cache\GroupBy;
use Symfony\Component\Form\ChoiceList\Factory\Cache\PreferredChoice;
use Symfony\Component\Form\ChoiceList\Loader\CallbackChoiceLoader;
use Symfony\Component\Form\ChoiceList\Loader\ChoiceLoaderInterface;
use Symfony\Component\Form\FormTypeExtensionInterface;
use Symfony\Component\Form\FormTypeInterface;
/**
* A set of convenient static methods to create cacheable choice list options.
*
* @author Jules Pietri <jules@heahprod.com>
*/
final class ChoiceList
{
/**
* Creates a cacheable loader from any callable providing iterable choices.
*
* @param callable $choices A callable that must return iterable choices or grouped choices
* @param mixed $vary Dynamic data used to compute a unique hash when caching the loader
*/
public static function lazy(FormTypeInterface|FormTypeExtensionInterface $formType, callable $choices, mixed $vary = null): ChoiceLoader
{
return self::loader($formType, new CallbackChoiceLoader($choices), $vary);
}
/**
* Decorates a loader to make it cacheable.
*
* @param ChoiceLoaderInterface $loader A loader responsible for creating loading choices or grouped choices
* @param mixed $vary Dynamic data used to compute a unique hash when caching the loader
*/
public static function loader(FormTypeInterface|FormTypeExtensionInterface $formType, ChoiceLoaderInterface $loader, mixed $vary = null): ChoiceLoader
{
return new ChoiceLoader($formType, $loader, $vary);
}
/**
* Decorates a "choice_value" callback to make it cacheable.
*
* @param callable|array $value Any pseudo callable to create a unique string value from a choice
* @param mixed $vary Dynamic data used to compute a unique hash when caching the callback
*/
public static function value(FormTypeInterface|FormTypeExtensionInterface $formType, callable|array $value, mixed $vary = null): ChoiceValue
{
return new ChoiceValue($formType, $value, $vary);
}
/**
* @param callable|array $filter Any pseudo callable to filter a choice list
* @param mixed $vary Dynamic data used to compute a unique hash when caching the callback
*/
public static function filter(FormTypeInterface|FormTypeExtensionInterface $formType, callable|array $filter, mixed $vary = null): ChoiceFilter
{
return new ChoiceFilter($formType, $filter, $vary);
}
/**
* Decorates a "choice_label" option to make it cacheable.
*
* @param callable|false $label Any pseudo callable to create a label from a choice or false to discard it
* @param mixed $vary Dynamic data used to compute a unique hash when caching the option
*/
public static function label(FormTypeInterface|FormTypeExtensionInterface $formType, callable|false $label, mixed $vary = null): ChoiceLabel
{
return new ChoiceLabel($formType, $label, $vary);
}
/**
* Decorates a "choice_name" callback to make it cacheable.
*
* @param callable|array $fieldName Any pseudo callable to create a field name from a choice
* @param mixed $vary Dynamic data used to compute a unique hash when caching the callback
*/
public static function fieldName(FormTypeInterface|FormTypeExtensionInterface $formType, callable|array $fieldName, mixed $vary = null): ChoiceFieldName
{
return new ChoiceFieldName($formType, $fieldName, $vary);
}
/**
* Decorates a "choice_attr" option to make it cacheable.
*
* @param callable|array $attr Any pseudo callable or array to create html attributes from a choice
* @param mixed $vary Dynamic data used to compute a unique hash when caching the option
*/
public static function attr(FormTypeInterface|FormTypeExtensionInterface $formType, callable|array $attr, mixed $vary = null): ChoiceAttr
{
return new ChoiceAttr($formType, $attr, $vary);
}
/**
* Decorates a "choice_translation_parameters" option to make it cacheable.
*
* @param callable|array $translationParameters Any pseudo callable or array to create translation parameters from a choice
* @param mixed $vary Dynamic data used to compute a unique hash when caching the option
*/
public static function translationParameters(FormTypeInterface|FormTypeExtensionInterface $formType, callable|array $translationParameters, mixed $vary = null): ChoiceTranslationParameters
{
return new ChoiceTranslationParameters($formType, $translationParameters, $vary);
}
/**
* Decorates a "group_by" callback to make it cacheable.
*
* @param callable|array $groupBy Any pseudo callable to return a group name from a choice
* @param mixed $vary Dynamic data used to compute a unique hash when caching the callback
*/
public static function groupBy(FormTypeInterface|FormTypeExtensionInterface $formType, callable|array $groupBy, mixed $vary = null): GroupBy
{
return new GroupBy($formType, $groupBy, $vary);
}
/**
* Decorates a "preferred_choices" option to make it cacheable.
*
* @param callable|array $preferred Any pseudo callable or array to return a group name from a choice
* @param mixed $vary Dynamic data used to compute a unique hash when caching the option
*/
public static function preferred(FormTypeInterface|FormTypeExtensionInterface $formType, callable|array $preferred, mixed $vary = null): PreferredChoice
{
return new PreferredChoice($formType, $preferred, $vary);
}
/**
* Should not be instantiated.
*/
private function __construct()
{
}
}

View File

@@ -1,138 +0,0 @@
<?php
/*
* This file is part of the Symfony package.
*
* (c) Fabien Potencier <fabien@symfony.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Symfony\Component\Form\ChoiceList;
/**
* A list of choices that can be selected in a choice field.
*
* A choice list assigns unique string values to each of a list of choices.
* These string values are displayed in the "value" attributes in HTML and
* submitted back to the server.
*
* The acceptable data types for the choices depend on the implementation.
* Values must always be strings and (within the list) free of duplicates.
*
* @author Bernhard Schussek <bschussek@gmail.com>
*/
interface ChoiceListInterface
{
/**
* Returns all selectable choices.
*
* @return array The selectable choices indexed by the corresponding values
*/
public function getChoices(): array;
/**
* Returns the values for the choices.
*
* The values are strings that do not contain duplicates:
*
* $form->add('field', 'choice', [
* 'choices' => [
* 'Decided' => ['Yes' => true, 'No' => false],
* 'Undecided' => ['Maybe' => null],
* ],
* ]);
*
* In this example, the result of this method is:
*
* [
* 'Yes' => '0',
* 'No' => '1',
* 'Maybe' => '2',
* ]
*
* Null and false MUST NOT conflict when being casted to string.
* For this some default incremented values SHOULD be computed.
*
* @return string[]
*/
public function getValues(): array;
/**
* Returns the values in the structure originally passed to the list.
*
* Contrary to {@link getValues()}, the result is indexed by the original
* keys of the choices. If the original array contained nested arrays, these
* nested arrays are represented here as well:
*
* $form->add('field', 'choice', [
* 'choices' => [
* 'Decided' => ['Yes' => true, 'No' => false],
* 'Undecided' => ['Maybe' => null],
* ],
* ]);
*
* In this example, the result of this method is:
*
* [
* 'Decided' => ['Yes' => '0', 'No' => '1'],
* 'Undecided' => ['Maybe' => '2'],
* ]
*
* Nested arrays do not make sense in a view format unless
* they are used as a convenient way of grouping.
* If the implementation does not intend to support grouped choices,
* this method SHOULD be equivalent to {@link getValues()}.
* The $groupBy callback parameter SHOULD be used instead.
*
* @return string[]
*/
public function getStructuredValues(): array;
/**
* Returns the original keys of the choices.
*
* The original keys are the keys of the choice array that was passed in the
* "choice" option of the choice type. Note that this array may contain
* duplicates if the "choice" option contained choice groups:
*
* $form->add('field', 'choice', [
* 'choices' => [
* 'Decided' => [true, false],
* 'Undecided' => [null],
* ],
* ]);
*
* In this example, the original key 0 appears twice, once for `true` and
* once for `null`.
*
* @return int[]|string[] The original choice keys indexed by the
* corresponding choice values
*/
public function getOriginalKeys(): array;
/**
* Returns the choices corresponding to the given values.
*
* The choices are returned with the same keys and in the same order as the
* corresponding values in the given array.
*
* @param string[] $values An array of choice values. Non-existing values in
* this array are ignored
*/
public function getChoicesForValues(array $values): array;
/**
* Returns the values corresponding to the given choices.
*
* The values are returned with the same keys and in the same order as the
* corresponding choices in the given array.
*
* @param array $choices An array of choices. Non-existing choices in this
* array are ignored
*
* @return string[]
*/
public function getValuesForChoices(array $choices): array;
}

View File

@@ -1,55 +0,0 @@
<?php
/*
* This file is part of the Symfony package.
*
* (c) Fabien Potencier <fabien@symfony.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Symfony\Component\Form\ChoiceList\Factory\Cache;
use Symfony\Component\Form\ChoiceList\Factory\CachingFactoryDecorator;
use Symfony\Component\Form\ChoiceList\Loader\ChoiceLoaderInterface;
use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
use Symfony\Component\Form\FormTypeExtensionInterface;
use Symfony\Component\Form\FormTypeInterface;
/**
* A template decorator for static {@see ChoiceType} options.
*
* Used as fly weight for {@see CachingFactoryDecorator}.
*
* @internal
*
* @author Jules Pietri <jules@heahprod.com>
*/
abstract class AbstractStaticOption
{
private static array $options = [];
private bool|string|array|\Closure|ChoiceLoaderInterface $option;
/**
* @param mixed $option Any pseudo callable, array, string or bool to define a choice list option
* @param mixed $vary Dynamic data used to compute a unique hash when caching the option
*/
final public function __construct(FormTypeInterface|FormTypeExtensionInterface $formType, mixed $option, mixed $vary = null)
{
$hash = CachingFactoryDecorator::generateHash([static::class, $formType, $vary]);
$this->option = self::$options[$hash] ??= $option instanceof \Closure || \is_string($option) || \is_bool($option) || $option instanceof ChoiceLoaderInterface || !\is_callable($option) ? $option : $option(...);
}
final public function getOption(): mixed
{
return $this->option;
}
final public static function reset(): void
{
self::$options = [];
}
}

View File

@@ -1,27 +0,0 @@
<?php
/*
* This file is part of the Symfony package.
*
* (c) Fabien Potencier <fabien@symfony.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Symfony\Component\Form\ChoiceList\Factory\Cache;
use Symfony\Component\Form\FormTypeExtensionInterface;
use Symfony\Component\Form\FormTypeInterface;
/**
* A cacheable wrapper for any {@see FormTypeInterface} or {@see FormTypeExtensionInterface}
* which configures a "choice_attr" option.
*
* @internal
*
* @author Jules Pietri <jules@heahprod.com>
*/
final class ChoiceAttr extends AbstractStaticOption
{
}

View File

@@ -1,27 +0,0 @@
<?php
/*
* This file is part of the Symfony package.
*
* (c) Fabien Potencier <fabien@symfony.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Symfony\Component\Form\ChoiceList\Factory\Cache;
use Symfony\Component\Form\FormTypeExtensionInterface;
use Symfony\Component\Form\FormTypeInterface;
/**
* A cacheable wrapper for any {@see FormTypeInterface} or {@see FormTypeExtensionInterface}
* which configures a "choice_name" callback.
*
* @internal
*
* @author Jules Pietri <jules@heahprod.com>
*/
final class ChoiceFieldName extends AbstractStaticOption
{
}

View File

@@ -1,27 +0,0 @@
<?php
/*
* This file is part of the Symfony package.
*
* (c) Fabien Potencier <fabien@symfony.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Symfony\Component\Form\ChoiceList\Factory\Cache;
use Symfony\Component\Form\FormTypeExtensionInterface;
use Symfony\Component\Form\FormTypeInterface;
/**
* A cacheable wrapper for any {@see FormTypeInterface} or {@see FormTypeExtensionInterface}
* which configures a "choice_filter" option.
*
* @internal
*
* @author Jules Pietri <jules@heahprod.com>
*/
final class ChoiceFilter extends AbstractStaticOption
{
}

View File

@@ -1,27 +0,0 @@
<?php
/*
* This file is part of the Symfony package.
*
* (c) Fabien Potencier <fabien@symfony.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Symfony\Component\Form\ChoiceList\Factory\Cache;
use Symfony\Component\Form\FormTypeExtensionInterface;
use Symfony\Component\Form\FormTypeInterface;
/**
* A cacheable wrapper for any {@see FormTypeInterface} or {@see FormTypeExtensionInterface}
* which configures a "choice_label" option.
*
* @internal
*
* @author Jules Pietri <jules@heahprod.com>
*/
final class ChoiceLabel extends AbstractStaticOption
{
}

View File

@@ -1,43 +0,0 @@
<?php
/*
* This file is part of the Symfony package.
*
* (c) Fabien Potencier <fabien@symfony.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Symfony\Component\Form\ChoiceList\Factory\Cache;
use Symfony\Component\Form\ChoiceList\ChoiceListInterface;
use Symfony\Component\Form\ChoiceList\Loader\ChoiceLoaderInterface;
use Symfony\Component\Form\FormTypeExtensionInterface;
use Symfony\Component\Form\FormTypeInterface;
/**
* A cacheable wrapper for {@see FormTypeInterface} or {@see FormTypeExtensionInterface}
* which configures a "choice_loader" option.
*
* @internal
*
* @author Jules Pietri <jules@heahprod.com>
*/
final class ChoiceLoader extends AbstractStaticOption implements ChoiceLoaderInterface
{
public function loadChoiceList(?callable $value = null): ChoiceListInterface
{
return $this->getOption()->loadChoiceList($value);
}
public function loadChoicesForValues(array $values, ?callable $value = null): array
{
return $this->getOption()->loadChoicesForValues($values, $value);
}
public function loadValuesForChoices(array $choices, ?callable $value = null): array
{
return $this->getOption()->loadValuesForChoices($choices, $value);
}
}

View File

@@ -1,27 +0,0 @@
<?php
/*
* This file is part of the Symfony package.
*
* (c) Fabien Potencier <fabien@symfony.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Symfony\Component\Form\ChoiceList\Factory\Cache;
use Symfony\Component\Form\FormTypeExtensionInterface;
use Symfony\Component\Form\FormTypeInterface;
/**
* A cacheable wrapper for any {@see FormTypeInterface} or {@see FormTypeExtensionInterface}
* which configures a "choice_translation_parameters" option.
*
* @internal
*
* @author Vincent Langlet <vincentlanglet@users.noreply.github.com>
*/
final class ChoiceTranslationParameters extends AbstractStaticOption
{
}

View File

@@ -1,27 +0,0 @@
<?php
/*
* This file is part of the Symfony package.
*
* (c) Fabien Potencier <fabien@symfony.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Symfony\Component\Form\ChoiceList\Factory\Cache;
use Symfony\Component\Form\FormTypeExtensionInterface;
use Symfony\Component\Form\FormTypeInterface;
/**
* A cacheable wrapper for any {@see FormTypeInterface} or {@see FormTypeExtensionInterface}
* which configures a "choice_value" callback.
*
* @internal
*
* @author Jules Pietri <jules@heahprod.com>
*/
final class ChoiceValue extends AbstractStaticOption
{
}

View File

@@ -1,27 +0,0 @@
<?php
/*
* This file is part of the Symfony package.
*
* (c) Fabien Potencier <fabien@symfony.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Symfony\Component\Form\ChoiceList\Factory\Cache;
use Symfony\Component\Form\FormTypeExtensionInterface;
use Symfony\Component\Form\FormTypeInterface;
/**
* A cacheable wrapper for any {@see FormTypeInterface} or {@see FormTypeExtensionInterface}
* which configures a "group_by" callback.
*
* @internal
*
* @author Jules Pietri <jules@heahprod.com>
*/
final class GroupBy extends AbstractStaticOption
{
}

View File

@@ -1,27 +0,0 @@
<?php
/*
* This file is part of the Symfony package.
*
* (c) Fabien Potencier <fabien@symfony.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Symfony\Component\Form\ChoiceList\Factory\Cache;
use Symfony\Component\Form\FormTypeExtensionInterface;
use Symfony\Component\Form\FormTypeInterface;
/**
* A cacheable wrapper for any {@see FormTypeInterface} or {@see FormTypeExtensionInterface}
* which configures a "preferred_choices" option.
*
* @internal
*
* @author Jules Pietri <jules@heahprod.com>
*/
final class PreferredChoice extends AbstractStaticOption
{
}

View File

@@ -1,232 +0,0 @@
<?php
/*
* This file is part of the Symfony package.
*
* (c) Fabien Potencier <fabien@symfony.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Symfony\Component\Form\ChoiceList\Factory;
use Symfony\Component\Form\ChoiceList\ChoiceListInterface;
use Symfony\Component\Form\ChoiceList\Loader\ChoiceLoaderInterface;
use Symfony\Component\Form\ChoiceList\View\ChoiceListView;
use Symfony\Contracts\Service\ResetInterface;
/**
* Caches the choice lists created by the decorated factory.
*
* To cache a list based on its options, arguments must be decorated
* by a {@see Cache\AbstractStaticOption} implementation.
*
* @author Bernhard Schussek <bschussek@gmail.com>
* @author Jules Pietri <jules@heahprod.com>
*/
class CachingFactoryDecorator implements ChoiceListFactoryInterface, ResetInterface
{
private ChoiceListFactoryInterface $decoratedFactory;
/**
* @var ChoiceListInterface[]
*/
private array $lists = [];
/**
* @var ChoiceListView[]
*/
private array $views = [];
/**
* Generates a SHA-256 hash for the given value.
*
* Optionally, a namespace string can be passed. Calling this method will
* the same values, but different namespaces, will return different hashes.
*
* @return string The SHA-256 hash
*
* @internal
*/
public static function generateHash(mixed $value, string $namespace = ''): string
{
if (\is_object($value)) {
$value = spl_object_hash($value);
} elseif (\is_array($value)) {
array_walk_recursive($value, static function (&$v) {
if (\is_object($v)) {
$v = spl_object_hash($v);
}
});
}
return hash('sha256', $namespace.':'.serialize($value));
}
public function __construct(ChoiceListFactoryInterface $decoratedFactory)
{
$this->decoratedFactory = $decoratedFactory;
}
/**
* Returns the decorated factory.
*/
public function getDecoratedFactory(): ChoiceListFactoryInterface
{
return $this->decoratedFactory;
}
public function createListFromChoices(iterable $choices, mixed $value = null, mixed $filter = null): ChoiceListInterface
{
if ($choices instanceof \Traversable) {
$choices = iterator_to_array($choices);
}
$cache = true;
// Only cache per value and filter when needed. The value is not validated on purpose.
// The decorated factory may decide which values to accept and which not.
if ($value instanceof Cache\ChoiceValue) {
$value = $value->getOption();
} elseif ($value) {
$cache = false;
}
if ($filter instanceof Cache\ChoiceFilter) {
$filter = $filter->getOption();
} elseif ($filter) {
$cache = false;
}
if (!$cache) {
return $this->decoratedFactory->createListFromChoices($choices, $value, $filter);
}
$hash = self::generateHash([$choices, $value, $filter], 'fromChoices');
if (!isset($this->lists[$hash])) {
$this->lists[$hash] = $this->decoratedFactory->createListFromChoices($choices, $value, $filter);
}
return $this->lists[$hash];
}
public function createListFromLoader(ChoiceLoaderInterface $loader, mixed $value = null, mixed $filter = null): ChoiceListInterface
{
$cache = true;
if ($loader instanceof Cache\ChoiceLoader) {
$loader = $loader->getOption();
} else {
$cache = false;
}
if ($value instanceof Cache\ChoiceValue) {
$value = $value->getOption();
} elseif ($value) {
$cache = false;
}
if ($filter instanceof Cache\ChoiceFilter) {
$filter = $filter->getOption();
} elseif ($filter) {
$cache = false;
}
if (!$cache) {
return $this->decoratedFactory->createListFromLoader($loader, $value, $filter);
}
$hash = self::generateHash([$loader, $value, $filter], 'fromLoader');
if (!isset($this->lists[$hash])) {
$this->lists[$hash] = $this->decoratedFactory->createListFromLoader($loader, $value, $filter);
}
return $this->lists[$hash];
}
/**
* @param bool $duplicatePreferredChoices
*/
public function createView(ChoiceListInterface $list, mixed $preferredChoices = null, mixed $label = null, mixed $index = null, mixed $groupBy = null, mixed $attr = null, mixed $labelTranslationParameters = []/* , bool $duplicatePreferredChoices = true */): ChoiceListView
{
$duplicatePreferredChoices = \func_num_args() > 7 ? func_get_arg(7) : true;
$cache = true;
if ($preferredChoices instanceof Cache\PreferredChoice) {
$preferredChoices = $preferredChoices->getOption();
} elseif ($preferredChoices) {
$cache = false;
}
if ($label instanceof Cache\ChoiceLabel) {
$label = $label->getOption();
} elseif (null !== $label) {
$cache = false;
}
if ($index instanceof Cache\ChoiceFieldName) {
$index = $index->getOption();
} elseif ($index) {
$cache = false;
}
if ($groupBy instanceof Cache\GroupBy) {
$groupBy = $groupBy->getOption();
} elseif ($groupBy) {
$cache = false;
}
if ($attr instanceof Cache\ChoiceAttr) {
$attr = $attr->getOption();
} elseif ($attr) {
$cache = false;
}
if ($labelTranslationParameters instanceof Cache\ChoiceTranslationParameters) {
$labelTranslationParameters = $labelTranslationParameters->getOption();
} elseif ([] !== $labelTranslationParameters) {
$cache = false;
}
if (!$cache) {
return $this->decoratedFactory->createView(
$list,
$preferredChoices,
$label,
$index,
$groupBy,
$attr,
$labelTranslationParameters,
$duplicatePreferredChoices,
);
}
$hash = self::generateHash([$list, $preferredChoices, $label, $index, $groupBy, $attr, $labelTranslationParameters, $duplicatePreferredChoices]);
if (!isset($this->views[$hash])) {
$this->views[$hash] = $this->decoratedFactory->createView(
$list,
$preferredChoices,
$label,
$index,
$groupBy,
$attr,
$labelTranslationParameters,
$duplicatePreferredChoices,
);
}
return $this->views[$hash];
}
/**
* @return void
*/
public function reset()
{
$this->lists = [];
$this->views = [];
Cache\AbstractStaticOption::reset();
}
}

View File

@@ -1,85 +0,0 @@
<?php
/*
* This file is part of the Symfony package.
*
* (c) Fabien Potencier <fabien@symfony.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Symfony\Component\Form\ChoiceList\Factory;
use Symfony\Component\Form\ChoiceList\ChoiceListInterface;
use Symfony\Component\Form\ChoiceList\Loader\ChoiceLoaderInterface;
use Symfony\Component\Form\ChoiceList\View\ChoiceListView;
/**
* Creates {@link ChoiceListInterface} instances.
*
* @author Bernhard Schussek <bschussek@gmail.com>
*/
interface ChoiceListFactoryInterface
{
/**
* Creates a choice list for the given choices.
*
* The choices should be passed in the values of the choices array.
*
* Optionally, a callable can be passed for generating the choice values.
* The callable receives the choice as only argument.
* Null may be passed when the choice list contains the empty value.
*
* @param callable|null $filter The callable filtering the choices
*/
public function createListFromChoices(iterable $choices, ?callable $value = null, ?callable $filter = null): ChoiceListInterface;
/**
* Creates a choice list that is loaded with the given loader.
*
* Optionally, a callable can be passed for generating the choice values.
* The callable receives the choice as only argument.
* Null may be passed when the choice list contains the empty value.
*
* @param callable|null $filter The callable filtering the choices
*/
public function createListFromLoader(ChoiceLoaderInterface $loader, ?callable $value = null, ?callable $filter = null): ChoiceListInterface;
/**
* Creates a view for the given choice list.
*
* Callables may be passed for all optional arguments. The callables receive
* the choice as first and the array key as the second argument.
*
* * The callable for the label and the name should return the generated
* label/choice name.
* * The callable for the preferred choices should return true or false,
* depending on whether the choice should be preferred or not.
* * The callable for the grouping should return the group name or null if
* a choice should not be grouped.
* * The callable for the attributes should return an array of HTML
* attributes that will be inserted in the tag of the choice.
*
* If no callable is passed, the labels will be generated from the choice
* keys. The view indices will be generated using an incrementing integer
* by default.
*
* The preferred choices can also be passed as array. Each choice that is
* contained in that array will be marked as preferred.
*
* The attributes can be passed as multi-dimensional array. The keys should
* match the keys of the choices. The values should be arrays of HTML
* attributes that should be added to the respective choice.
*
* @param array|callable|null $preferredChoices The preferred choices
* @param callable|false|null $label The callable generating the choice labels;
* pass false to discard the label
* @param array|callable|null $attr The callable generating the HTML attributes
* @param array|callable $labelTranslationParameters The parameters used to translate the choice labels
* @param bool $duplicatePreferredChoices Whether the preferred choices should be duplicated
* on top of the list and in their original position
* or only in the top of the list
*/
public function createView(ChoiceListInterface $list, array|callable|null $preferredChoices = null, callable|false|null $label = null, ?callable $index = null, ?callable $groupBy = null, array|callable|null $attr = null, array|callable $labelTranslationParameters = []/* , bool $duplicatePreferredChoices = true */): ChoiceListView;
}

View File

@@ -1,307 +0,0 @@
<?php
/*
* This file is part of the Symfony package.
*
* (c) Fabien Potencier <fabien@symfony.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Symfony\Component\Form\ChoiceList\Factory;
use Symfony\Component\Form\ChoiceList\ArrayChoiceList;
use Symfony\Component\Form\ChoiceList\ChoiceListInterface;
use Symfony\Component\Form\ChoiceList\LazyChoiceList;
use Symfony\Component\Form\ChoiceList\Loader\CallbackChoiceLoader;
use Symfony\Component\Form\ChoiceList\Loader\ChoiceLoaderInterface;
use Symfony\Component\Form\ChoiceList\Loader\FilterChoiceLoaderDecorator;
use Symfony\Component\Form\ChoiceList\View\ChoiceGroupView;
use Symfony\Component\Form\ChoiceList\View\ChoiceListView;
use Symfony\Component\Form\ChoiceList\View\ChoiceView;
use Symfony\Contracts\Translation\TranslatableInterface;
/**
* Default implementation of {@link ChoiceListFactoryInterface}.
*
* @author Bernhard Schussek <bschussek@gmail.com>
* @author Jules Pietri <jules@heahprod.com>
*/
class DefaultChoiceListFactory implements ChoiceListFactoryInterface
{
public function createListFromChoices(iterable $choices, ?callable $value = null, ?callable $filter = null): ChoiceListInterface
{
if ($filter) {
// filter the choice list lazily
return $this->createListFromLoader(new FilterChoiceLoaderDecorator(
new CallbackChoiceLoader(static fn () => $choices),
$filter
), $value);
}
return new ArrayChoiceList($choices, $value);
}
public function createListFromLoader(ChoiceLoaderInterface $loader, ?callable $value = null, ?callable $filter = null): ChoiceListInterface
{
if ($filter) {
$loader = new FilterChoiceLoaderDecorator($loader, $filter);
}
return new LazyChoiceList($loader, $value);
}
/**
* @param bool $duplicatePreferredChoices
*/
public function createView(ChoiceListInterface $list, array|callable|null $preferredChoices = null, callable|false|null $label = null, ?callable $index = null, ?callable $groupBy = null, array|callable|null $attr = null, array|callable $labelTranslationParameters = []/* , bool $duplicatePreferredChoices = true */): ChoiceListView
{
$duplicatePreferredChoices = \func_num_args() > 7 ? func_get_arg(7) : true;
$preferredViews = [];
$preferredViewsOrder = [];
$otherViews = [];
$choices = $list->getChoices();
$keys = $list->getOriginalKeys();
if (!\is_callable($preferredChoices)) {
if (!$preferredChoices) {
$preferredChoices = null;
} else {
// make sure we have keys that reflect order
$preferredChoices = array_values($preferredChoices);
$preferredChoices = static fn ($choice) => array_search($choice, $preferredChoices, true);
}
}
// The names are generated from an incrementing integer by default
$index ??= 0;
// If $groupBy is a callable returning a string
// choices are added to the group with the name returned by the callable.
// If $groupBy is a callable returning an array
// choices are added to the groups with names returned by the callable
// If the callable returns null, the choice is not added to any group
if (\is_callable($groupBy)) {
foreach ($choices as $value => $choice) {
self::addChoiceViewsGroupedByCallable(
$groupBy,
$choice,
$value,
$label,
$keys,
$index,
$attr,
$labelTranslationParameters,
$preferredChoices,
$preferredViews,
$preferredViewsOrder,
$otherViews,
$duplicatePreferredChoices,
);
}
// Remove empty group views that may have been created by
// addChoiceViewsGroupedByCallable()
foreach ($preferredViews as $key => $view) {
if ($view instanceof ChoiceGroupView && 0 === \count($view->choices)) {
unset($preferredViews[$key]);
}
}
foreach ($otherViews as $key => $view) {
if ($view instanceof ChoiceGroupView && 0 === \count($view->choices)) {
unset($otherViews[$key]);
}
}
foreach ($preferredViewsOrder as $key => $groupViewsOrder) {
if ($groupViewsOrder) {
$preferredViewsOrder[$key] = min($groupViewsOrder);
} else {
unset($preferredViewsOrder[$key]);
}
}
} else {
// Otherwise use the original structure of the choices
self::addChoiceViewsFromStructuredValues(
$list->getStructuredValues(),
$label,
$choices,
$keys,
$index,
$attr,
$labelTranslationParameters,
$preferredChoices,
$preferredViews,
$preferredViewsOrder,
$otherViews,
$duplicatePreferredChoices,
);
}
uksort($preferredViews, static fn ($a, $b) => isset($preferredViewsOrder[$a], $preferredViewsOrder[$b]) ? $preferredViewsOrder[$a] <=> $preferredViewsOrder[$b] : 0);
return new ChoiceListView($otherViews, $preferredViews);
}
private static function addChoiceView($choice, string $value, $label, array $keys, &$index, $attr, $labelTranslationParameters, ?callable $isPreferred, array &$preferredViews, array &$preferredViewsOrder, array &$otherViews, bool $duplicatePreferredChoices): void
{
// $value may be an integer or a string, since it's stored in the array
// keys. We want to guarantee it's a string though.
$key = $keys[$value];
$nextIndex = \is_int($index) ? $index++ : $index($choice, $key, $value);
// BC normalize label to accept a false value
if (null === $label) {
// If the labels are null, use the original choice key by default
$label = (string) $key;
} elseif (false !== $label) {
// If "choice_label" is set to false and "expanded" is true, the value false
// should be passed on to the "label" option of the checkboxes/radio buttons
$dynamicLabel = $label($choice, $key, $value);
if (false === $dynamicLabel) {
$label = false;
} elseif ($dynamicLabel instanceof TranslatableInterface) {
$label = $dynamicLabel;
} else {
$label = (string) $dynamicLabel;
}
}
$view = new ChoiceView(
$choice,
$value,
$label,
// The attributes may be a callable or a mapping from choice indices
// to nested arrays
\is_callable($attr) ? $attr($choice, $key, $value) : ($attr[$key] ?? []),
// The label translation parameters may be a callable or a mapping from choice indices
// to nested arrays
\is_callable($labelTranslationParameters) ? $labelTranslationParameters($choice, $key, $value) : ($labelTranslationParameters[$key] ?? [])
);
// $isPreferred may be null if no choices are preferred
if (null !== $isPreferred && false !== $preferredKey = $isPreferred($choice, $key, $value)) {
$preferredViews[$nextIndex] = $view;
$preferredViewsOrder[$nextIndex] = $preferredKey;
if ($duplicatePreferredChoices) {
$otherViews[$nextIndex] = $view;
}
} else {
$otherViews[$nextIndex] = $view;
}
}
private static function addChoiceViewsFromStructuredValues(array $values, $label, array $choices, array $keys, &$index, $attr, $labelTranslationParameters, ?callable $isPreferred, array &$preferredViews, array &$preferredViewsOrder, array &$otherViews, bool $duplicatePreferredChoices): void
{
foreach ($values as $key => $value) {
if (null === $value) {
continue;
}
// Add the contents of groups to new ChoiceGroupView instances
if (\is_array($value)) {
$preferredViewsForGroup = [];
$otherViewsForGroup = [];
self::addChoiceViewsFromStructuredValues(
$value,
$label,
$choices,
$keys,
$index,
$attr,
$labelTranslationParameters,
$isPreferred,
$preferredViewsForGroup,
$preferredViewsOrder,
$otherViewsForGroup,
$duplicatePreferredChoices,
);
if (\count($preferredViewsForGroup) > 0) {
$preferredViews[$key] = new ChoiceGroupView($key, $preferredViewsForGroup);
}
if (\count($otherViewsForGroup) > 0) {
$otherViews[$key] = new ChoiceGroupView($key, $otherViewsForGroup);
}
continue;
}
// Add ungrouped items directly
self::addChoiceView(
$choices[$value],
$value,
$label,
$keys,
$index,
$attr,
$labelTranslationParameters,
$isPreferred,
$preferredViews,
$preferredViewsOrder,
$otherViews,
$duplicatePreferredChoices,
);
}
}
private static function addChoiceViewsGroupedByCallable(callable $groupBy, $choice, string $value, $label, array $keys, &$index, $attr, $labelTranslationParameters, ?callable $isPreferred, array &$preferredViews, array &$preferredViewsOrder, array &$otherViews, bool $duplicatePreferredChoices): void
{
$groupLabels = $groupBy($choice, $keys[$value], $value);
if (null === $groupLabels) {
// If the callable returns null, don't group the choice
self::addChoiceView(
$choice,
$value,
$label,
$keys,
$index,
$attr,
$labelTranslationParameters,
$isPreferred,
$preferredViews,
$preferredViewsOrder,
$otherViews,
$duplicatePreferredChoices,
);
return;
}
$groupLabels = \is_array($groupLabels) ? array_map('strval', $groupLabels) : [(string) $groupLabels];
foreach ($groupLabels as $groupLabel) {
// Initialize the group views if necessary. Unnecessarily built group
// views will be cleaned up at the end of createView()
if (!isset($preferredViews[$groupLabel])) {
$preferredViews[$groupLabel] = new ChoiceGroupView($groupLabel);
$otherViews[$groupLabel] = new ChoiceGroupView($groupLabel);
}
if (!isset($preferredViewsOrder[$groupLabel])) {
$preferredViewsOrder[$groupLabel] = [];
}
self::addChoiceView(
$choice,
$value,
$label,
$keys,
$index,
$attr,
$labelTranslationParameters,
$isPreferred,
$preferredViews[$groupLabel]->choices,
$preferredViewsOrder[$groupLabel],
$otherViews[$groupLabel]->choices,
$duplicatePreferredChoices,
);
}
}
}

View File

@@ -1,193 +0,0 @@
<?php
/*
* This file is part of the Symfony package.
*
* (c) Fabien Potencier <fabien@symfony.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Symfony\Component\Form\ChoiceList\Factory;
use Symfony\Component\Form\ChoiceList\ChoiceListInterface;
use Symfony\Component\Form\ChoiceList\Loader\ChoiceLoaderInterface;
use Symfony\Component\Form\ChoiceList\View\ChoiceListView;
use Symfony\Component\PropertyAccess\Exception\UnexpectedTypeException;
use Symfony\Component\PropertyAccess\PropertyAccess;
use Symfony\Component\PropertyAccess\PropertyAccessorInterface;
use Symfony\Component\PropertyAccess\PropertyPath;
use Symfony\Component\PropertyAccess\PropertyPathInterface;
/**
* Adds property path support to a choice list factory.
*
* Pass the decorated factory to the constructor:
*
* $decorator = new PropertyAccessDecorator($factory);
*
* You can now pass property paths for generating choice values, labels, view
* indices, HTML attributes and for determining the preferred choices and the
* choice groups:
*
* // extract values from the $value property
* $list = $createListFromChoices($objects, 'value');
*
* @author Bernhard Schussek <bschussek@gmail.com>
*/
class PropertyAccessDecorator implements ChoiceListFactoryInterface
{
private ChoiceListFactoryInterface $decoratedFactory;
private PropertyAccessorInterface $propertyAccessor;
public function __construct(ChoiceListFactoryInterface $decoratedFactory, ?PropertyAccessorInterface $propertyAccessor = null)
{
$this->decoratedFactory = $decoratedFactory;
$this->propertyAccessor = $propertyAccessor ?: PropertyAccess::createPropertyAccessor();
}
/**
* Returns the decorated factory.
*/
public function getDecoratedFactory(): ChoiceListFactoryInterface
{
return $this->decoratedFactory;
}
public function createListFromChoices(iterable $choices, mixed $value = null, mixed $filter = null): ChoiceListInterface
{
if (\is_string($value)) {
$value = new PropertyPath($value);
}
if ($value instanceof PropertyPathInterface) {
$accessor = $this->propertyAccessor;
// The callable may be invoked with a non-object/array value
// when such values are passed to
// ChoiceListInterface::getValuesForChoices(). Handle this case
// so that the call to getValue() doesn't break.
$value = static fn ($choice) => \is_object($choice) || \is_array($choice) ? $accessor->getValue($choice, $value) : null;
}
if (\is_string($filter)) {
$filter = new PropertyPath($filter);
}
if ($filter instanceof PropertyPath) {
$accessor = $this->propertyAccessor;
$filter = static fn ($choice) => (\is_object($choice) || \is_array($choice)) && $accessor->getValue($choice, $filter);
}
return $this->decoratedFactory->createListFromChoices($choices, $value, $filter);
}
public function createListFromLoader(ChoiceLoaderInterface $loader, mixed $value = null, mixed $filter = null): ChoiceListInterface
{
if (\is_string($value)) {
$value = new PropertyPath($value);
}
if ($value instanceof PropertyPathInterface) {
$accessor = $this->propertyAccessor;
// The callable may be invoked with a non-object/array value
// when such values are passed to
// ChoiceListInterface::getValuesForChoices(). Handle this case
// so that the call to getValue() doesn't break.
$value = static fn ($choice) => \is_object($choice) || \is_array($choice) ? $accessor->getValue($choice, $value) : null;
}
if (\is_string($filter)) {
$filter = new PropertyPath($filter);
}
if ($filter instanceof PropertyPath) {
$accessor = $this->propertyAccessor;
$filter = static fn ($choice) => (\is_object($choice) || \is_array($choice)) && $accessor->getValue($choice, $filter);
}
return $this->decoratedFactory->createListFromLoader($loader, $value, $filter);
}
/**
* @param bool $duplicatePreferredChoices
*/
public function createView(ChoiceListInterface $list, mixed $preferredChoices = null, mixed $label = null, mixed $index = null, mixed $groupBy = null, mixed $attr = null, mixed $labelTranslationParameters = []/* , bool $duplicatePreferredChoices = true */): ChoiceListView
{
$duplicatePreferredChoices = \func_num_args() > 7 ? func_get_arg(7) : true;
$accessor = $this->propertyAccessor;
if (\is_string($label)) {
$label = new PropertyPath($label);
}
if ($label instanceof PropertyPathInterface) {
$label = static fn ($choice) => $accessor->getValue($choice, $label);
}
if (\is_string($preferredChoices)) {
$preferredChoices = new PropertyPath($preferredChoices);
}
if ($preferredChoices instanceof PropertyPathInterface) {
$preferredChoices = static function ($choice) use ($accessor, $preferredChoices) {
try {
return $accessor->getValue($choice, $preferredChoices);
} catch (UnexpectedTypeException) {
// Assume not preferred if not readable
return false;
}
};
}
if (\is_string($index)) {
$index = new PropertyPath($index);
}
if ($index instanceof PropertyPathInterface) {
$index = static fn ($choice) => $accessor->getValue($choice, $index);
}
if (\is_string($groupBy)) {
$groupBy = new PropertyPath($groupBy);
}
if ($groupBy instanceof PropertyPathInterface) {
$groupBy = static function ($choice) use ($accessor, $groupBy) {
try {
return $accessor->getValue($choice, $groupBy);
} catch (UnexpectedTypeException) {
// Don't group if path is not readable
return null;
}
};
}
if (\is_string($attr)) {
$attr = new PropertyPath($attr);
}
if ($attr instanceof PropertyPathInterface) {
$attr = static fn ($choice) => $accessor->getValue($choice, $attr);
}
if (\is_string($labelTranslationParameters)) {
$labelTranslationParameters = new PropertyPath($labelTranslationParameters);
}
if ($labelTranslationParameters instanceof PropertyPath) {
$labelTranslationParameters = static fn ($choice) => $accessor->getValue($choice, $labelTranslationParameters);
}
return $this->decoratedFactory->createView(
$list,
$preferredChoices,
$label,
$index,
$groupBy,
$attr,
$labelTranslationParameters,
$duplicatePreferredChoices,
);
}
}

View File

@@ -1,83 +0,0 @@
<?php
/*
* This file is part of the Symfony package.
*
* (c) Fabien Potencier <fabien@symfony.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Symfony\Component\Form\ChoiceList;
use Symfony\Component\Form\ChoiceList\Loader\ChoiceLoaderInterface;
/**
* A choice list that loads its choices lazily.
*
* The choices are fetched using a {@link ChoiceLoaderInterface} instance.
* If only {@link getChoicesForValues()} or {@link getValuesForChoices()} is
* called, the choice list is only loaded partially for improved performance.
*
* Once {@link getChoices()} or {@link getValues()} is called, the list is
* loaded fully.
*
* @author Bernhard Schussek <bschussek@gmail.com>
*/
class LazyChoiceList implements ChoiceListInterface
{
private ChoiceLoaderInterface $loader;
/**
* The callable creating string values for each choice.
*
* If null, choices are cast to strings.
*/
private ?\Closure $value;
/**
* Creates a lazily-loaded list using the given loader.
*
* Optionally, a callable can be passed for generating the choice values.
* The callable receives the choice as first and the array key as the second
* argument.
*
* @param callable|null $value The callable generating the choice values
*/
public function __construct(ChoiceLoaderInterface $loader, ?callable $value = null)
{
$this->loader = $loader;
$this->value = null === $value ? null : $value(...);
}
public function getChoices(): array
{
return $this->loader->loadChoiceList($this->value)->getChoices();
}
public function getValues(): array
{
return $this->loader->loadChoiceList($this->value)->getValues();
}
public function getStructuredValues(): array
{
return $this->loader->loadChoiceList($this->value)->getStructuredValues();
}
public function getOriginalKeys(): array
{
return $this->loader->loadChoiceList($this->value)->getOriginalKeys();
}
public function getChoicesForValues(array $values): array
{
return $this->loader->loadChoicesForValues($values, $this->value);
}
public function getValuesForChoices(array $choices): array
{
return $this->loader->loadValuesForChoices($choices, $this->value);
}
}

View File

@@ -1,66 +0,0 @@
<?php
/*
* This file is part of the Symfony package.
*
* (c) Fabien Potencier <fabien@symfony.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Symfony\Component\Form\ChoiceList\Loader;
use Symfony\Component\Form\ChoiceList\ArrayChoiceList;
use Symfony\Component\Form\ChoiceList\ChoiceListInterface;
/**
* @author Jules Pietri <jules@heahprod.com>
*/
abstract class AbstractChoiceLoader implements ChoiceLoaderInterface
{
private ?iterable $choices;
/**
* @final
*/
public function loadChoiceList(?callable $value = null): ChoiceListInterface
{
return new ArrayChoiceList($this->choices ??= $this->loadChoices(), $value);
}
public function loadChoicesForValues(array $values, ?callable $value = null): array
{
if (!$values) {
return [];
}
return $this->doLoadChoicesForValues($values, $value);
}
public function loadValuesForChoices(array $choices, ?callable $value = null): array
{
if (!$choices) {
return [];
}
if ($value) {
// if a value callback exists, use it
return array_map(fn ($item) => (string) $value($item), $choices);
}
return $this->doLoadValuesForChoices($choices);
}
abstract protected function loadChoices(): iterable;
protected function doLoadChoicesForValues(array $values, ?callable $value): array
{
return $this->loadChoiceList($value)->getChoicesForValues($values);
}
protected function doLoadValuesForChoices(array $choices): array
{
return $this->loadChoiceList()->getValuesForChoices($choices);
}
}

View File

@@ -1,35 +0,0 @@
<?php
/*
* This file is part of the Symfony package.
*
* (c) Fabien Potencier <fabien@symfony.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Symfony\Component\Form\ChoiceList\Loader;
/**
* Loads an {@link ArrayChoiceList} instance from a callable returning iterable choices.
*
* @author Jules Pietri <jules@heahprod.com>
*/
class CallbackChoiceLoader extends AbstractChoiceLoader
{
private \Closure $callback;
/**
* @param callable $callback The callable returning iterable choices
*/
public function __construct(callable $callback)
{
$this->callback = $callback(...);
}
protected function loadChoices(): iterable
{
return ($this->callback)();
}
}

View File

@@ -1,72 +0,0 @@
<?php
/*
* This file is part of the Symfony package.
*
* (c) Fabien Potencier <fabien@symfony.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Symfony\Component\Form\ChoiceList\Loader;
use Symfony\Component\Form\ChoiceList\ChoiceListInterface;
/**
* Loads a choice list.
*
* The methods {@link loadChoicesForValues()} and {@link loadValuesForChoices()}
* can be used to load the list only partially in cases where a fully-loaded
* list is not necessary.
*
* @author Bernhard Schussek <bschussek@gmail.com>
*/
interface ChoiceLoaderInterface
{
/**
* Loads a list of choices.
*
* Optionally, a callable can be passed for generating the choice values.
* The callable receives the choice as only argument.
* Null may be passed when the choice list contains the empty value.
*
* @param callable|null $value The callable which generates the values
* from choices
*/
public function loadChoiceList(?callable $value = null): ChoiceListInterface;
/**
* Loads the choices corresponding to the given values.
*
* The choices are returned with the same keys and in the same order as the
* corresponding values in the given array.
*
* Optionally, a callable can be passed for generating the choice values.
* The callable receives the choice as only argument.
* Null may be passed when the choice list contains the empty value.
*
* @param string[] $values An array of choice values. Non-existing
* values in this array are ignored
* @param callable|null $value The callable generating the choice values
*/
public function loadChoicesForValues(array $values, ?callable $value = null): array;
/**
* Loads the values corresponding to the given choices.
*
* The values are returned with the same keys and in the same order as the
* corresponding choices in the given array.
*
* Optionally, a callable can be passed for generating the choice values.
* The callable receives the choice as only argument.
* Null may be passed when the choice list contains the empty value.
*
* @param array $choices An array of choices. Non-existing choices in
* this array are ignored
* @param callable|null $value The callable generating the choice values
*
* @return string[]
*/
public function loadValuesForChoices(array $choices, ?callable $value = null): array;
}

View File

@@ -1,64 +0,0 @@
<?php
/*
* This file is part of the Symfony package.
*
* (c) Fabien Potencier <fabien@symfony.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Symfony\Component\Form\ChoiceList\Loader;
/**
* A decorator to filter choices only when they are loaded or partially loaded.
*
* @author Jules Pietri <jules@heahprod.com>
*/
class FilterChoiceLoaderDecorator extends AbstractChoiceLoader
{
private ChoiceLoaderInterface $decoratedLoader;
private \Closure $filter;
public function __construct(ChoiceLoaderInterface $loader, callable $filter)
{
$this->decoratedLoader = $loader;
$this->filter = $filter(...);
}
protected function loadChoices(): iterable
{
$list = $this->decoratedLoader->loadChoiceList();
if (array_values($list->getValues()) === array_values($structuredValues = $list->getStructuredValues())) {
return array_filter(array_combine($list->getOriginalKeys(), $list->getChoices()), $this->filter);
}
foreach ($structuredValues as $group => $values) {
if (\is_array($values)) {
if ($values && $filtered = array_filter($list->getChoicesForValues($values), $this->filter)) {
$choices[$group] = $filtered;
}
continue;
// filter empty groups
}
if ($filtered = array_filter($list->getChoicesForValues([$values]), $this->filter)) {
$choices[$group] = $filtered[0];
}
}
return $choices ?? [];
}
public function loadChoicesForValues(array $values, ?callable $value = null): array
{
return array_filter($this->decoratedLoader->loadChoicesForValues($values, $value), $this->filter);
}
public function loadValuesForChoices(array $choices, ?callable $value = null): array
{
return $this->decoratedLoader->loadValuesForChoices(array_filter($choices, $this->filter), $value);
}
}

View File

@@ -1,38 +0,0 @@
<?php
/*
* This file is part of the Symfony package.
*
* (c) Fabien Potencier <fabien@symfony.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Symfony\Component\Form\ChoiceList\Loader;
/**
* Callback choice loader optimized for Intl choice types.
*
* @author Jules Pietri <jules@heahprod.com>
* @author Yonel Ceruto <yonelceruto@gmail.com>
*/
class IntlCallbackChoiceLoader extends CallbackChoiceLoader
{
public function loadChoicesForValues(array $values, ?callable $value = null): array
{
return parent::loadChoicesForValues(array_filter($values), $value);
}
public function loadValuesForChoices(array $choices, ?callable $value = null): array
{
$choices = array_filter($choices);
// If no callable is set, choices are the same as values
if (null === $value) {
return $choices;
}
return parent::loadValuesForChoices($choices, $value);
}
}

View File

@@ -1,44 +0,0 @@
<?php
/*
* This file is part of the Symfony package.
*
* (c) Fabien Potencier <fabien@symfony.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Symfony\Component\Form\ChoiceList\View;
/**
* Represents a group of choices in templates.
*
* @author Bernhard Schussek <bschussek@gmail.com>
*
* @implements \IteratorAggregate<array-key, ChoiceGroupView|ChoiceView>
*/
class ChoiceGroupView implements \IteratorAggregate
{
public $label;
public $choices;
/**
* Creates a new choice group view.
*
* @param array<ChoiceGroupView|ChoiceView> $choices the choice views in the group
*/
public function __construct(string $label, array $choices = [])
{
$this->label = $label;
$this->choices = $choices;
}
/**
* @return \Traversable<array-key, ChoiceGroupView|ChoiceView>
*/
public function getIterator(): \Traversable
{
return new \ArrayIterator($this->choices);
}
}

View File

@@ -1,57 +0,0 @@
<?php
/*
* This file is part of the Symfony package.
*
* (c) Fabien Potencier <fabien@symfony.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Symfony\Component\Form\ChoiceList\View;
/**
* Represents a choice list in templates.
*
* A choice list contains choices and optionally preferred choices which are
* displayed in the very beginning of the list. Both choices and preferred
* choices may be grouped in {@link ChoiceGroupView} instances.
*
* @author Bernhard Schussek <bschussek@gmail.com>
*/
class ChoiceListView
{
public $choices;
public $preferredChoices;
/**
* Creates a new choice list view.
*
* @param array<ChoiceGroupView|ChoiceView> $choices The choice views
* @param array<ChoiceGroupView|ChoiceView> $preferredChoices the preferred choice views
*/
public function __construct(array $choices = [], array $preferredChoices = [])
{
$this->choices = $choices;
$this->preferredChoices = $preferredChoices;
}
/**
* Returns whether a placeholder is in the choices.
*
* A placeholder must be the first child element, not be in a group and have an empty value.
*/
public function hasPlaceholder(): bool
{
if ($this->preferredChoices) {
$firstChoice = reset($this->preferredChoices);
return $firstChoice instanceof ChoiceView && '' === $firstChoice->value;
}
$firstChoice = reset($this->choices);
return $firstChoice instanceof ChoiceView && '' === $firstChoice->value;
}
}

Some files were not shown because too many files have changed in this diff Show More