Lue dans les fichiers PHP du paquet au commit a8f661ba1e78 : ses espaces de noms, classes, interfaces et énumérations, leurs constantes, propriétés et méthodes publiques avec leur PHPDoc, et les options que prennent ses fabriques. Rien n’en est exécuté.
NotaryBundleclassThe notarial regime, on omnibase/office: what a notary's office site owes to its professional rules, written as checks the back office runs - the regulated tariff and the discounts displayed, the consumer mediator of the notariat, e-mail addresses ending in notaires.fr, the site declared to the chamber, wording free of comparison - and its own pages: the fields of practice, the tariff, the mediation, the client's space. No online payment: the bundle has none.
3 methods
NotarySettingsSectionclassThe settings' notarial section: what the legal notice and the tariff page print and only the office knows - the structure that holds the office, its chamber and the day the site was declared to it, the discounts, the fees for what the tariff does not cover. The compliance widget reads the same.
3 methods
BrandBlockCheckclassThe profession's graphic charter and its brand block: the site keeps to "la charte graphique [...] et le plan de nommage arrêtés par le Conseil supérieur du notariat et publiés sur le portail intranet de la profession" (règlement professionnel du notariat, art. 14.4), and the brand block with the NOTAIRES DE FRANCE logo is put "sur tous les supports de communication" (art. 14.5). Neither can be read from outside the profession's intranet: the office says in the settings that it has applied them, and until then the back office reminds it.
2 methods
ChamberDeclarationCheckclass"L'office notarial qui ouvre un site internet, y propose ses services ou ouvre ou modifie une ou plusieurs pages web destinées aux mêmes fins [...] doit en informer sans délai la chambre des notaires dont il dépend" (règlement professionnel du notariat, art. 14.4). The settings keep which chamber and the day it was told.
2 methods
IdentificationCheckclassThe office can be identified: "Tout document destiné à la correspondance ou à la communication du notaire doit mentionner les éléments permettant de l'identifier" (règlement professionnel du notariat, art. 14.1), and a member of a regulated profession names on its site its professional title, the body it is registered with and the rules that apply to it (loi n° 2004-575 du 21 juin 2004, art. 19). The legal notice prints the structure that holds the office, its address, its chamber.
2 methods
MediatorCheckclass"Le notaire doit faire connaître par tous moyens lisibles et appropriés la possibilité pour le client d'avoir recours au médiateur de la consommation du notariat en cas de différend entre eux et en indiquer les coordonnées" (règlement professionnel du notariat, art. 25.1). The page /mediation prints them: a name, and an address or a site.
2 methods
ProfessionalEmailCheckclassThe office's e-mail addresses end with notaires.fr (règlement professionnel du notariat, art. 16.3): the address each office shows to the public, and the one the site writes to clients from.
2 methods
TariffDisplayCheckclassThe tariff is displayed on the site (code de commerce, art. L. 444-4: the notaries post the tariffs they practise in their office and on their website), and with it the discounts the office grants, by category of deeds and by band - or that it grants none. The page /tarifs links to the official text; the office types its discounts in the settings. Past the period of the order in force, the reference is to be brought up to date.
2 methods
WordingCheckclassWhat the office wrote for the public - the fields of practice, the team's biographies, its fees - read again for comparison, disparagement and the superlatives of advertising (Base\Notary\Guard\Wording says on which texts this rests). A warning names where and what.
2 methods
Base\Notary\Controller\Admin\Crud
AreaCrudControllerclassThe fields of practice as the site shows them.
5 methods
NotaryControllerclassThe notarial regime's public pages: the fields of practice, the tariff (regulated: the page explains it and links to the official text, with the office's discounts and its fees for what the tariff does not cover), and the consumer mediator of the notariat.
5 methods
RequestControllerclassAsking for a first appointment without an account: an office's clients are invited, so someone new could not go through omnibase/office's booking pages, which ask to sign in. The request becomes an appointment of the office in request mode (no time yet: the office fixes it), under the name, the e-mail and the phone given; the few words are kept encrypted, as every reason is.
1 method
SpaceControllerclassThe client's space: the appointments to come, the documents the office sent and those the client deposited - in the encrypted vault, never by e-mail.
1 method
NotaryDemoAccountsclassThe demonstration accounts of a notary's office (glitchr/omnibase's `demo` environment): one for each role this bundle and omnibase/office know. The roles of the office come from three groups, as in a real one - "Notaires" (ROLE_NOTARY), "Clercs" (ROLE_CLERK) and "Accueil" (ROLE_STAFF), the first two ROLE_STAFF through the application's role hierarchy; "etude" is the office's administrator.
1 method · 4 constants
Base\Notary\DependencyInjection
NotaryConfigurationclass1 method
NotaryExtensionclass3 methods
AreaclassA field of practice of the office (family, real estate, businesses...): what it covers, the deeds it gives rise to, who of the team follows it.
6 methods
AppointmentRequestTypeclassomnibase/office's form for a first appointment asked without an account, with this regime's labels (@notary.request.*). Kept for whoever builds the form by this name; the regime's own page gives the prefix itself.
1 method
AppointmentRequestclass
EmailDomainclass"L'adresse de messagerie professionnelle sortante du notaire se termine par « .notaires.fr », afin d'éviter toute confusion dans l'esprit du public" (règlement professionnel du notariat, art. 16.3, approved by the order of 29 January 2024).
1 method
WordingclassWords a notary's communication must not carry: comparison with colleagues, disparagement, the superlatives of advertising. The texts: the notary's communication keeps to "la dignité, la loyauté, la confraternité, la délicatesse ; la neutralité, l'impartialité et l'objectivité" (règlement professionnel, art. 14.1), abstains from "toute démarche à caractère publicitaire" (art. 14.2), and a personalised solicitation or an online offer of services "ne peut pas inclure d'éléments comparatifs ou dénigrants" (decree n° 73-1202 of 28 December 1973 as amended by decree n° 2019-257 of 29 March 2019).
3 methods · 1 constant
AreaRepositoryclassThe finders are omnibase/office's (findActive(), findOneActiveBySlug(), findForMember()).
1 method
OfficeAudienceclassWho of the office reads a client's document, beyond the client and whoever sent it (the voter's own business):
2 methods
RecordclassWhat only the office knows and the back office's settings keep: the structure that holds the office, its chamber, the day the site was declared to it, the discounts it practises, its fees for what the tariff does not cover. Read without ever failing a page: a settings table not there yet answers nothing.
9 methods · 7 constants
NotaryExtensionclassThe regime in templates: notary_record() (the structure, the chamber, the discounts typed in the settings), notary_areas(member|null) (the fields of practice, or a member's), notary_mediator(), notary_tariff().
2 methods
Base\Notary
NotaryBundle class
class NotaryBundle extends AbstractBaseBundle NotaryBundle.php:20
The notarial regime, on omnibase/office: what a notary's office site owes to its professional rules, written as checks the back office runs - the regulated tariff and the discounts displayed, the consumer mediator of the notariat, e-mail addresses ending in notaires.fr, the site declared to the chamber, wording free of comparison - and its own pages: the fields of practice, the tariff, the mediation, the client's space. No online payment: the bundle has none.
Compliance built into the code does not replace the chamber's control.
NotaryBundle::__construct()
public function __construct()NotaryBundle::getPath()
public function getPath(): stringModern layout: the class lives in src/, the bundle root is the package root.
NotaryBundle::build()
public function build(ContainerBuilder $container): voidBase\Notary\Admin\Settings
NotarySettingsSection class
final class NotarySettingsSection implements SettingsSectionInterface NotarySettingsSection.php:18
The settings' notarial section: what the legal notice and the tariff page print and only the office knows - the structure that holds the office, its chamber and the day the site was declared to it, the discounts, the fees for what the tariff does not cover. The compliance widget reads the same.
NotarySettingsSection::__construct()
public function __construct(readonly TranslatorInterface $translator)NotarySettingsSection::getPage()
public function getPage(): stringNotarySettingsSection::getFields()
public function getFields(): arrayBase\Notary\Compliance
BrandBlockCheck class
final class BrandBlockCheck implements ComplianceCheckInterface BrandBlockCheck.php:19
The profession's graphic charter and its brand block: the site keeps to "la charte graphique [...] et le plan de nommage arrêtés par le Conseil supérieur du notariat et publiés sur le portail intranet de la profession" (règlement professionnel du notariat, art. 14.4), and the brand block with the NOTAIRES DE FRANCE logo is put "sur tous les supports de communication" (art. 14.5). Neither can be read from outside the profession's intranet: the office says in the settings that it has applied them, and until then the back office reminds it.
BrandBlockCheck::__construct()
public function __construct(readonly Record $record)BrandBlockCheck::check()
public function check(): ComplianceResultChamberDeclarationCheck class
final class ChamberDeclarationCheck implements ComplianceCheckInterface ChamberDeclarationCheck.php:16
"L'office notarial qui ouvre un site internet, y propose ses services ou ouvre ou modifie une ou plusieurs pages web destinées aux mêmes fins [...] doit en informer sans délai la chambre des notaires dont il dépend" (règlement professionnel du notariat, art. 14.4). The settings keep which chamber and the day it was told.
ChamberDeclarationCheck::__construct()
public function __construct(readonly Record $record)ChamberDeclarationCheck::check()
public function check(): ComplianceResultIdentificationCheck class
final class IdentificationCheck implements ComplianceCheckInterface IdentificationCheck.php:19
The office can be identified: "Tout document destiné à la correspondance ou à la communication du notaire doit mentionner les éléments permettant de l'identifier" (règlement professionnel du notariat, art. 14.1), and a member of a regulated profession names on its site its professional title, the body it is registered with and the rules that apply to it (loi n° 2004-575 du 21 juin 2004, art. 19). The legal notice prints the structure that holds the office, its address, its chamber.
IdentificationCheck::__construct()
public function __construct(readonly Record $record, readonly OfficeRepository $offices)IdentificationCheck::check()
public function check(): ComplianceResultMediatorCheck class
final class MediatorCheck implements ComplianceCheckInterface MediatorCheck.php:16
"Le notaire doit faire connaître par tous moyens lisibles et appropriés la possibilité pour le client d'avoir recours au médiateur de la consommation du notariat en cas de différend entre eux et en indiquer les coordonnées" (règlement professionnel du notariat, art. 25.1). The page /mediation prints them: a name, and an address or a site.
MediatorCheck::__construct()
public function __construct(readonly array $mediator = [])MediatorCheck::check()
public function check(): ComplianceResultProfessionalEmailCheck class
final class ProfessionalEmailCheck implements ComplianceCheckInterface ProfessionalEmailCheck.php:16
The office's e-mail addresses end with notaires.fr (règlement professionnel du notariat, art. 16.3): the address each office shows to the public, and the one the site writes to clients from.
ProfessionalEmailCheck::__construct()
public function __construct(readonly OfficeRepository $offices, readonly ?string $sender = null, readonly string $suffix = 'notaires.fr')ProfessionalEmailCheck::check()
public function check(): ComplianceResultTariffDisplayCheck class
final class TariffDisplayCheck implements ComplianceCheckInterface TariffDisplayCheck.php:18
The tariff is displayed on the site (code de commerce, art. L. 444-4: the notaries post the tariffs they practise in their office and on their website), and with it the discounts the office grants, by category of deeds and by band - or that it grants none. The page /tarifs links to the official text; the office types its discounts in the settings. Past the period of the order in force, the reference is to be brought up to date.
TariffDisplayCheck::__construct()
public function __construct(readonly Record $record, readonly array $tariff = [], readonly ?\DateTimeImmutable $today = null)TariffDisplayCheck::check()
public function check(): ComplianceResultWordingCheck class
final class WordingCheck implements ComplianceCheckInterface WordingCheck.php:19
What the office wrote for the public - the fields of practice, the team's biographies, its fees - read again for comparison, disparagement and the superlatives of advertising (Base\Notary\Guard\Wording says on which texts this rests). A warning names where and what.
WordingCheck::__construct()
public function __construct(readonly AreaRepository $areas, readonly MemberRepository $members, readonly Record $record, readonly array $extra = [])WordingCheck::check()
public function check(): ComplianceResultBase\Notary\Controller\Admin\Crud
AreaCrudController class
class AreaCrudController extends AbstractCrudController AreaCrudController.php:19
The fields of practice as the site shows them.
AreaCrudController::getEntityFqcn()
public static function getEntityFqcn(): stringAreaCrudController::getPreferredIcon()
public static function getPreferredIcon(): ?stringAreaCrudController::configureCrud()
public function configureCrud(Crud $crud): CrudAreaCrudController::configureActions()
public function configureActions(Actions $actions): ActionsAreaCrudController::configureFields()
public function configureFields(string $pageName): iterableBase\Notary\Controller\Client
NotaryController class
class NotaryController extends AbstractController NotaryController.php:18
The notarial regime's public pages: the fields of practice, the tariff (regulated: the page explains it and links to the official text, with the office's discounts and its fees for what the tariff does not cover), and the consumer mediator of the notariat.
NotaryController::__construct()
public function __construct(readonly OfficeRepository $offices, readonly Record $record)NotaryController::areas()
public function areas(AreaRepository $areas): ResponseNotaryController::area()
public function area(string $slug, AreaRepository $areas): ResponseNotaryController::tariff()
public function tariff(): ResponseNotaryController::mediation()
public function mediation(): ResponseRequestController class
class RequestController extends AbstractRequestController RequestController.php:22
Asking for a first appointment without an account: an office's clients are invited, so someone new could not go through omnibase/office's booking pages, which ask to sign in. The request becomes an appointment of the office in request mode (no time yet: the office fixes it), under the name, the e-mail and the phone given; the few words are kept encrypted, as every reason is.
The form, its model and what is done with the request are omnibase/office's (AbstractRequestController, AppointmentRequests); the route, the page and its words are this regime's.
RequestController::request()
public function request(Request $request): ResponseSpaceController class
class SpaceController extends AbstractController SpaceController.php:17
The client's space: the appointments to come, the documents the office sent and those the client deposited - in the encrypted vault, never by e-mail.
SpaceController::index()
public function index(AppointmentRepository $appointments, DocumentRepository $documents): ResponseBase\Notary\Demo
NotaryDemoAccounts class
final class NotaryDemoAccounts implements DemoAccountProviderInterface NotaryDemoAccounts.php:25
The demonstration accounts of a notary's office (glitchr/omnibase's demo
environment): one for each role this bundle and omnibase/office know. The
roles of the office come from three groups, as in a real one - "Notaires"
(ROLE_NOTARY), "Clercs" (ROLE_CLERK) and "Accueil" (ROLE_STAFF), the first
two ROLE_STAFF through the application's role hierarchy; "etude" is the
office's administrator.
An application's fixtures take them from Base\Demo\DemoAccountFactory ($accounts->account('notaire', $manager)) and attach what makes them worth signing in as: a member of the team and an agenda to the notary, a request and documents in the vault to the client. An office without one of these roles leaves it out: base.demo.exclude.
Registered when the installed glitchr/omnibase has the demo environment (config/services.php).
const NOTARIES = 'Notaires'const CLERKS = 'Clercs'const RECEPTION = 'Accueil'const CLIENTS = 'Clients'
NotaryDemoAccounts::getDemoAccounts()
public function getDemoAccounts(): iterableBase\Notary\DependencyInjection
NotaryConfiguration class
class NotaryConfiguration extends AbstractBaseConfiguration NotaryConfiguration.php:8
NotaryConfiguration::getConfigTreeBuilder()
public function getConfigTreeBuilder(): TreeBuilderNotaryExtension class
class NotaryExtension extends AbstractBaseExtension implements PrependExtensionInterface NotaryExtension.php:12
NotaryExtension::getConfiguration()
public function getConfiguration(array $config, ContainerBuilder $container): NotaryConfigurationNotaryExtension::prepend()
public function prepend(ContainerBuilder $container): voidThe office's pages in the notarial regime's words: the contact form's warning (nothing confidential here: the client's space is for that), the menu of the client's space, where the e-mails send the client.
NotaryExtension::load()
public function load(array $configs, ContainerBuilder $container): voidBase\Notary\Entity
Area class
class Area extends Area Area.php:19
A field of practice of the office (family, real estate, businesses...): what it covers, the deeds it gives rise to, who of the team follows it.
Information for the public - its wording is checked against comparison (Base\Notary\Compliance\WordingCheck).
The fields and the methods common to the regimes are omnibase/office's (Base\Office\Entity\Area); the deeds and the table are the notaries'.
Area::getDeeds()
public function getDeeds(): arrayArea::setDeeds()
public function setDeeds(?array $deeds): selfArea::getDeedsText()
public function getDeedsText(): stringThe deeds, one a line: what the back office's form edits.
Area::setDeedsText()
public function setDeedsText(?string $text): selfArea::getItems()
public function getItems(): arrayWhat omnibase/office's Area calls the list.
Area::setItems()
public function setItems(?array $items): staticBase\Notary\Form
AppointmentRequestType class
class AppointmentRequestType extends AppointmentRequestType AppointmentRequestType.php:12
omnibase/office's form for a first appointment asked without an account, with this regime's labels (@notary.request.*). Kept for whoever builds the form by this name; the regime's own page gives the prefix itself.
AppointmentRequestType::configureOptions()
public function configureOptions(OptionsResolver $resolver): voidBase\Notary\Form\Model
AppointmentRequest class
class AppointmentRequest extends AppointmentRequest AppointmentRequest.php:8
the model is omnibase/office's: Base\Office\Form\Model\AppointmentRequest
Base\Notary\Guard
EmailDomain class
final class EmailDomain EmailDomain.php:15
"L'adresse de messagerie professionnelle sortante du notaire se termine par « .notaires.fr », afin d'éviter toute confusion dans l'esprit du public" (règlement professionnel du notariat, art. 16.3, approved by the order of 29 January 2024).
The host of the address is notaires.fr itself (prenom.nom@notaires.fr) or one of its subdomains (@paris.notaires.fr); a look-alike (@notaires.fr.example, @mes-notaires.fr) is not.
EmailDomain::isNotarial()
public static function isNotarial(?string $email, string $suffix = 'notaires.fr'): boolWording class
final class Wording Wording.php:25
Words a notary's communication must not carry: comparison with colleagues, disparagement, the superlatives of advertising. The texts: the notary's communication keeps to "la dignité, la loyauté, la confraternité, la délicatesse ; la neutralité, l'impartialité et l'objectivité" (règlement professionnel, art. 14.1), abstains from "toute démarche à caractère publicitaire" (art. 14.2), and a personalised solicitation or an online offer of services "ne peut pas inclure d'éléments comparatifs ou dénigrants" (decree n° 73-1202 of 28 December 1973 as amended by decree n° 2019-257 of 29 March 2019).
A list of expressions is a help to the person who writes, not a judge: what it finds is shown as a warning, and what it does not find is not thereby allowed.
The expressions themselves are omnibase/office's (Base\Office\Guard\Wording), common to the regulated practices.
const PATTERNS = []What is the notaries' alone: nothing so far.
Wording::scan()
public static function scan(?string $text, array $extra = []): array$extraexpressions of the site's own, matched as they are written (case and accents apart)
- Returns
what was found, by its label
Wording::isClean()
public static function isClean(?string $text, array $extra = []): boolWording::plain()
public static function plain(string $text): stringLowered, without accents nor tags, typographic apostrophes and spaces made plain.
Base\Notary\Repository
AreaRepository class
class AreaRepository extends AreaRepository AreaRepository.php:13
The finders are omnibase/office's (findActive(), findOneActiveBySlug(), findForMember()).
AreaRepository::__construct()
public function __construct(ManagerRegistry $registry)Base\Notary\Security
OfficeAudience class
final class OfficeAudience implements AudienceResolverInterface OfficeAudience.php:23
Who of the office reads a client's document, beyond the client and whoever sent it (the voter's own business):
- the notaries and the clerks, who draw up the deeds, see and read it;
- the rest of the staff (the reception) sees that it exists and what it is called, and reads only what is not marked confidential;
- nobody else: neither another client, nor the site's administrators as such.
Only its sender withdraws a document.
OfficeAudience::__construct()
public function __construct(readonly RoleHierarchyInterface $roles, readonly string $notaryRole = 'ROLE_NOTARY', readonly string $clerkRole = 'ROLE_CLERK', readonly string $staffRole = 'ROLE_STAFF')OfficeAudience::decide()
public function decide(string $attribute, Document $document, UserInterface $user): ?boolBase\Notary\Service
Record class
class Record Record.php:14
What only the office knows and the back office's settings keep: the structure that holds the office, its chamber, the day the site was declared to it, the discounts it practises, its fees for what the tariff does not cover. Read without ever failing a page: a settings table not there yet answers nothing.
const HOLDER = 'notary.office.holder'const CRPCEN = 'notary.office.crpcen'const CHAMBER = 'notary.chamber.name'const DECLARED_AT = 'notary.chamber.declared_at'const BRAND = 'notary.brand.applied'const DISCOUNTS = 'notary.tariff.discounts'const FEES = 'notary.tariff.fees'
Record::__construct()
public function __construct(readonly SettingBagInterface $settings)Record::get()
public function get(string $path): ?stringRecord::getHolder()
public function getHolder(): ?stringRecord::getCrpcen()
public function getCrpcen(): ?stringRecord::getChamber()
public function getChamber(): ?stringRecord::getDiscounts()
public function getDiscounts(): ?stringRecord::getFees()
public function getFees(): ?stringRecord::getDeclaredAt()
public function getDeclaredAt(): ?\DateTimeImmutableThe day the site was declared to the chamber, when what was typed is a date.
Record::isBrandApplied()
public function isBrandApplied(): boolBase\Notary\Twig
NotaryExtension class
class NotaryExtension extends AbstractExtension NotaryExtension.php:18
The regime in templates: notary_record() (the structure, the chamber, the discounts typed in the settings), notary_areas(member|null) (the fields of practice, or a member's), notary_mediator(), notary_tariff().
NotaryExtension::__construct()
public function __construct(readonly Record $record, readonly AreaRepository $areas, readonly array $mediator = [], readonly array $tariff = [])NotaryExtension::getFunctions()
public function getFunctions(): array