![]() Server : Apache System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 User : corals ( 1002) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/corals/mautic.corals.io/app/bundles/FormBundle/ProgressiveProfiling/ |
<?php namespace Mautic\FormBundle\ProgressiveProfiling; use Mautic\FormBundle\Entity\Field; use Mautic\FormBundle\Entity\Form; class DisplayManager { private DisplayCounter $displayCounter; public function __construct( private Form $form, private array $viewOnlyFields = [] ) { $this->displayCounter = new DisplayCounter($form); } /** * @return bool */ public function showForField(Field $field) { if (in_array($field->getType(), $this->viewOnlyFields)) { return true; } // Always Display field priority until hit limit if ($field->isAlwaysDisplay()) { if ($this->form->getProgressiveProfilingLimit() <= $this->displayCounter->getDisplayFields()) { return false; } else { $this->displayCounter->increaseAlreadyAlwaysDisplayed(); return true; } } if ($this->shouldDisplayNotAlwaysDisplayField($field)) { return true; } else { return false; } } private function shouldDisplayNotAlwaysDisplayField(Field $field): bool { $fields = $this->form->getFields()->toArray(); foreach ($fields as $fieldFromArray) { if (in_array($field->getType(), $this->viewOnlyFields)) { continue; } /** @var Field $fieldFromArray */ if ($field->getId() === $fieldFromArray->getId()) { if (($this->displayCounter->getDisplayFields() + ($this->displayCounter->getAlwaysDisplayFields() - $this->displayCounter->getAlreadyAlwaysDisplayed())) >= $this->form->getProgressiveProfilingLimit()) { return false; } } } return true; } public function useProgressiveProfilingLimit(): bool { return '' != $this->form->getProgressiveProfilingLimit(); } /** * @return DisplayCounter */ public function getDisplayCounter() { return $this->displayCounter; } public function increaseDisplayedFields(Field $field): void { if (!in_array($field->getType(), $this->viewOnlyFields)) { $this->displayCounter->increaseDisplayedFields(); } } }