Post #80
610

Первый, кто поставит звезду на репозиторий https://github.com/bitrix24/b24phpsdk и пришлет скрин в комментарий к посту получит бесплатную проходку
BI @bitrix24phpsdk

Install now distinguishes one-step installs with applicationToken from UI/two-step installs without tokenOnAppInstall is now the canonical finish-step for pending installations created without a tokenONAPPINSTALL events for already active installations are handled as warning no-op callsBitrix24\Lib\Bitrix24Accounts\ValueObjects\Domain moved to Bitrix24\Lib\Common\ValueObjects\Domain.mcp.jsonMakefile entrypoints for tests and linters in README.md and AGENTS.mdapplication_installation -> b24lib_application_installationsapplication_settings -> b24lib_application_settingsbitrix24account -> b24lib_bitrix24_accountscontact_person -> b24lib_contact_personsBitrix24Account and ApplicationInstallation no longer switch to active when Install is called without applicationTokenApplicationInstallations\UseCase\InstallContactPerson\Command / Handler to create and link a ContactPerson to an ApplicationInstallationApplicationInstallations\UseCase\UnlinkContactPerson\Command / Handler to unlink a contact person from an installationContactPersons\UseCase\ChangeProfile\Command / Handler to update FullName, email, and mobile phoneContactPersons\UseCase\MarkEmailAsVerified\Command / Handler to confirm email ownershipContactPersons\UseCase\MarkMobilePhoneAsVerified\Command / Handler to confirm mobile phone ownershippartner`) in `Bitrix24\Lib\ContactPersons\Enum$createdAt / $updatedAt parameters so SDK contract tests can assert stable timestamps$isEmailVerified and $isMobilePhoneVerified are initialized from $emailVerifiedAt / $mobilePhoneVerifiedAt in constructorgetBitrix24UserId() return type narrowed from ?int to int to match ContactPersonInterfacemarkAsDeleted() now throws InvalidArgumentException (was `LogicException`) to satisfy the SDK contractunlinkContactPerson() and unlinkBitrix24PartnerContactPerson() now return early when the respective ID is already null to avoid unnecessary updatedAt mutationApplicationInstallationNotFoundException when installation cannot be found by member ID (instead of silent no-op)createContactPersonImplementation() signatures in ContactPersonTest and ContactPersonRepositoryTest (`int $bitrix24UserId` moved to position 5 and made non-nullable)ContactPersonBuilder::$bitrix24UserId from ?int to int
- Core\Contracts\ApiVersion
- Core\EndpointUrlFormatter - Services\Task\Service\Task
- Services\Task\Service\TaskChat
- Services\Task\Service\TaskFile
- Services\Main\Service\Documentation - Services\Lists\Lists\Service\Lists
- Services\Lists\Field\Service\Field
- Services\Lists\Section\Service\Section
- Services\Lists\Element\Service\Element
- Services\Landing\Site\Service\Site
- Services\Landing\SysPage\Service\SysPage
- Services\Landing\Role\Service\Role
- Services\Landing\Page\Service\Page
- Services\Landing\Block\Service\Block
- Services\Landing\Template\Service\Template
- Services\Landing\Repo\Service\Repo
- Services\Landing\Demos\Service\Demos
- Services\IMOpenLines\Connector\Service\Connector
- Services\IMOpenLines\Config\Service\Config
- Services\IMOpenLines\CRMChat\Service\Chat
- Services\IMOpenLines\Message\Service\Message
- Services\IMOpenLines\Bot\Service\Bot
- Services\IMOpenLines\Operator\Service\Operator
- Services\IMOpenLines\Session\Service\Session
- Services\SonetGroup\Service\SonetGroup

