lib/boab/cms-bundle/src/Entity/Block.php line 15

Open in your IDE?
  1. <?php 
  2. namespace Boab\CmsBundle\Entity;
  3. use DateTime;
  4. use Doctrine\ORM\Mapping as ORM;
  5. use Sonata\BlockBundle\Model\BlockInterface;
  6. use Ramsey\Uuid\Rfc4122\UuidInterface ;
  7. use Ramsey\Uuid\Uuid;
  8. /**
  9.  * @ORM\Entity (repositoryClass="Boab\CmsBundle\Repository\BlockRepository")
  10.  * @ORM\Table(name="blocks")
  11.  */
  12. class Block implements BlockInterfaceUuidGeneratedInterface
  13. {
  14.    
  15.     /**
  16.      * @ORM\Id
  17.      * @ORM\Column(type="integer")
  18.      * @ORM\GeneratedValue(strategy="AUTO")
  19.      */
  20.     private $id;
  21.    
  22.     /**
  23.      * @var Uuid
  24.      * @ORM\Column(type="uuid", unique=true)
  25.      */
  26.     protected $uuid;
  27.     /**
  28.      * @var string
  29.      *
  30.      * @ORM\Column(name="name", type="string",nullable=false, unique=true)
  31.      */
  32.     private $name;
  33.     /**
  34.      * @var array
  35.      * @ORM\Column(type="array", name="settings")
  36.      */
  37.     private $settings;
  38.     /**
  39.      * @var bool
  40.      *
  41.      * @ORM\Column(name="enabled", type="boolean",  nullable=true)
  42.      */
  43.     private $enabled;
  44.     /**
  45.      * @var integer
  46.      *
  47.      * @ORM\Column(name="position", type="integer",  nullable=true)
  48.      */
  49.     private $position;
  50.     /**
  51.      * @var BlockInterface|null
  52.      * @ORM\Column(name="parent", type="integer",  nullable=true)
  53.      */
  54.     private $parent;
  55.     /**
  56.      * @var BlockInterface[]
  57.      */
  58.     private $children;
  59.     /**
  60.      * @var \DateTime|null
  61.      * @ORM\Column(name="created_at", type="datetime")
  62.      */
  63.     private $createdAt;
  64.     /**
  65.      * @var \DateTime|null
  66.      * @ORM\Column(name="updated_at", type="datetime")
  67.      */
  68.     private $updatedAt;
  69.     /**
  70.      * @var string|null
  71.      * 
  72.      * @ORM\Column(name="type", type="string")
  73.      */
  74.     private $type;
  75.     /**
  76.      * @var int|null
  77.      * 
  78.      * @ORM\Column(name="ttl", type="integer")*
  79.      */
  80.     private $ttl;
  81.     public function __construct()
  82.     {
  83.         $this->settings = [];
  84.         $this->enabled false;
  85.         $this->children = [];
  86.         $this->uuid Uuid::uuid4();
  87.     }
  88.     public function setId($id):void
  89.     {
  90.     }
  91.     /**
  92.      * Get id.
  93.      *
  94.      * @return string
  95.      */
  96.     public function getId()
  97.     {
  98.         return $this->id;
  99.     }
  100.     /**
  101.      * Set name.
  102.      *
  103.      * @param string $name
  104.      *
  105.      * @return Block
  106.      */
  107.     public function setName(string $name):void
  108.     {
  109.         $this->name $name;
  110.     }
  111.     /**
  112.      * Get name.
  113.      *
  114.      * @return string
  115.      */
  116.     public function getName():?string
  117.     {
  118.         return $this->name;
  119.     }
  120.     /**
  121.      * Set settings.
  122.      *
  123.      * @param array $settings
  124.      *
  125.      * @return Block
  126.      */
  127.     public function setSettings(array $settings = []):void
  128.     {
  129.         $this->settings $settings;
  130.     }
  131.     /**
  132.      * Get settings.
  133.      *
  134.      * @return array
  135.      */
  136.     public function getSettings():array
  137.     {
  138.         return $this->settings;
  139.     }
  140.     /**
  141.      * Set enabled.
  142.      *
  143.      * @param bool|null $enabled
  144.      *
  145.      * @return Block
  146.      */
  147.     public function setEnabled(bool $enabled):void
  148.     {
  149.         $this->enabled $enabled;
  150.     }
  151.     /**
  152.      * Get enabled.
  153.      *
  154.      * @return bool|null
  155.      */
  156.     public function getEnabled():bool
  157.     {
  158.         return $this->enabled;
  159.     }
  160.     /**
  161.      * Set position.
  162.      *
  163.      * @param int|null $position
  164.      *
  165.      * @return Block
  166.      */
  167.     public function setPosition(int $position):void
  168.     {
  169.         $this->position $position;
  170.     }
  171.     /**
  172.      * Get position.
  173.      *
  174.      * @return int|null
  175.      */
  176.     public function getPosition():?int
  177.     {
  178.         return $this->position;
  179.     }
  180.     /**
  181.      * Set parent.
  182.      *
  183.      * @param int|null $parent
  184.      *
  185.      * @return Block
  186.      */
  187.     public function setParent(?BLockInterface $parent null):void
  188.     {
  189.         $this->parent $parent;
  190.     }
  191.     /**
  192.      * Get parent.
  193.      *
  194.      * @return int|null
  195.      */
  196.     public function getParent():?BLockInterface
  197.     {
  198.         return $this->parent;
  199.     }
  200.     /**
  201.      * {@inheritdoc}
  202.      */
  203.     public function hasParent():bool
  204.     {
  205.         return $this->getParent() instanceof self;
  206.     }    
  207.     /**
  208.      * {@inheritdoc}
  209.      */
  210.     public function addChildren(BlockInterface $child):void
  211.     {
  212.         $this->children[] = $child;
  213.         $child->setParent($this);
  214.     }    
  215.     /**
  216.      * Set children.
  217.      *
  218.      * @param int|null $children
  219.      *
  220.      * @return Block
  221.      */
  222.     public function setChildren($children null)
  223.     {
  224.         $this->children = [];
  225.         return $this;
  226.     }
  227.     /**
  228.      * Get children.
  229.      *
  230.      * @return int|null
  231.      */
  232.     public function getChildren():array
  233.     {
  234.         return [];
  235.     }
  236.     /**
  237.      * {@inheritdoc}
  238.      */
  239.     public function hasChildren():bool
  240.     {
  241.         return \count($this->getChildren()) > 0;
  242.     }    
  243.     /**
  244.      * Set createdAt.
  245.      *
  246.      * @param bool $createdAt
  247.      *
  248.      * @return Block
  249.      */
  250.     public function setCreatedAt(\DateTime $createdAt null):void
  251.     {
  252.         $this->createdAt $createdAt;
  253.     }
  254.     /**
  255.      * Get createdAt.
  256.      *
  257.      * @return bool
  258.      */
  259.     public function getCreatedAt():?DateTime
  260.     {
  261.         return $this->createdAt;
  262.     }
  263.     /**
  264.      * Set updatedAt.
  265.      *
  266.      * @param bool $updatedAt
  267.      *
  268.      * @return Block
  269.      */
  270.     public function setUpdatedAt(\DateTime $updatedAt null):void
  271.     {
  272.         $this->updatedAt $updatedAt;
  273.     }
  274.     /**
  275.      * Get updatedAt.
  276.      *
  277.      * @return bool
  278.      */
  279.     public function getUpdatedAt():?DateTime
  280.     {
  281.         return $this->updatedAt;
  282.     }
  283.     /**
  284.      * Set type.
  285.      *
  286.      * @param string $type
  287.      *
  288.      * @return Block
  289.      */
  290.     public function setType(string $type):void
  291.     {
  292.         $this->type $type;
  293.     }
  294.     /**
  295.      * Get type.
  296.      *
  297.      * @return string
  298.      */
  299.     public function getType():?string
  300.     {
  301.         return $this->type;
  302.     }
  303.     /**
  304.      * Set ttl.
  305.      *
  306.      * @param int $ttl
  307.      *
  308.      * @return Block
  309.      */
  310.     public function setTtl($ttl)
  311.     {
  312.         $this->ttl $ttl;
  313.         return $this;
  314.     }
  315.     /**
  316.      * Get ttl.
  317.      *
  318.      * @return int
  319.      */
  320.     /**
  321.      * {@inheritdoc}
  322.      */
  323.     public function getTtl():int
  324.     {
  325.         if (!$this->getSetting('use_cache'true)) {
  326.             return 0;
  327.         }
  328.         $ttl $this->getSetting('ttl'86400);
  329.         foreach ($this->getChildren() as $block) {
  330.             $blockTtl $block->getTtl();
  331.             $ttl = ($blockTtl $ttl) ? $blockTtl $ttl;
  332.         }
  333.         $this->ttl $ttl;
  334.         return $this->ttl;
  335.     }
  336.     public function setSetting(string $name$value):void
  337.     {
  338.         $this->settings[$name] = $value;
  339.     }
  340.     /**
  341.      * {@inheritdoc}
  342.      */
  343.     public function getSetting($name$default null):?string
  344.     {
  345.         return isset($this->settings[$name]) ? $this->settings[$name] : $default;
  346.     }    
  347.     /**
  348.      * Get the value of uuid
  349.      *
  350.      * @return  Uuid
  351.      */ 
  352.     public function getUuid()
  353.     {
  354.         return $this->uuid;
  355.     }
  356.     /**
  357.      * Set the value of uuid
  358.      *
  359.      * @param  Uuid  $uuid
  360.      *
  361.      * @return  self
  362.      */ 
  363.     public function setUuid(UuidInterface $uuid)
  364.     {
  365.         $this->uuid $uuid;
  366.         return $this;
  367.     }
  368. }