id; } /** * @param int $id * * @return $this */ public function setId($id) { $this->id = $id; return $this; } /** * @return string */ public function getTitle() { return $this->title; } /** * @param string $title * * @return UserRemoteService */ public function setTitle($title) { $this->title = $title; return $this; } /** * @return string */ public function getURL() { return $this->url; } /** * @param string $url * * @return UserRemoteService */ public function setURL($url) { $this->url = $url; return $this; } /** * Returns a user-specific URL, with two extra query string parameters : 'username' and 'hash'. * 'hash' is the return value of function call crypt($userId, $salt). * * @param string $username the URL query parameter 'username' * @param string $userId the user identifier, to be passed to crypt() to generate the 'hash' query parameter * @param string $salt the salt to be passed to crypt() in order to generate the 'hash' query parameter * * @throws Exception on crypt() failure * * @return string the custom user URL */ public function getCustomUserURL($username, $userId, $salt) { $hash = crypt($userId, $salt); if (is_null($hash)) { throw new Exception('crypt() failed'); } return sprintf( '%s%s%s', $this->url, false === strpos($this->url, '?') ? '?' : '&', http_build_query( [ 'username' => $username, 'hash' => $hash, ] ) ); } }