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

Размер файла: 3.95Kb
  1. <?php
  2.  
  3. declare(strict_types=1);
  4.  
  5. namespace App\Models;
  6.  
  7. use Illuminate\Support\Str;
  8. use stdClass;
  9.  
  10. /**
  11. * Class Social
  12. *
  13. * @property int id
  14. * @property int user_id
  15. * @property string network
  16. * @property string uid
  17. * @property int created_at
  18. */
  19. class Social extends BaseModel
  20. {
  21. /**
  22. * Indicates if the model should be timestamped.
  23. *
  24. * @var bool
  25. */
  26. public $timestamps = false;
  27.  
  28. /**
  29. * The attributes that aren't mass assignable.
  30. *
  31. * @var array
  32. */
  33. protected $guarded = [];
  34.  
  35. /**
  36. * Генерирует уникальный логин
  37. *
  38. * @param StdClass $network
  39. * @param string $delimiter
  40. * @return mixed
  41. */
  42. public function generateLogin($network, $delimiter = '-')
  43. {
  44. $firstName = ucfirst(Str::slug($network->first_name, $delimiter));
  45. $lastName = ucfirst(Str::slug($network->last_name, $delimiter));
  46. $firstLetter = $firstName[0];
  47.  
  48. $variants = [];
  49.  
  50. if (! empty($network->nickname)) {
  51. $variants[] = Str::slug($network->nickname, $delimiter);
  52. }
  53.  
  54. $variants[] = $firstName;
  55. $variants[] = $firstName . $lastName;
  56. $variants[] = $firstName . $delimiter . $lastName;
  57. $variants[] = $lastName . $firstName;
  58. $variants[] = $lastName . $delimiter . $firstName;
  59. $variants[] = $firstLetter . $lastName;
  60. $variants[] = $firstLetter . $delimiter . $lastName;
  61. $variants[] = $lastName;
  62.  
  63. if (! empty($network->bdate)) {
  64. [,, $year] = explode('.', $network->bdate);
  65. $shortYear = substr($year, -2);
  66.  
  67. $variants[] = $firstName . $shortYear;
  68. $variants[] = $firstName . $year;
  69. $variants[] = $firstName . $delimiter . $shortYear;
  70. $variants[] = $firstName . $delimiter . $year;
  71.  
  72. $variants[] = $firstName . $lastName . $shortYear;
  73. $variants[] = $firstName . $lastName . $year;
  74. $variants[] = $firstName . $delimiter . $lastName . $shortYear;
  75. $variants[] = $firstName . $delimiter . $lastName . $year;
  76. $variants[] = $firstName . $delimiter . $lastName . $delimiter . $shortYear;
  77. $variants[] = $firstName . $delimiter . $lastName . $delimiter . $year;
  78.  
  79. $variants[] = $lastName . $firstName . $shortYear;
  80. $variants[] = $lastName . $firstName . $year;
  81. $variants[] = $lastName . $delimiter . $firstName . $shortYear;
  82. $variants[] = $lastName . $delimiter . $firstName . $year;
  83. $variants[] = $lastName . $delimiter . $firstName . $delimiter . $shortYear;
  84. $variants[] = $lastName . $delimiter . $firstName . $delimiter . $year;
  85.  
  86. $variants[] = $firstLetter . $lastName . $shortYear;
  87. $variants[] = $firstLetter . $lastName . $year;
  88. $variants[] = $firstLetter . $lastName . $delimiter . $shortYear;
  89. $variants[] = $firstLetter . $lastName . $delimiter . $year;
  90. $variants[] = $firstLetter . $delimiter . $lastName . $shortYear;
  91. $variants[] = $firstLetter . $delimiter . $lastName . $year;
  92. $variants[] = $firstLetter . $delimiter . $lastName . $delimiter . $shortYear;
  93. $variants[] = $firstLetter . $delimiter . $lastName . $delimiter . $year;
  94.  
  95. $variants[] = $lastName . $shortYear;
  96. $variants[] = $lastName . $year;
  97. $variants[] = $lastName . $delimiter . $shortYear;
  98. $variants[] = $lastName . $delimiter . $year;
  99. }
  100.  
  101. foreach ($variants as $variant) {
  102. $variant = utfSubstr($variant, 0, 20);
  103.  
  104. if (! getUserByLogin($variant)) {
  105. return $variant;
  106. }
  107. }
  108.  
  109. $i = 0;
  110. while (true) {
  111. $firstName = utfSubstr($firstName, 0, 18);
  112. $login = $firstName . ++$i;
  113.  
  114. if (! getUserByLogin($login)) {
  115. return $login;
  116. }
  117. }
  118.  
  119. return false;
  120. }
  121. }