src/Entity/AbstractEntity.php line 151

Open in your IDE?
  1. <?php
  2. namespace App\Entity;
  3. use Doctrine\ORM\Mapping as ORM;
  4. /**
  5.  * Class AbstractEntity
  6.  * @package App\Entity
  7.  */
  8. abstract class AbstractEntity implements \ArrayAccess
  9. {
  10.     /**
  11.      * @ORM\Column(type="datetime", nullable=true)
  12.      */
  13.     protected $created;
  14.     /**
  15.      * @ORM\ManyToOne(targetEntity=User::class)
  16.      */
  17.     protected $createdUser;
  18.     /**
  19.      * @ORM\Column(type="datetime", nullable=true)
  20.      */
  21.     protected $changed;
  22.     /**
  23.      * @ORM\ManyToOne(targetEntity=User::class)
  24.      */
  25.     protected $changedUser;
  26.     /**
  27.      * @ORM\Column(type="string", length=50, nullable=true)
  28.      */
  29.     protected $ip;
  30.     public function getCreated(): ?\DateTimeInterface
  31.     {
  32.         return $this->created;
  33.     }
  34.     public function setCreated(\DateTimeInterface $created): self
  35.     {
  36.         $this->created $created;
  37.         return $this;
  38.     }
  39.     public function getCreatedUser(): ?User
  40.     {
  41.         return $this->createdUser;
  42.     }
  43.     public function setCreatedUser(?User $createdUser): self
  44.     {
  45.         $this->createdUser $createdUser;
  46.         return $this;
  47.     }
  48.     public function getChanged(): ?\DateTimeInterface
  49.     {
  50.         return $this->changed;
  51.     }
  52.     public function setChanged(\DateTimeInterface $changed): self
  53.     {
  54.         $this->changed $changed;
  55.         return $this;
  56.     }
  57.     public function getChangedUser(): ?User
  58.     {
  59.         return $this->changedUser;
  60.     }
  61.     public function setChangedUser(?User $changedUser): self
  62.     {
  63.         $this->changedUser $changedUser;
  64.         return $this;
  65.     }
  66.     public function getIp(): ?string
  67.     {
  68.         return $this->ip;
  69.     }
  70.     public function setIp(string $ip): self
  71.     {
  72.         $this->ip $ip;
  73.         return $this;
  74.     }
  75.     /**
  76.      * Load client ip address
  77.      * @return mixed|string
  78.      */
  79.     protected function getClientIp(){
  80.         if (!empty($_SERVER['HTTP_CLIENT_IP']))
  81.         {
  82.             $ipAddress $_SERVER['HTTP_CLIENT_IP'];
  83.         }
  84.         //whether ip is from proxy
  85.         elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR']))
  86.         {
  87.             $ipAddress $_SERVER['HTTP_X_FORWARDED_FOR'];
  88.         }
  89.         //whether ip is from remote address
  90.         else
  91.         {
  92.             $ipAddress = isset($_SERVER['REMOTE_ADDR']) ? $_SERVER['REMOTE_ADDR'] : 'datafixtures';
  93.         }
  94.         if(is_null($ipAddress)){
  95.             return 'Nenacteno';
  96.         }
  97.         return $ipAddress;
  98.     }
  99.     /**
  100.      * @ORM\PrePersist
  101.      * @ORM\PreUpdate
  102.      */
  103.     public function onPrePersist()
  104.     {
  105.         if(is_null($this->created)){
  106.             $this->created = new \DateTime("now");
  107.         }
  108.         $this->changed = new \DateTime("now");
  109.         $this->setIp($this->getClientIp());
  110.     }
  111.     public function offsetExists($offset)
  112.     {
  113.         $method 'get'.ucfirst($offset);
  114.         return method_exists($this$method);
  115.     }
  116.     /**
  117.      * @param mixed $offset
  118.      * @return false|mixed
  119.      */
  120.     public function offsetGet($offset)
  121.     {
  122.         $method 'get'.ucfirst($offset);
  123.         if(method_exists($this$method)){
  124.             return $this->$method();
  125.         }
  126.         return false;
  127.     }
  128.     /**
  129.      * @param mixed $offset
  130.      * @param mixed $value
  131.      * @return false|void
  132.      */
  133.     public function offsetSet($offset$value)
  134.     {
  135.         $method 'set'.ucfirst($offset);
  136.         if(method_exists($this$method)){
  137.             return $this->$method($value);
  138.         }
  139.         return false;
  140.     }
  141.     public function offsetUnset($offset)
  142.     {
  143.         throw new \Exception('Method offsetUnset does not exists');
  144.     }
  145. }