@@ -156,20 +156,17 @@ public static function fromBotAPI(string $fileId): self
156156 if ($ typeId <= FileIdType::PHOTO ->toInnerID ()) {
157157 if ($ subVersion < 32 ) {
158158 $ volume_id = Tools::unpackLong ($ read (8 ));
159- $ local_id = Tools::unpackInt ($ read (4 ));
160159 }
161160
162161 /** @var int */
163- $ arg = $ subVersion >= 4 ? \unpack ('V ' , $ read (4 ))[1 ] : 0 ;
162+ $ arg = $ subVersion >= 22 ? \unpack ('V ' , $ read (4 ))[1 ] : 0 ;
164163 $ photosize_source = PhotoSizeSourceType::from ($ arg );
165164 switch ($ photosize_source ) {
166165 case PhotoSizeSourceType::LEGACY :
167166 $ photoSizeSource = new PhotoSizeSourceLegacy (Tools::unpackLong ($ read (8 )));
168167 break ;
169168 case PhotoSizeSourceType::FULL_LEGACY :
170- $ volume_id = Tools::unpackLong ($ read (8 ));
171169 $ photoSizeSource = new PhotoSizeSourceLegacy (Tools::unpackLong ($ read (8 )));
172- $ local_id = Tools::unpackInt ($ read (4 ));
173170 break ;
174171 case PhotoSizeSourceType::THUMBNAIL :
175172 /** @var array{file_type: int, thumbnail_type: string} */
@@ -205,17 +202,13 @@ public static function fromBotAPI(string $fileId): self
205202 Tools::unpackLong ($ read (8 ))
206203 );
207204
208- $ volume_id = Tools::unpackLong ($ read (8 ));
209- $ local_id = Tools::unpackInt ($ read (4 ));
210205 break ;
211206 case PhotoSizeSourceType::STICKERSET_THUMBNAIL_LEGACY :
212207 $ photoSizeSource = new PhotoSizeSourceStickersetThumbnail (
213208 Tools::unpackLong ($ read (8 )),
214209 Tools::unpackLong ($ read (8 )),
215210 );
216211
217- $ volume_id = Tools::unpackLong ($ read (8 ));
218- $ local_id = Tools::unpackInt ($ read (4 ));
219212 break ;
220213 case PhotoSizeSourceType::STICKERSET_THUMBNAIL_VERSION :
221214 $ photoSizeSource = new PhotoSizeSourceStickersetThumbnailVersion (
@@ -225,6 +218,9 @@ public static function fromBotAPI(string $fileId): self
225218 );
226219 break ;
227220 }
221+ if ($ photosize_source === PhotoSizeSourceType::FULL_LEGACY || ($ subVersion >= 22 && $ subVersion < 32 )) {
222+ $ local_id = Tools::unpackInt ($ read (4 ));
223+ }
228224 }
229225 $ l = \fstat ($ fileId )['size ' ] - \ftell ($ fileId );
230226 $ l -= $ version >= 4 ? 2 : 1 ;
@@ -276,54 +272,56 @@ public function getBotAPI(): string
276272
277273 if ($ this ->photoSizeSource !== null ) {
278274 $ photoSize = $ this ->photoSizeSource ;
279- $ writeExtra = false ;
275+ if ($ this ->subVersion < 32 ) {
276+ $ fileId .= Tools::packLong ($ this ->volumeId );
277+ }
278+
280279 switch (true ) {
281280 case $ photoSize instanceof PhotoSizeSourceLegacy:
282- if ($ this ->volumeId === null ) {
283- $ writeExtra = true ;
284- $ fileId .= \pack ('V ' , PhotoSizeSourceType::LEGACY ->value );
285- $ fileId .= Tools::packLong ($ photoSize ->secret );
286- } else {
287- $ fileId .= \pack ('V ' , PhotoSizeSourceType::FULL_LEGACY ->value );
288- $ fileId .= Tools::packLong ($ this ->volumeId );
289- $ fileId .= Tools::packLong ($ photoSize ->secret );
290- $ fileId .= \pack ('l ' , $ this ->localId );
291- }
281+ $ fileId .= Tools::packLong ($ photoSize ->secret );
292282 break ;
293283 case $ photoSize instanceof PhotoSizeSourceThumbnail:
294- $ fileId .= \pack ('V ' , PhotoSizeSourceType::THUMBNAIL ->value );
284+ if ($ this ->subVersion >= 22 ) {
285+ $ fileId .= \pack ('V ' , PhotoSizeSourceType::THUMBNAIL ->value );
286+ }
295287 $ fileId .= \pack ('Va4 ' , $ photoSize ->thumbFileType ->toInnerID (), $ photoSize ->thumbType );
296288 break ;
297289 case $ photoSize instanceof PhotoSizeSourceDialogPhoto:
298- $ fileId .= \pack (
299- 'V ' ,
300- ($ writeExtra = $ this ->volumeId !== null ) ?
301- (
302- $ photoSize ->isSmallDialogPhoto ()
303- ? PhotoSizeSourceType::DIALOGPHOTO_SMALL_LEGACY ->value
304- : PhotoSizeSourceType::DIALOGPHOTO_BIG_LEGACY ->value
305- ) : (
306- $ photoSize ->isSmallDialogPhoto ()
307- ? PhotoSizeSourceType::DIALOGPHOTO_SMALL ->value
308- : PhotoSizeSourceType::DIALOGPHOTO_BIG ->value
309- )
310- );
290+ if ($ this ->subVersion >= 22 ) {
291+ $ fileId .= \pack (
292+ 'V ' ,
293+ $ this ->volumeId !== null ?
294+ (
295+ $ photoSize ->isSmallDialogPhoto ()
296+ ? PhotoSizeSourceType::DIALOGPHOTO_SMALL_LEGACY ->value
297+ : PhotoSizeSourceType::DIALOGPHOTO_BIG_LEGACY ->value
298+ ) : (
299+ $ photoSize ->isSmallDialogPhoto ()
300+ ? PhotoSizeSourceType::DIALOGPHOTO_SMALL ->value
301+ : PhotoSizeSourceType::DIALOGPHOTO_BIG ->value
302+ )
303+ );
304+ }
311305 $ fileId .= Tools::packLong ($ photoSize ->dialogId );
312306 $ fileId .= Tools::packLong ($ photoSize ->dialogAccessHash );
313307 break ;
314308 case $ photoSize instanceof PhotoSizeSourceStickersetThumbnail:
315- $ writeExtra = $ this ->volumeId !== null ;
309+ if ($ this ->subVersion >= 22 ) {
310+ $ fileId .= \pack ('V ' , PhotoSizeSourceType::STICKERSET_THUMBNAIL ->value );
311+ }
316312 $ fileId .= Tools::packLong ($ photoSize ->stickerSetId );
317313 $ fileId .= Tools::packLong ($ photoSize ->stickerSetAccessHash );
318314 break ;
319315 case $ photoSize instanceof PhotoSizeSourceStickersetThumbnailVersion:
316+ if ($ this ->subVersion >= 22 ) {
317+ $ fileId .= \pack ('V ' , PhotoSizeSourceType::STICKERSET_THUMBNAIL_VERSION ->value );
318+ }
320319 $ fileId .= Tools::packLong ($ photoSize ->stickerSetId );
321320 $ fileId .= Tools::packLong ($ photoSize ->stickerSetAccessHash );
322321 $ fileId .= \pack ('l ' , $ photoSize ->stickerSetVersion );
323322 break ;
324323 }
325- if ($ writeExtra && $ this ->volumeId !== null && $ this ->localId !== null ) {
326- $ fileId .= Tools::packLong ($ this ->volumeId );
324+ if ($ this ->localId !== null ) {
327325 $ fileId .= \pack ('l ' , $ this ->localId );
328326 }
329327 }
0 commit comments