diff --git a/VKAPI/Handlers/Account.php b/VKAPI/Handlers/Account.php index 75f33b53..b05e01bd 100644 --- a/VKAPI/Handlers/Account.php +++ b/VKAPI/Handlers/Account.php @@ -1,5 +1,6 @@ requireUser(); + $user = $this->getUser(); + + $output = [ + "changed" => 0, + ]; + + if(!empty($first_name) || !empty($last_name)) { + $output["name_request"] = [ + "id" => random_int(1, 2048), # For compatibility with original VK API + "status" => "success", + "first_name" => !empty($first_name) ? $first_name : $user->getFirstName(), + "last_name" => !empty($last_name) ? $last_name : $user->getLastName(), + ]; + + try { + if(!empty($first_name)) + $user->setFirst_name($first_name); + if(!empty($last_name)) + $user->setLast_Name($last_name); + } catch (InvalidUserNameException $e) { + $output["name_request"]["status"] = "declined"; + return (object) $output; + } + } + + if(!empty($screen_name)) + if (!$user->setShortCode($screen_name)) + $this->fail(1260, "Invalid screen name"); + + # For compatibility with original VK API + if($sex > 0) + $user->setSex($sex == 1 ? 1 : 0); + + if($relation > -1) + $user->setMarital_Status($relation); + + if(!empty($bdate)) { + $birthday = strtotime($bdate); + if (!is_int($birthday)) + $this->fail(100, "invalid value of bdate."); + + $user->setBirthday($birthday); + } + + # For compatibility with original VK API + switch($bdate_visibility) { + case 0: + $this->fail(946, "Hiding date of birth is not implemented."); + break; + case 1: + $user->setBirthday_privacy(0); + break; + case 2: + $user->setBirthday_privacy(1); + } + + if(!empty($home_town)) + $user->setHometown($home_town); + + if(!empty($status)) + $user->setStatus($status); + + if($sex > 0 || $relation > -1 || $bdate_visibility > 1 || !empty("$first_name$last_name$screen_name$bdate$home_town$status")) { + $output["changed"] = 1; + $user->save(); + } + + return (object) $output; + } }