This commit is contained in:
n1rwana 2022-11-12 19:38:07 +04:00 committed by GitHub
commit 271aecbb2f
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
12 changed files with 89 additions and 12 deletions

14
.idea/deployment.xml Normal file
View file

@ -0,0 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="PublishConfigData">
<serverData>
<paths name="sftp://176.126.103.81:9482">
<serverdata>
<mappings>
<mapping local="$PROJECT_DIR$" web="/" />
</mappings>
</serverdata>
</paths>
</serverData>
</component>
</project>

7
.idea/discord.xml Normal file
View file

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="DiscordProjectSettings">
<option name="show" value="ASK" />
<option name="description" value="" />
</component>
</project>

View file

@ -52,7 +52,7 @@ final class Users extends VKAPIRequestHandler
$response[$i]->verified = intval($usr->isVerified());
break;
case "sex":
$response[$i]->sex = $usr->isFemale() ? 1 : 2;
$response[$i]->sex = $usr->getGender();
break;
case "has_photo":
$response[$i]->has_photo = is_null($usr->getAvatarPhoto()) ? 0 : 1;

View file

@ -726,7 +726,25 @@ class User extends RowModel
function isFemale(): bool
{
return (bool) $this->getRecord()->sex;
return (bool) $this->getRawGender() == "female";
}
function getGender(): string
{
$gender = $this->getRecord()->gender;
if(in_array($gender, ["female", "male", "non-binary"])) return tr($gender);
else return $gender ?? "Не указан";
}
function getRawGender(): ?string
{
return $this->getRecord()->gender;
}
function hasOtherGenderString(): bool
{
return !in_array($this->getRecord()->gender, ["female", "male", "non-binary", NULL]);
}
function isVerified(): bool

View file

@ -91,7 +91,10 @@ final class AuthPresenter extends OpenVKPresenter
$user = new User;
$user->setFirst_Name($this->postParam("first_name"));
$user->setLast_Name($this->postParam("last_name"));
$user->setSex((int)($this->postParam("sex") === "female"));
if ($this->postParam("sex") != "null")
$user->setGender((int)($this->postParam("sex") === "female"));
$user->setEmail($this->postParam("email"));
$user->setSince(date("Y-m-d H:i:s"));
$user->setRegistering_Ip(CONNECTING_IP);

View file

@ -165,9 +165,17 @@ final class UserPresenter extends OpenVKPresenter
if ($this->postParam("politViews") <= 9 && $this->postParam("politViews") >= 0)
$user->setPolit_Views($this->postParam("politViews"));
if ($this->postParam("gender") <= 1 && $this->postParam("gender") >= 0)
$user->setSex($this->postParam("gender"));
if ($this->postParam("gender"))
if($this->postParam("gender") == "hide")
$user->setGender(NULL);
elseif($this->postParam("gender") == "other")
if($this->postParam("other-gender-string"))
$user->setGender($this->postParam("other-gender-string"));
else
$user->setGender(NULL);
else
$user->setGender($this->postParam("gender"));
if(!empty($this->postParam("phone")) && $this->postParam("phone") !== $user->getPhone()) {
if(!OPENVK_ROOT_CONF["openvk"]["credentials"]["smsc"]["enable"])
$this->flashFail("err", tr("error_segmentation"), "котлетки");

View file

@ -49,8 +49,9 @@
<td>
{var $femalePreferred = OPENVK_ROOT_CONF["openvk"]["preferences"]["femaleGenderPriority"]}
<select name="sex" required>
<option n:attr="selected => !$femalePreferred" value="male">{_male}</option>
<option n:attr="selected => $femalePreferred" value="female">{_female}</option>
<option selected value="null">{_not_specified}</option>
<option value="male">{_male}</option>
<option value="female">{_female}</option>
</select>
</td>
</tr>

View file

@ -133,11 +133,23 @@
<td width="120" valign="top">
<span class="nobold">{_gender}: </span>
</td>
<script>
function genderChanged(e) {
if(e.target.value == "other")
$('#other-gender-input').show('slide', 0, 1000)
else
$('#other-gender-input').hide('slide', 0, 1000);
}
</script>
<td>
<select name="gender">
<option value="1" {if $user->isFemale() == true}selected{/if}>{_female}</option>
<option value="0" {if $user->isFemale() == false}selected{/if}>{_male}</option>
<select name="gender" onchange="genderChanged(event)">
<option value="hide" n:attr="selected => $user->getRawGender() == NULL">{_hidden}</option>
<option value="female" n:attr="selected => $user->getRawGender() == 'female'">{_female}</option>
<option value="male" n:attr="selected => $user->getRawGender() == 'male'">{_male}</option>
<option value="non-binary" n:attr="selected => $user->getRawGender() == 'non-binary'">{_non-binary}</option>
<option value="other" n:attr="selected => $user->hasOtherGenderString()">{_other}</option>
</select>
<input id="other-gender-input" type="text" name="other-gender-string" placeholder="{_other_gender_placeholder}" style="display: {$user->hasOtherGenderString() ? 'inline' : 'none'};" n:attr="value => $user->hasOtherGenderString() ? $user->getGender() : ''" />
</td>
</tr>
<tr>

View file

@ -382,7 +382,7 @@
<tbody>
<tr>
<td class="label"><span class="nobold">{_gender}: </span></td>
<td class="data">{$user->isFemale() ? tr("female") : tr("male")}</td>
<td class="data">{$user->getGender()}</td>
</tr>
<tr>
<td class="label"><span class="nobold">{_relationship}:</span></td>

View file

@ -0,0 +1,2 @@
ALTER TABLE `profiles` DROP `sex`;
ALTER TABLE `profiles` ADD `gender` VARCHAR(50) NULL DEFAULT NULL AFTER `left_menu`;

View file

@ -72,6 +72,10 @@
"gender" = "Gender";
"male" = "male";
"female" = "female";
"non-binary" = "non-binary";
"other" = "other";
"other_gender_placeholder" = "I refer to myself as...";
"hidden" = "not specified";
"description" = "Description";
"save" = "Save";
"main_information" = "Main information";
@ -1226,3 +1230,5 @@
"undergoing_section_maintenance" = "Unfortunately, the <b>$1</b> section is temporarily unavailable. We are already working on troubleshooting. Please try to come back later.";
"topics" = "Topics";
"not_specified" = "Not specified";

View file

@ -71,6 +71,10 @@
"gender" = "Пол";
"male" = "мужской";
"female" = "женский";
"non-binary" = "небинарный";
"other" = "другой";
"other_gender_placeholder" = "Я идентифицирую себя как...";
"hidden" = "не указан";
"description" = "Описание";
"save" = "Сохранить";
"main_information" = "Основная информация";
@ -1284,3 +1288,5 @@
"undergoing_section_maintenance" = "К сожалению, раздел <b>$1</b> временно недоступен. Мы уже работаем над устранением неисправностей. Пожалуйста, попробуйте зайти позже.";
"topics" = "Темы";
"not_specified" = "Не указан";