| <?php |
| |
| namespace LdapRecord\Models\Concerns; |
| |
| /** |
| * @author Taylor Otwell |
| * |
| * @see https://laravel.com |
| */ |
| trait HidesAttributes |
| { |
| /** |
| * The attributes that should be hidden for serialization. |
| * |
| * @var array |
| */ |
| protected $hidden = []; |
| |
| /** |
| * The attributes that should be visible in serialization. |
| * |
| * @var array |
| */ |
| protected $visible = []; |
| |
| /** |
| * Get the hidden attributes for the model. |
| * |
| * @return array |
| */ |
| public function getHidden() |
| { |
| return array_map(function ($key) { |
| return $this->normalizeAttributeKey($key); |
| }, $this->hidden); |
| } |
| |
| /** |
| * Set the hidden attributes for the model. |
| * |
| * @param array $hidden |
| * |
| * @return $this |
| */ |
| public function setHidden(array $hidden) |
| { |
| $this->hidden = $hidden; |
| |
| return $this; |
| } |
| |
| /** |
| * Add hidden attributes for the model. |
| * |
| * @param array|string|null $attributes |
| * |
| * @return void |
| */ |
| public function addHidden($attributes = null) |
| { |
| $this->hidden = array_merge( |
| $this->hidden, |
| is_array($attributes) ? $attributes : func_get_args() |
| ); |
| } |
| |
| /** |
| * Get the visible attributes for the model. |
| * |
| * @return array |
| */ |
| public function getVisible() |
| { |
| return array_map(function ($key) { |
| return $this->normalizeAttributeKey($key); |
| }, $this->visible); |
| } |
| |
| /** |
| * Set the visible attributes for the model. |
| * |
| * @param array $visible |
| * |
| * @return $this |
| */ |
| public function setVisible(array $visible) |
| { |
| $this->visible = $visible; |
| |
| return $this; |
| } |
| |
| /** |
| * Add visible attributes for the model. |
| * |
| * @param array|string|null $attributes |
| * |
| * @return void |
| */ |
| public function addVisible($attributes = null) |
| { |
| $this->visible = array_merge( |
| $this->visible, |
| is_array($attributes) ? $attributes : func_get_args() |
| ); |
| } |
| |
| /** |
| * Make the given, typically hidden, attributes visible. |
| * |
| * @param array|string $attributes |
| * |
| * @return $this |
| */ |
| public function makeVisible($attributes) |
| { |
| $this->hidden = array_diff($this->hidden, (array) $attributes); |
| |
| if (! empty($this->visible)) { |
| $this->addVisible($attributes); |
| } |
| |
| return $this; |
| } |
| |
| /** |
| * Make the given, typically visible, attributes hidden. |
| * |
| * @param array|string $attributes |
| * |
| * @return $this |
| */ |
| public function makeHidden($attributes) |
| { |
| $attributes = (array) $attributes; |
| |
| $this->visible = array_diff($this->visible, $attributes); |
| |
| $this->hidden = array_unique(array_merge($this->hidden, $attributes)); |
| |
| return $this; |
| } |
| } |