All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
3.0.1 (2026-06-30)
- encrypt classic Votifier packets with PKCS#1 v1.5 padding (ef4600b)
- include the underlying reason and host when a connection can't be opened (4aee88d), closes #4
- support PHP 7.1 through 8.5 (95bd6dd)
- time out and report when a server sends no response (27bbfb8), closes #5
- overhaul the Sphinx documentation (919905f)
3.0.0 (2020-10-26)
-
Namespace changed from
D3strukt0r\VotifierClienttoD3strukt0r\Votifier\Client. Update everyusestatement. -
Classes were moved and renamed:
ServerType\ClassicVotifier→Server\VotifierServerType\NuVotifier→Server\NuVotifierServerType\ServerTypeInterface→Server\ServerInterfaceVoteType\ClassicVote→Vote\ClassicVoteVoteType\VoteInterface→Vote\VoteInterfaceServerConnection→Socket(internal), and theMessagesclass was removed.
-
Construction is now a fluent builder (no more positional constructors), and you send on the server object directly — the
Votewrapper class is gone.sendVote()is variadic, so several votes can be sent at once:// before (2.x) $serverType = new ClassicVotifier('127.0.0.1', null, $publicKey); $voteType = new ClassicVote($username, 'Your vote list', $ip); (new Vote($voteType, $serverType))->send(); // after (3.0.0) use D3strukt0r\Votifier\Client\Server\Votifier; use D3strukt0r\Votifier\Client\Vote\ClassicVote; $server = (new Votifier())->setHost('127.0.0.1')->setPublicKey($publicKey); // ->setPort() optional, defaults to 8192 $vote = (new ClassicVote())->setUsername($username)->setServiceName('Your vote list')->setAddress($ip); $server->sendVote($vote);
For NuVotifier v2:
(new NuVotifier())->setHost('127.0.0.1')->setProtocolV2(true)->setToken('...'). -
Failures now throw dedicated typed exceptions instead of a generic
\Exception. Catch what you need:Exception\NotVotifierException; the NuVotifier familyException\NuVotifierChallengeInvalidException,Exception\NuVotifierSignatureInvalidException,Exception\NuVotifierUnknownServiceException,Exception\NuVotifierUsernameTooLongException; and the transport-levelException\Socket\NoConnectionException,Exception\Socket\PackageNotSentException,Exception\Socket\PackageNotReceivedException. A missing required field throws\InvalidArgumentException. -
verifyConnection()is available on a server to check reachability before sending.
- redesign Vote/Server API and rename to D3strukt0r\Votifier\Client (2978a21)
- reorganize Server, Vote and Exception class layout (224a1e8)
- adopt PSR-12 and add dedicated exception classes (9743475)
2.1.2 (2020-08-31)
- migrate CI from Travis CI to GitHub Actions and fix coverage reporting (67165e1)
2.1.1 (2020-04-25)
- use correct NuVotifier server-error message and default language to null (dfdf118)
- migrate documentation from README to Sphinx (c04368e)
2.1.0 (2020-03-09)
- resolve socket connection bugs and add PHP_CodeSniffer (df15ece)
- rename LICENSE.md to LICENSE.txt (0a47e31)
- drop deprecated PHP versions and add type declarations (a33754a)
2.0.0 (2018-04-24)
-
Namespace changed from
Votifier\ClienttoD3strukt0r\VotifierClient(withServerType\andVoteType\sub-namespaces). Update everyusestatement. -
The single
Voteclass with a six-argument constructor was removed. You now compose a server type, a vote type and aVotewrapper, then callsend():// before (1.x) use Votifier\Client\Vote; (new Vote('127.0.0.1', 8192, $publicKey, $username, 'My list', $ip))->send(); // after (2.0.0) use D3strukt0r\VotifierClient\ServerType\ClassicVotifier; use D3strukt0r\VotifierClient\VoteType\ClassicVote; use D3strukt0r\VotifierClient\Vote; $serverType = new ClassicVotifier('127.0.0.1', null, $publicKey); // null port defaults to 8192 $voteType = new ClassicVote($username, 'My list', $ip); (new Vote($voteType, $serverType))->send();
-
NuVotifier is now supported via
ServerType\NuVotifier($host, $port, $publicKey, $protocolV2 = false, $token = null)— passtrueand a token for the v2 protocol. -
Sending still throws a generic
\Exceptionon failure (typed exceptions arrive in 3.0.0).
1.0.0 (2018-04-22)
- refine the Composer configuration and project files (923994f)
- rename the license to LICENSE.md and stop tracking IDE project files (90f3012)
- add Votifier client and convert to a Composer package (2c59024)