. * * The interactive user interfaces in modified source and object code versions * of this program must display Appropriate Legal Notices, as required under * Section 5 of the GNU Affero General Public License version 3. * * In accordance with Section 7(b) of the GNU Affero General Public License version 3, * these Appropriate Legal Notices must retain the display of the "EspoCRM" word. ************************************************************************/ namespace Espo\Core\Select\Where; use InvalidArgumentException; /** * Where parameters. * * Immutable. */ class Params { private bool $applyPermissionCheck = false; private bool $forbidComplexExpressions = false; private function __construct() {} /** * @param array{ * applyPermissionCheck?: bool, * forbidComplexExpressions?: bool, * } $params */ public static function fromAssoc(array $params): self { $object = new self(); $object->applyPermissionCheck = $params['applyPermissionCheck'] ?? false; $object->forbidComplexExpressions = $params['forbidComplexExpressions'] ?? false; foreach ($params as $key => $value) { if (!property_exists($object, $key)) { throw new InvalidArgumentException("Unknown parameter '$key'."); } } return $object; } /** * Apply permission check. */ public function applyPermissionCheck(): bool { return $this->applyPermissionCheck; } /** * Forbid complex expressions. */ public function forbidComplexExpressions(): bool { return $this->forbidComplexExpressions; } }