Services\IMOpenLines\Config\Service\ConfigServices\IMOpenLines\CRMChat\Service\Chat Services\IMOpenLines\Message\Service\Message Services\IMOpenLines\Bot\Service\Bot Services\IMOpenLines\Operator\Service\Operator Services\IMOpenLines\Session\Service\Session Services\SonetGroup\Service\SonetGroupServices\IMOpenLines\Connector\Service\Connector
Bitrix24 API-methods count: 1165
Supported in bitrix24-php-sdk methods count: 697
Coverage percentage: 59.83% 🚀
Supported in bitrix24-php-sdk methods with batch wrapper count: 91
Я хочу собрать обратную связь от комьюнити PHP-разработчиков.
$deals->getList(
[
["status", "=", "NEW"],
["id", "in", [3,4,5]]
]
);
Накидал требований, которые описывают мои ожидания от фильтра, если вы уже повидали некоторое дерьмо, то расскажите, пожалуйста, о своем опыте.
$deals->getList(
new DealFilter()
->title('OpenAI')
->price(100500)
);
$task->getList(
new TaskFilter()
->title('ASAP')
->withUserField('UF_CRM_1234567890','danger')
);
$deals->getList(
new DealFilter()
->title()->eq('ASAP')
->id()->in([1,2,3]
);
$deals->getList(
new DealFilter()
->status()->eq('NEW')
->or(function (DealFilter $f) {
$f->id()->in([1, 2]);
$f->stageId()->eq('WON');
$f->userField('UF_CRM_1700000000')->eq('yes');
})
);
$deals->getList(
new DealFilter()
->withRaw(
[
["status", "=", "NEW"],
["id", "in", [3,4,5]]
]
)
);
Bitrix24 API-methods count: 1165
Supported in bitrix24-php-sdk methods count: 640
Coverage percentage: 54.94% 🚀


Services\CRM\Type\Service\TypeAbstractCrmItem added method getSmartProcessItem to get smart process itemRemoteEventsFactory::create and RemoteEventsFactory::validate for create and validate incomingRemoteEventsFactory::create and RemoteEventsFactory::validate methods ContactPersonInterface implementationUTMs UserAgentInfoEndpointsContactPersonInterface method signatures:changeEmail(?string $email) - removed second parameter ?bool $isEmailVerified. Migration path: call markEmailAsVerified() separately after changeEmail() if email needs to be verifiedchangeMobilePhone(?PhoneNumber $phoneNumber) - removed second parameter ?bool $isMobilePhoneVerified. Migration path: call markMobilePhoneAsVerified() separately after changeMobilePhone() if phone needs to be verifiedgetUserAgent(), getUserAgentReferer(), getUserAgentIp() methods with single getUserAgentInfo(): UserAgentInfo method that returns complete user agent information object. Migration path: use $info->userAgent, $info->referrer, $info->ip properties insteadRemoteEventsFactory::validate() method signature from validate(EventInterface $event, string $applicationToken) tovalidate(Bitrix24AccountInterface $bitrix24Account, EventInterface $event).ItemsResultcrm.item.get, now it ItemNotFoundExceptionproject in enum PortalLicenseFamilyContactPersonRepositoryInterfaceTest Credentials::createFromOAuth() - third parameter changed from string $domainUrl to Endpoints $endpointsCredentials::createFromOAuth($authToken, $appProfile, 'https://example.com') with Credentials::createFromOAuth($authToken, $appProfile, new Endpoints('https://example.com', 'https://oauth.bitrix.info/'))Endpoints class constructor CredentialsTest.php to properly instantiate Endpoints objectsCoreTest.php integration test to use Endpoints objectRemoteEventsFactory::createEvent marked as deprecated, use RemoteEventsFactory::create and RemoteEventsFactory::validate insteadBitrix24 API-methods count: 1162
Supported in bitrix24-php-sdk methods count: 639
Coverage percentage: 54.99% 🚀
Supported in bitrix24-php-sdk methods with batch wrapper count: 91
OnCalendarSectionAddOnCalendarSectionUpdateOnCalendarSectionDelete
Bitrix24 API-methods count: 1162
Supported in bitrix24-php-sdk methods count: 632
Coverage percentage: 54.39% 🚀