PageRenderTime 43ms CodeModel.GetById 11ms RepoModel.GetById 0ms app.codeStats 0ms

/app/Repositories/MemberRepository.php

https://gitlab.com/tetrapak07/vimm-me
PHP | 194 lines | 157 code | 27 blank | 10 comment | 30 complexity | 2af9b8f1fb4519655cef016075f373e7 MD5 | raw file
  1. <?php namespace App\Repositories;
  2. use App\Core\EloquentRepository;
  3. use App\Models\Member as MemberModel;
  4. use Request;
  5. use File;
  6. /**
  7. * Member Repository
  8. *
  9. * @package Repositories
  10. * @author Den
  11. */
  12. class MemberRepository extends EloquentRepository {
  13. /**
  14. *
  15. * @var model
  16. */
  17. protected $model;
  18. public function __construct(MemberModel $model) {
  19. $this->model = $model;
  20. $this->countPerPage = 10;
  21. }
  22. public function getAllNoBannedMembers() {
  23. return $this->model
  24. ->where('visible', 1)
  25. ->orderBy('id', 'DESC')
  26. ->get();
  27. }
  28. public function getMembersPaginate($count = 10) {
  29. $count = $this->countPerPage;
  30. return $this->getAllPaginated($count);
  31. }
  32. public function getMemberById($id) {
  33. return $this->getById($id);
  34. }
  35. public function getFilteredMemberData($limit, $sort = 'desc', $offset = 0) {
  36. $members = $this->model
  37. ->orderBy('id', $sort)
  38. ->take($limit)
  39. ->skip($offset)
  40. ->get();
  41. return ['members' => $members, 'limit' => $limit, 'sort' => $sort];
  42. }
  43. public function pageCount() {
  44. return ceil($this->model->count() / $this->countPerPage);
  45. }
  46. public function checkMember() {
  47. $ip = Request::ip();
  48. $ret = $this->checkIsExistMemberByIp($ip);
  49. if (isset($ret[0])) {
  50. $isNoBanned = $ret[0]['visible'];
  51. if ($isNoBanned) {
  52. return true;
  53. } else {
  54. return false;
  55. }
  56. } else {
  57. $r = $this->saveNewMemberByIp($ip);
  58. if ($r) {
  59. return true;
  60. } else {
  61. return false;
  62. }
  63. }
  64. }
  65. public function checkIsExistMemberByIp($ip) {
  66. $member = $this->model
  67. ->where('ip', $ip)
  68. ->take(1)
  69. ->get()->toArray();
  70. return $member;
  71. }
  72. private function saveNewMemberByIp($ip) {
  73. $input = array('visible' => '1', 'ip' => $ip);
  74. $ret = $this->save($input);
  75. if ($ret->exists == '1') {
  76. return true;
  77. } else {
  78. return false;
  79. }
  80. }
  81. public function getThisMember() {
  82. $ip = Request::ip();
  83. return $this->checkIsExistMemberByIp($ip);
  84. }
  85. public function saveMemberRating($memberId, $ratingId) {
  86. return $this->model
  87. ->where('id', $memberId)
  88. ->with('ratings')
  89. ->attach([$ratingId])
  90. ->save();
  91. }
  92. public function makeUserDir($param = '') {
  93. $memberId = $this->getThisMember()[0]['id'];
  94. $path = 'uploads/' . $memberId . $param;
  95. if (!File::exists($path)) {
  96. File::makeDirectory($path, $mode = 0777, true, true);
  97. File::makeDirectory($path . '/tmp', $mode = 0777, true, true);
  98. }
  99. if (!File::exists($path)) {
  100. return false;
  101. } else {
  102. return $path;
  103. }
  104. }
  105. public function checkOrCreateTmpDir($param = '') {
  106. $memberId = $this->getThisMember()[0]['id'];
  107. $path = 'uploads/' . $memberId . $param . '/tmp';
  108. if (!File::exists($path)) {
  109. File::makeDirectory($path, $mode = 0777, true, true);
  110. }
  111. if (!File::exists($path)) {
  112. return false;
  113. } else {
  114. return $path;
  115. }
  116. }
  117. public function temp($tempIp) {
  118. $ip = Request::ip();
  119. if ($ip == $tempIp) {
  120. return true;
  121. } else {
  122. return false;
  123. }
  124. }
  125. public function getLocale() {
  126. if (isset($this->getThisMember()[0]['rem'])) {
  127. $localeCache = $this->getThisMember()[0]['rem'];
  128. } else {
  129. $localeCache = '';
  130. }
  131. $ip = Request::ip();
  132. if (!isset($localeCache)OR ( $localeCache == '')) {
  133. $location = \GeoIP::getLocation();
  134. if ($location['isoCode'] == 'UA') {
  135. $locale = 'ua';
  136. } else if ($location['isoCode'] == 'RU') {
  137. $locale = 'ru';
  138. } else {
  139. $locale = 'en';
  140. }
  141. $this->model->where('ip', '=', $ip)->update(['rem' => $locale]);
  142. } else {
  143. $locale = $localeCache;
  144. }
  145. return $locale;
  146. }
  147. public function checkCacheLocale($lang) {
  148. $ip = Request::ip();
  149. $this->model->where('ip', '=', $ip)->update(['rem' => $lang]);
  150. }
  151. public function renameDirs($oldName, $newName) {
  152. $fullPathOld = public_path() . '/uploads/' . $oldName . '/';
  153. $fullPathNew = public_path() . '/uploads/' . $newName . '/';
  154. if (file_exists($fullPathOld)) {
  155. return rename($fullPathOld, $fullPathNew);
  156. }
  157. }
  158. public function saveUserCache($lastQuestionId, $lastAnswerId, $lastYourAnswerId) {
  159. $memberId = $this->getThisMember()[0]['id'];
  160. $lastQuestionKey = $memberId . 'question';
  161. $lastAnswerKey = $memberId . 'answer';
  162. $lastYourAnswerKey = $memberId . 'answeryou';
  163. \Cache::forever($lastQuestionKey, $lastQuestionId);
  164. \Cache::forever($lastAnswerKey, $lastAnswerId);
  165. \Cache::forever($lastYourAnswerKey, $lastYourAnswerId);
  166. }
  167. }