mirror of
https://github.com/openvk/openvk
synced 2024-11-11 01:19:53 +03:00
Add User::getMorphedName
This commit is contained in:
parent
2c6fa71e20
commit
f3f62a63ac
5 changed files with 193 additions and 101 deletions
|
@ -38,6 +38,7 @@
|
||||||
<excludeFolder url="file://$MODULE_DIR$/vendor/symfony/console" />
|
<excludeFolder url="file://$MODULE_DIR$/vendor/symfony/console" />
|
||||||
<excludeFolder url="file://$MODULE_DIR$/vendor/symfony/polyfill-php80" />
|
<excludeFolder url="file://$MODULE_DIR$/vendor/symfony/polyfill-php80" />
|
||||||
<excludeFolder url="file://$MODULE_DIR$/vendor/symfony/service-contracts" />
|
<excludeFolder url="file://$MODULE_DIR$/vendor/symfony/service-contracts" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/vendor/wapmorgan/morphos" />
|
||||||
</content>
|
</content>
|
||||||
<orderEntry type="inheritedJdk" />
|
<orderEntry type="inheritedJdk" />
|
||||||
<orderEntry type="sourceFolder" forTests="false" />
|
<orderEntry type="sourceFolder" forTests="false" />
|
||||||
|
|
|
@ -39,6 +39,7 @@
|
||||||
<path value="$PROJECT_DIR$/vendor/symfony/console" />
|
<path value="$PROJECT_DIR$/vendor/symfony/console" />
|
||||||
<path value="$PROJECT_DIR$/vendor/symfony/polyfill-php80" />
|
<path value="$PROJECT_DIR$/vendor/symfony/polyfill-php80" />
|
||||||
<path value="$PROJECT_DIR$/vendor/symfony/service-contracts" />
|
<path value="$PROJECT_DIR$/vendor/symfony/service-contracts" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/wapmorgan/morphos" />
|
||||||
</include_path>
|
</include_path>
|
||||||
</component>
|
</component>
|
||||||
<component name="PhpProjectSharedConfiguration" php_language_level="7.4">
|
<component name="PhpProjectSharedConfiguration" php_language_level="7.4">
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
<?php declare(strict_types=1);
|
<?php declare(strict_types=1);
|
||||||
namespace openvk\Web\Models\Entities;
|
namespace openvk\Web\Models\Entities;
|
||||||
|
use morphos\Gender;
|
||||||
use openvk\Web\Themes\{Themepack, Themepacks};
|
use openvk\Web\Themes\{Themepack, Themepacks};
|
||||||
use openvk\Web\Util\DateTime;
|
use openvk\Web\Util\DateTime;
|
||||||
use openvk\Web\Models\RowModel;
|
use openvk\Web\Models\RowModel;
|
||||||
|
@ -9,6 +10,7 @@ use openvk\Web\Models\Exceptions\InvalidUserNameException;
|
||||||
use Nette\Database\Table\ActiveRow;
|
use Nette\Database\Table\ActiveRow;
|
||||||
use Chandler\Database\DatabaseConnection;
|
use Chandler\Database\DatabaseConnection;
|
||||||
use Chandler\Security\User as ChandlerUser;
|
use Chandler\Security\User as ChandlerUser;
|
||||||
|
use function morphos\Russian\inflectName;
|
||||||
|
|
||||||
class User extends RowModel
|
class User extends RowModel
|
||||||
{
|
{
|
||||||
|
@ -167,12 +169,23 @@ class User extends RowModel
|
||||||
return $this->getFirstName() . $pseudo . $this->getLastName();
|
return $this->getFirstName() . $pseudo . $this->getLastName();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function getMorphedName(string $case = "genitive", bool $fullName = true): string
|
||||||
|
{
|
||||||
|
$name = $fullName ? ($this->getLastName() . " " . $this->getFirstName()) : $this->getFirstName();
|
||||||
|
if(!preg_match("%^[А-яё\-]+$%", $name))
|
||||||
|
return $name; # name is probably not russian
|
||||||
|
|
||||||
|
$inflected = inflectName($name, $case, $this->isFemale() ? Gender::FEMALE : Gender::MALE);
|
||||||
|
|
||||||
|
return $inflected ?: $name;
|
||||||
|
}
|
||||||
|
|
||||||
function getCanonicalName(): string
|
function getCanonicalName(): string
|
||||||
{
|
{
|
||||||
if($this->getRecord()->deleted)
|
if($this->getRecord()->deleted)
|
||||||
return "DELETED";
|
return "DELETED";
|
||||||
else
|
else
|
||||||
return $this->getFirstName() . ' ' . $this->getLastName();
|
return $this->getFirstName() . " " . $this->getLastName();
|
||||||
}
|
}
|
||||||
|
|
||||||
function getPhone(): ?string
|
function getPhone(): ?string
|
||||||
|
|
|
@ -16,7 +16,9 @@
|
||||||
"erusev/parsedown": "dev-master",
|
"erusev/parsedown": "dev-master",
|
||||||
"bhaktaraz/php-rss-generator": "dev-master",
|
"bhaktaraz/php-rss-generator": "dev-master",
|
||||||
"ext-simplexml": "*",
|
"ext-simplexml": "*",
|
||||||
"symfony/console": "5.4.x-dev"
|
"symfony/console": "5.4.x-dev",
|
||||||
|
"wapmorgan/morphos": "dev-master",
|
||||||
|
"ext-sodium": "*"
|
||||||
},
|
},
|
||||||
"minimum-stability": "dev"
|
"minimum-stability": "dev"
|
||||||
}
|
}
|
||||||
|
|
79
composer.lock
generated
79
composer.lock
generated
|
@ -4,7 +4,7 @@
|
||||||
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
|
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
|
||||||
"This file is @generated automatically"
|
"This file is @generated automatically"
|
||||||
],
|
],
|
||||||
"content-hash": "878bd996183ccbb15637a7399ba03ab9",
|
"content-hash": "63feb555e36a6e7ab5a0a5ec71adecdd",
|
||||||
"packages": [
|
"packages": [
|
||||||
{
|
{
|
||||||
"name": "al/emoji-detector",
|
"name": "al/emoji-detector",
|
||||||
|
@ -2222,6 +2222,80 @@
|
||||||
},
|
},
|
||||||
"time": "2018-09-26T17:10:59+00:00"
|
"time": "2018-09-26T17:10:59+00:00"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name": "wapmorgan/morphos",
|
||||||
|
"version": "dev-master",
|
||||||
|
"source": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/wapmorgan/Morphos.git",
|
||||||
|
"reference": "ec18034d4a439139902c769a64bb67e59e3402a8"
|
||||||
|
},
|
||||||
|
"dist": {
|
||||||
|
"type": "zip",
|
||||||
|
"url": "https://api.github.com/repos/wapmorgan/Morphos/zipball/ec18034d4a439139902c769a64bb67e59e3402a8",
|
||||||
|
"reference": "ec18034d4a439139902c769a64bb67e59e3402a8",
|
||||||
|
"shasum": ""
|
||||||
|
},
|
||||||
|
"require": {
|
||||||
|
"ext-mbstring": "*",
|
||||||
|
"php": ">=5.4.0"
|
||||||
|
},
|
||||||
|
"require-dev": {
|
||||||
|
"phpunit/phpunit": "~4.8"
|
||||||
|
},
|
||||||
|
"suggest": {
|
||||||
|
"ext-readline": "For using interactive version of script"
|
||||||
|
},
|
||||||
|
"default-branch": true,
|
||||||
|
"type": "library",
|
||||||
|
"autoload": {
|
||||||
|
"files": [
|
||||||
|
"src/English/functions.php",
|
||||||
|
"src/Russian/functions.php"
|
||||||
|
],
|
||||||
|
"psr-4": {
|
||||||
|
"morphos\\": "src/"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"notification-url": "https://packagist.org/downloads/",
|
||||||
|
"license": [
|
||||||
|
"MIT"
|
||||||
|
],
|
||||||
|
"authors": [
|
||||||
|
{
|
||||||
|
"name": "Sergey Vanyushin",
|
||||||
|
"email": "wapmorgan@gmail.com",
|
||||||
|
"role": "developer"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"description": "A morphological solution for Russian and English language written completely in PHP. Provides classes to inflect personal names, geographical names, decline and pluralize nouns, generate cardinal and ordinal numerals, spell out money amounts and time.",
|
||||||
|
"homepage": "http://morphos.io",
|
||||||
|
"keywords": [
|
||||||
|
"Numerals",
|
||||||
|
"adjectives",
|
||||||
|
"cardinal",
|
||||||
|
"declension",
|
||||||
|
"english",
|
||||||
|
"geographical names",
|
||||||
|
"human-friendly",
|
||||||
|
"inflection",
|
||||||
|
"language",
|
||||||
|
"money",
|
||||||
|
"morphology",
|
||||||
|
"nouns",
|
||||||
|
"ordinal",
|
||||||
|
"personal names",
|
||||||
|
"pluralization",
|
||||||
|
"russian",
|
||||||
|
"spelling",
|
||||||
|
"time"
|
||||||
|
],
|
||||||
|
"support": {
|
||||||
|
"issues": "https://github.com/wapmorgan/Morphos/issues",
|
||||||
|
"source": "https://github.com/wapmorgan/Morphos/tree/master"
|
||||||
|
},
|
||||||
|
"time": "2021-11-22T09:15:18+00:00"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "whichbrowser/parser",
|
"name": "whichbrowser/parser",
|
||||||
"version": "dev-master",
|
"version": "dev-master",
|
||||||
|
@ -2356,7 +2430,8 @@
|
||||||
"vearutop/php-obscene-censor-rus": 20,
|
"vearutop/php-obscene-censor-rus": 20,
|
||||||
"erusev/parsedown": 20,
|
"erusev/parsedown": 20,
|
||||||
"bhaktaraz/php-rss-generator": 20,
|
"bhaktaraz/php-rss-generator": 20,
|
||||||
"symfony/console": 20
|
"symfony/console": 20,
|
||||||
|
"wapmorgan/morphos": 20
|
||||||
},
|
},
|
||||||
"prefer-stable": false,
|
"prefer-stable": false,
|
||||||
"prefer-lowest": false,
|
"prefer-lowest": false,
|
||||||
|
|
Loading…
Reference in a new issue