Просмотр файла app/Models/User.php

Размер файла: 2.52Kb
  1. <?php
  2.  
  3. declare(strict_types=1);
  4.  
  5. namespace App\Models;
  6.  
  7. /**
  8. * Class User
  9. *
  10. * @property int $id
  11. * @property string $login
  12. * @property string $password
  13. * @property string $email
  14. * @property string $role
  15. * @property string $name
  16. * @property string $picture
  17. * @property string $avatar
  18. * @property int $created_at
  19. */
  20. class User extends Model
  21. {
  22. protected string $filePath = __DIR__ . '/../../database/users.csv';
  23.  
  24. public const BOSS = 'boss'; // Владелец
  25. public const ADMIN = 'admin'; // Админ
  26. public const MODER = 'moder'; // Модератор
  27. public const EDITOR = 'editor'; // Редактор
  28. public const USER = 'user'; // Пользователь
  29. public const PENDED = 'pended'; // Ожидающий
  30. public const BANNED = 'banned'; // Забаненный
  31.  
  32. /**
  33. * All group
  34. */
  35. public const ALL_GROUP = [
  36. self::BOSS,
  37. self::ADMIN,
  38. self::MODER,
  39. self::EDITOR,
  40. self::USER,
  41. self::PENDED,
  42. self::BANNED,
  43. ];
  44.  
  45. /**
  46. * Genders
  47. */
  48. public const MALE = 'male';
  49. public const FEMALE = 'female';
  50.  
  51. /**
  52. * Get name
  53. *
  54. * @return string
  55. */
  56. public function getName(): string
  57. {
  58. if (! $this->id) {
  59. return setting('main.delete_name');
  60. }
  61.  
  62. return escape($this->name ?? $this->login);
  63. }
  64.  
  65. /**
  66. * Get profile link
  67. *
  68. * @return string
  69. */
  70. public function getProfile(): string
  71. {
  72. if (! $this->id) {
  73. return setting('main.delete_name');
  74. }
  75.  
  76. return '<a href="/users/' . $this->login . '">' . $this->getName() . '</a>';
  77. }
  78.  
  79. /**
  80. * Get avatar
  81. *
  82. * @return string
  83. */
  84. public function getAvatar(): string
  85. {
  86. if (! $this->id) {
  87. return '<img class="avatar-default rounded-circle" src="/assets/images/avatar_guest.png" alt="Аватар">';
  88. }
  89.  
  90. if ($this->avatar && file_exists(publicPath($this->avatar))) {
  91. $avatar = '<img class="avatar-default rounded-circle" src="' . $this->avatar . '" alt="Аватар">';
  92. } else {
  93. $avatar = '<img class="avatar-default rounded-circle" src="/assets/images/avatar_default.png" alt="Аватар">';
  94. }
  95.  
  96. return $avatar;
  97. }
  98.  
  99. /**
  100. * Get role
  101. *
  102. * @return string
  103. */
  104. public function getRole(): string
  105. {
  106. if (! $this->id) {
  107. return setting('roles.user');
  108. }
  109.  
  110. return setting('roles.' . $this->role);
  111. }
  112. }