@@ -387,6 +387,7 @@ private function loadLibreSignSigners(): void {
387387 $ this ->fileData ->signers [$ index ]['me ' ] = false ;
388388 $ this ->fileData ->signers [$ index ]['signRequestId ' ] = $ signer ->getId ();
389389 $ this ->fileData ->signers [$ index ]['description ' ] = $ signer ->getDescription ();
390+ $ this ->fileData ->signers [$ index ]['signingOrder ' ] = $ signer ->getSigningOrder ();
390391 $ this ->fileData ->signers [$ index ]['visibleElements ' ] = $ this ->getVisibleElements ($ signer ->getId ());
391392 $ this ->fileData ->signers [$ index ]['request_sign_date ' ] = $ signer ->getCreatedAt ()->format (DateTimeInterface::ATOM );
392393 if (empty ($ this ->fileData ->signers [$ index ]['signed ' ])) {
@@ -468,6 +469,18 @@ private function loadLibreSignSigners(): void {
468469 }, []);
469470 ksort ($ this ->fileData ->signers [$ index ]);
470471 }
472+
473+ usort ($ this ->fileData ->signers , function ($ a , $ b ) {
474+ $ orderA = $ a ['signingOrder ' ] ?? PHP_INT_MAX ;
475+ $ orderB = $ b ['signingOrder ' ] ?? PHP_INT_MAX ;
476+
477+ if ($ orderA !== $ orderB ) {
478+ return $ orderA <=> $ orderB ;
479+ }
480+
481+ return strcasecmp ($ a ['displayName ' ], $ b ['displayName ' ]);
482+ });
483+
471484 $ this ->signersLibreSignLoaded = true ;
472485 }
473486
@@ -821,6 +834,7 @@ private function associateAllAndFormat(IUser $user, array $files, array $signers
821834 'request_sign_date ' => $ signer ->getCreatedAt ()->format (DateTimeInterface::ATOM ),
822835 'signed ' => null ,
823836 'signRequestId ' => $ signer ->getId (),
837+ 'signingOrder ' => $ signer ->getSigningOrder (),
824838 'me ' => array_reduce ($ identifyMethodsOfSigner , function (bool $ carry , IdentifyMethod $ identifyMethod ) use ($ user ): bool {
825839 if ($ identifyMethod ->getIdentifierKey () === IdentifyMethodService::IDENTIFY_ACCOUNT ) {
826840 if ($ user ->getUID () === $ identifyMethod ->getIdentifierValue ()) {
@@ -888,6 +902,17 @@ private function associateAllAndFormat(IUser $user, array $files, array $signers
888902 $ files [$ key ]['signers ' ] = [];
889903 $ files [$ key ]['statusText ' ] = $ this ->l10n ->t ('no signers ' );
890904 } else {
905+ usort ($ files [$ key ]['signers ' ], function ($ a , $ b ) {
906+ $ orderA = $ a ['signingOrder ' ] ?? PHP_INT_MAX ;
907+ $ orderB = $ b ['signingOrder ' ] ?? PHP_INT_MAX ;
908+
909+ if ($ orderA !== $ orderB ) {
910+ return $ orderA <=> $ orderB ;
911+ }
912+
913+ return strcasecmp ($ a ['displayName ' ], $ b ['displayName ' ]);
914+ });
915+
891916 $ files [$ key ]['statusText ' ] = $ this ->fileMapper ->getTextOfStatus ((int )$ files [$ key ]['status ' ]);
892917 }
893918 unset($ files [$ key ]['id ' ]);
0 commit comments