* * This program 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. * * This program 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 this program. If not, see . */ namespace Chill\CustomFieldsBundle\Entity; use Doctrine\Common\Collections\ArrayCollection; use Doctrine\ORM\Mapping as ORM; use Doctrine\Common\Collections\Collection; /** * CustomFieldGroup * * @ORM\Entity() * @ORM\Table(name="customfieldsgroup") */ class CustomFieldsGroup { /** * @var integer * * @ORM\Id * @ORM\Column(name="id", type="integer") * @ORM\GeneratedValue(strategy="AUTO") */ private $id; /** * @var array * * @ORM\Column(type="json_array") */ private $name; /** * @var string * * @ORM\Column(type="string", length=255) */ private $entity; /** * The custom fields of the group. * The custom fields are asc-ordered regarding to their property "ordering". * * @var Collection $customFields * * @ORM\OneToMany( * targetEntity="Chill\CustomFieldsBundle\Entity\CustomField", * mappedBy="customFieldGroup") * @ORM\OrderBy({"ordering" = "ASC"}) */ private $customFields; /** * The custom fields of the group that are active. * This variable if null, if this informations has not been computed. * * @var array|null */ private $activeCustomFields = null; /** * @var array * * @ORM\Column(type="json_array") */ private $options = array(); /** * CustomFieldsGroup constructor. */ public function __construct() { $this->customFields = new ArrayCollection(); } /** * Add customField * * @param CustomField $customField * @return CustomFieldsGroup */ public function addCustomField(CustomField $customField) { $this->customFields[] = $customField; return $this; } /** * Remove customField * * @param CustomField $customField */ public function removeCustomField(CustomField $customField) { $this->customFields->removeElement($customField); } /** * @return Collection */ public function getCustomFields() { return $this->customFields; } /** * Get all the custom * * @return Collection */ public function getActiveCustomFields() { if($this->activeCustomFields === null) { $this->activeCustomFields = array(); foreach ($this->customFields as $cf) { if($cf->isActive()) { array_push($this->activeCustomFields, $cf); } } } return $this->activeCustomFields; } /** * Get id * * @return integer */ public function getId() { return $this->id; } /** * Set name * * @param array $name * @return CustomFieldsGroup */ public function setName($name) { $this->name = $name; return $this; } /** * Get name * * @return array */ public function getName($language = null) { //TODO set this in a service, PLUS twig function if ($language) { if (isset($this->name[$language])) { return $this->name[$language]; } else { foreach ($this->name as $name) { if (!empty($name)) { return $name; } } } return ''; } else { return $this->name; } } /** * Set entity * * @param string $entity * @return CustomFieldsGroup */ public function setEntity($entity) { $this->entity = $entity; return $this; } /** * Get entity * * @return string */ public function getEntity() { return $this->entity; } /** * get options array * * @return array */ public function getOptions() { return $this->options; } /** * set options array * * @param array $options * @return CustomFieldsGroup */ public function setOptions(array $options) { $this->options = $options; return $this; } }