noeud "form", inutilisé et conflit avec le tableau $emails private Collection $emails;*/ private int $nb_pages = 1; private array $emails = []; // => noeud "show_emails" public function __construct(array $data, Node $node, Collection $nda_collection = new ArrayCollection, ?string $presentation = null, ?bool $chrono_order = null) { $this->data = $data; $this->node = $node; $this->nda_collection = $nda_collection; if(!empty($presentation) && $presentation === 'grid'){ $this->grid_cols_min_width = 250; } $this->chrono_order = $chrono_order ?? null; } public function getId(): int { return $this->id_node_data; } public function getData(): array { return $this->data; } /*public function setData(array $data): void // entrée = tableau associatif { $this->data = $data; }*/ public function updateData(string $key, string|int|bool|array $value = ''): void { if($value !== ''){ $this->data[$key] = $value; } // si $value est vide, supprime la clé elseif(isset($this->data[$key])){ unset($this->data[$key]); } } // spécifique aux blocs contenant des articles public function getPresentation(): ?string { return $this->presentation; } public function setPresentation(string $presentation): void { $this->presentation = $presentation; } public function getColsMinWidth(): int { $default = 320; // pixels return $this->grid_cols_min_width === null ? $default : $this->grid_cols_min_width; } public function setColsMinWidth(int $columns): void { $this->grid_cols_min_width = $columns; } public function getChronoOrder(): bool { return $this->chrono_order ?? false; } public function setChronoOrder(bool $reverse_order): void { $this->chrono_order = $reverse_order; } public function getPaginationLimit(): ?int { $default = 12; // si 0 pas de pagination, 12 rend bien avec des grilles de 2, 3 ou 4 colonnes return $this->pagination_limit === null ? $default : $this->pagination_limit; } public function setPaginationLimit(int $pagination_limit): void { $this->pagination_limit = $pagination_limit; } public function getNumberOfPages(): int { return $this->nb_pages; } public function setNumberOfPages(int $nb_pages): void { $this->nb_pages = $nb_pages; } /*public function setNode(Node $node): void { $this->node = $node; }*/ public function getNodeDataAssets(): Collection { return $this->nda_collection; } public function getNodeDataAssetByRole(string $role): ?NodeDataAsset { foreach($this->nda_collection as $nda){ if($nda->getRole() === $role){ return $nda; } } return null; } public function getAssetByRole(string $role): ?Asset { $nda = $this->getNodeDataAssetByRole($role); if($nda === null){ return null; } return $nda->getAsset() ?? null; } public function getEmails(): array // appelée dans ShowEmailsBuilder { return $this->emails; } public function setEmails(array $emails): void // appelée dans Model { $this->emails = $emails; } }