Browse Source

rev.21 Add Core\Test

Visman 4 years ago
parent
commit
4cf5abdd77

+ 93 - 0
app/Core/Test.php

@@ -0,0 +1,93 @@
+<?php
+
+namespace ForkBB\Core;
+
+use ForkBB\Core\Container;
+use ForkBB\Core\Validator;
+use function \ForkBB\__;
+
+class Test
+{
+    /**
+     * Контейнер
+     * @var Container
+     */
+    protected $c;
+
+    public function __construct(Container $container)
+    {
+        $this->c = $container;
+    }
+
+    public function beforeValidation(Validator $v): Validator
+    {
+        $v->addValidators([
+            'check_field_validation' => [$this, 'vTestCheck'],
+        ])->addRules([
+            'verificationField' => 'check_field_validation',
+        ])->addAliases([
+        ]);
+
+        return $v;
+    }
+
+    public function vTestCheck(Validator $v, /* mixed */ $value) /* : mixed */
+    {
+        if (null !== $value) {
+            $this->addError('The :alias contains an invalid value');
+
+            return $value;
+        }
+
+        $index = 0;
+
+        if (empty($_SERVER['HTTP_USER_AGENT'])) {
+            $index += 1;
+        } elseif (\preg_match('%\bmsie\b%', $_SERVER['HTTP_USER_AGENT'])) {
+            $this->addError('Old browser', 'w');
+
+            return $value;
+        }
+        if (empty($_SERVER['HTTP_ACCEPT'])) {
+            $index += 5;
+        } elseif (false === \strpos($_SERVER['HTTP_ACCEPT'], 'text/html')) {
+            $index += 1;
+        }
+        if (empty($_SERVER['HTTP_ACCEPT_ENCODING'])) {
+            $index += 1;
+        }
+        if (empty($_SERVER['HTTP_ACCEPT_LANGUAGE'])) {
+            $index += 1;
+        }
+        if (
+            ! empty($_SERVER['HTTP_PRAGMA'])
+            && ! \preg_match('%^no-cache$%iD', $_SERVER['HTTP_PRAGMA'])
+        ) {
+            $index += 1;
+        }
+        if (
+            empty($_SERVER['HTTP_CACHE_CONTROL'])
+            && false !== \strpos($_SERVER['SERVER_PROTOCOL'], '1.1')
+        ) {
+            $index += 1;
+        } elseif (false !== \strpos($_SERVER['SERVER_PROTOCOL'], '1.0')) {
+            $index += 3;
+        }
+        if (empty($_SERVER['HTTP_CONNECTION'])) {
+            $index += 1;
+        } elseif (! \preg_match('%^(?:keep-alive|close)$%iD', $_SERVER['HTTP_CONNECTION'])) {
+            $index += 3;
+        }
+        if (
+            ! empty($_SERVER['HTTP_REFERER'])
+            && $this->c->Router->validate($_SERVER['HTTP_REFERER'], 'Index') !== $_SERVER['HTTP_REFERER']
+        ) {
+            $index += 3;
+        }
+        if ($index > 3)  {
+            $this->addError('Bad browser', 'e');
+        }
+
+        return $value;
+    }
+}

+ 18 - 0
app/Models/Pages/Admin/Update.php

@@ -906,4 +906,22 @@ class Update extends Admin
 
         return null;
     }
+
+    /**
+     * rev.20 to rev.21
+     */
+    protected function stageNumber20(array $args): ?int
+    {
+        $coreConfig = new CoreConfig($this->c->DIR_CONFIG . '/' . self::CONFIG_FILE);
+
+        $coreConfig->add(
+            'shared=>Test',
+            '\\ForkBB\\Core\\Test::class',
+            'Func'
+        );
+
+        $coreConfig->save();
+
+        return null;
+    }
 }

+ 1 - 1
app/bootstrap.php

@@ -42,7 +42,7 @@ if (
 }
 $c->PUBLIC_URL = $c->BASE_URL . $forkPublicPrefix;
 
-$c->FORK_REVISION = 20;
+$c->FORK_REVISION = 21;
 $c->START         = $forkStart;
 $c->DIR_APP       = __DIR__;
 $c->DIR_PUBLIC    = $forkPublic;

+ 1 - 0
app/config/main.dist.php

@@ -83,6 +83,7 @@ return [
             'eol'   => '%EOL%',
         ],
         'Func' => \ForkBB\Core\Func::class,
+        'Test' => \ForkBB\Core\Test::class,
         'NormEmail' => \MioVisman\NormEmail\NormEmail::class,
 
         'config'        => '@ConfigModel:init',

+ 6 - 0
app/lang/en/validator.po

@@ -44,3 +44,9 @@ msgstr "Someone else is already registered with that email address. Please choos
 
 msgid "Account email flood"
 msgstr "This account has already requested a passphrase reset recently. Please wait %s minutes before trying again."
+
+msgid "Old browser"
+msgstr "Please update your browser."
+
+msgid "Bad browser"
+msgstr "Please update your browser."

+ 6 - 0
app/lang/ru/validator.po

@@ -44,3 +44,9 @@ msgstr "Введенный почтовый адрес уже кем-то исп
 
 msgid "Account email flood"
 msgstr "Для этой учетной записи недавно уже запрашивали сброс кодовой фразы. Пожалуйста, подождите %s минут, прежде чем повторить попытку."
+
+msgid "Old browser"
+msgstr "Обновите свой браузер."
+
+msgid "Bad browser"
+msgstr "Обновите свой браузер."