UserPrivacy.php 1.3KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. <?php
  2. namespace Muzich\CoreBundle\Managers;
  3. use Muzich\CoreBundle\Entity\User;
  4. class UserPrivacy
  5. {
  6. const CONF_FAVORITES_PUBLIC = 'favorites_publics';
  7. static public $configurations = array(
  8. self::CONF_FAVORITES_PUBLIC => true
  9. );
  10. protected $user;
  11. public function __construct(User $user)
  12. {
  13. $this->user = $user;
  14. }
  15. public function get($configuration)
  16. {
  17. $this->configurationKnew($configuration);
  18. return $this->getConfigurationValue($configuration);
  19. }
  20. public function configurationKnew($configuration)
  21. {
  22. if (!array_key_exists($configuration, self::$configurations))
  23. throw new \Exception('Configuration is unknow');
  24. }
  25. protected function getConfigurationValue($configuration)
  26. {
  27. $user_privacy = $this->getUserPrivacy();
  28. if (!array_key_exists($configuration, $user_privacy))
  29. return self::$configurations[$configuration];
  30. return $user_privacy[$configuration];
  31. }
  32. protected function getUserPrivacy()
  33. {
  34. $privacy = $this->user->getPrivacy();
  35. if (!is_array($privacy))
  36. return array();
  37. return $privacy;
  38. }
  39. public function set($configuration, $value)
  40. {
  41. $this->configurationKnew($configuration);
  42. $user_privacy = $this->getUserPrivacy();
  43. $user_privacy[$configuration] = ($value)?true:false;
  44. $this->user->setPrivacy($user_privacy);
  45. }
  46. }