Browse Source

Update PM

For the case when usernames will only consist of numbers.
Visman 3 years ago
parent
commit
0407139360
3 changed files with 32 additions and 17 deletions
  1. 5 5
      app/Models/PM/Model.php
  2. 14 4
      app/Models/Pages/PM.php
  3. 13 8
      app/Models/Pages/PM/AbstractPM.php

+ 5 - 5
app/Models/PM/Model.php

@@ -224,7 +224,7 @@ class Model extends ParentModel
     /**
      * Инициализирует массивы индексов приватных тем текущего пользователя
      * Инициализирует число приватных тем без фильтра
-     * Может использовать фильтр по второму пользователю: id или username
+     * Может использовать фильтр по второму пользователю: id или "username" (именно в кавычках)
      */
     public function init(/* null|int|string */ $second = null): self
     {
@@ -293,7 +293,7 @@ class Model extends ParentModel
                         if (
                             null === $second
                             || $row['target_id'] === $second
-                            || $row['target'] === $second
+                            || '"' . $row['target'] . '"' === $second
                         ) {
                             $idsArc[$id] = $lp;
                         }
@@ -305,7 +305,7 @@ class Model extends ParentModel
                         if (
                             null === $second
                             || $row['target_id'] === $second
-                            || $row['target'] === $second
+                            || '"' . $row['target'] . '"' === $second
                         ) {
                             if ($lp > $row['poster_visit']) {
                                 $idsNew[$id] = $lp;
@@ -328,7 +328,7 @@ class Model extends ParentModel
                         if (
                             null === $second
                             || $row['poster_id'] === $second
-                            || $row['poster'] === $second
+                            || '"' . $row['poster'] . '"' === $second
                         ) {
                             $idsArc[$id] = $lp;
                         }
@@ -340,7 +340,7 @@ class Model extends ParentModel
                         if (
                             null === $second
                             || $row['poster_id'] === $second
-                            || $row['poster'] === $second
+                            || '"' . $row['poster'] . '"' === $second
                         ) {
                             if ($lp > $row['target_visit']) {
                                 $idsNew[$id] = $lp;

+ 14 - 4
app/Models/Pages/PM.php

@@ -24,10 +24,20 @@ class PM extends Page
         $second = null;
 
         if (isset($args['second'])) {
-            if ('' === \trim($args['second'], '1234567890')) {
-                $second = (int) $args['second'];
-            } else {
-                $second = $args['second'];
+            $second = $args['second'];
+
+            if ('' === \trim($second, '1234567890')) {
+                $second = (int) $second;
+
+                if ($second < 2) { // ???? вынести все в роутер?
+                    return $this->c->Message->message('Bad request');
+                }
+            } elseif (
+                \strlen($second) < 3
+                && '"' !== $second[0]
+                && '"' !== $second[-1]
+            ) {
+                return $this->c->Message->message('Bad request');
             }
         }
 

+ 13 - 8
app/Models/Pages/PM/AbstractPM.php

@@ -147,14 +147,17 @@ abstract class AbstractPM extends Page
 
         if ($viewArea) {
             if (null !== $pms->second) {
-                if (
-                    \is_int($pms->second)
-                    && ($user = $this->c->users->load($pms->second)) instanceof User
-                    && ! $user->isGuest
-                ) {
-                    $name = $user->username;
+                if (\is_int($pms->second)) {
+                    if (
+                        ($user = $this->c->users->load($pms->second)) instanceof User
+                        && ! $user->isGuest
+                    ) {
+                        $name = $user->username;
+                    } else {
+                        $name = 'unknown'; // ????
+                    }
                 } else {
-                    $name = $pms->second;
+                    $name = \substr($pms->second, 1, -1);
                 }
 
                 switch ($pms->area) {
@@ -168,7 +171,9 @@ abstract class AbstractPM extends Page
                         $this->c->Router->link(
                             'PMAction',
                             [
-                                'second' => $this->targetUser->id,
+                                'second' => $this->targetUser->isGuest
+                                    ? '"' . $this->targetUser->username . '"'
+                                    : $this->targetUser->id,
                                 'action' => $pms->area,
                             ]
                         ),