1010
1111class PackageApplicationRepository
1212{
13- /**
14- * @var RepositoryInterface
15- */
16- private $ installedRepository ;
17-
18- /**
19- * @var InstallationManager
20- */
21- private $ installationManager ;
22-
23- /**
24- * @var PathResolver
25- */
26- private $ pathResolver ;
27-
28- /**
29- * @var LoggerInterface
30- */
31- private $ logger ;
32-
33- /**
34- * @param RepositoryInterface $installedRepository
35- * @param InstallationManager $installationManager
36- * @param PathResolver $pathResolver
37- * @param LoggerInterface $logger
38- */
3913 public function __construct (
40- RepositoryInterface $ installedRepository ,
41- InstallationManager $ installationManager ,
42- PathResolver $ pathResolver ,
43- LoggerInterface $ logger
44- ) {
45- $ this ->installedRepository = $ installedRepository ;
46- $ this ->installationManager = $ installationManager ;
47- $ this ->pathResolver = $ pathResolver ;
48- $ this ->logger = $ logger ;
49- }
14+ private RepositoryInterface $ installedRepository ,
15+ private InstallationManager $ installationManager ,
16+ private PathResolver $ pathResolver ,
17+ private LoggerInterface $ logger
18+ ) {}
5019
5120 /**
5221 * @return PackagePatchApplication[]
@@ -70,6 +39,7 @@ public function getPackageApplications()
7039
7140 /**
7241 * @param PackageInterface $targetPackage
42+ *
7343 * @return PackagePatchApplication
7444 */
7545 public function getPackageApplication (PackageInterface $ targetPackage )
@@ -105,39 +75,50 @@ public function savePackageApplication(PackagePatchApplication $packagePatchAppl
10575 throw new \RuntimeException (sprintf ('Package directory is not writable "%s" ' , dirname ($ dataFile )));
10676 }
10777
108- file_put_contents ($ dataFile ,
78+ file_put_contents (
79+ $ dataFile ,
10980 $ this ->encodeData ($ this ->transformPackagePatchApplicationToArray ($ packagePatchApplication ))
11081 );
11182 }
11283
11384 /**
11485 * @param array $data
86+ *
11587 * @return string
11688 */
11789 private function encodeData (array $ data )
11890 {
119- return json_encode ($ data ,
91+ return json_encode (
92+ $ data ,
12093 JSON_PRETTY_PRINT + JSON_UNESCAPED_SLASHES + JSON_UNESCAPED_UNICODE
12194 );
12295 }
12396
12497 /**
12598 * @param PackageInterface $targetPackage
12699 * @param array $data
100+ *
127101 * @return PackagePatchApplication
128102 */
129- private function createPackagePatchApplication (PackageInterface $ targetPackage , array $ data )
103+ private function createPackagePatchApplication (PackageInterface $ targetPackage , array $ data ): PackagePatchApplication
130104 {
131- return new PackagePatchApplication ($ targetPackage ,
132- array_map ([$ this , 'createPatchApplication ' ], $ data ['patches ' ])
105+ $ applications = [];
106+
107+ foreach ($ data ['patches ' ] as $ patchData ) {
108+ $ patchApplication = $ this ->createPatchApplication ($ patchData );
109+
110+ if ($ patchApplication ) {
111+ $ applications [] = $ patchApplication ;
112+ }
113+ }
114+
115+ return new PackagePatchApplication (
116+ $ targetPackage ,
117+ $ applications
133118 );
134119 }
135120
136- /**
137- * @param array $data
138- * @return PatchApplication
139- */
140- private function createPatchApplication (array $ data )
121+ private function createPatchApplication (array $ data ): ?PatchApplication
141122 {
142123 $ patch = Patch::createFromArray ($ data ['patch ' ]);
143124
@@ -147,10 +128,15 @@ private function createPatchApplication(array $data)
147128 );
148129
149130 if (!$ sourcePackage ) {
150- $ this ->logger ->debug (sprintf ('Could not find source package %s (%s) for installed patch, it was removed probably ' ,
151- $ data ['source_package ' ]['name ' ],
152- $ data ['source_package ' ]['version ' ]
153- ));
131+ $ this ->logger ->debug (
132+ sprintf (
133+ 'Could not find source package %s (%s) for installed patch, it was removed probably ' ,
134+ $ data ['source_package ' ]['name ' ],
135+ $ data ['source_package ' ]['version ' ]
136+ )
137+ );
138+
139+ return null ;
154140 }
155141
156142 $ targetPackage = $ this ->installedRepository ->findPackage (
@@ -159,35 +145,30 @@ private function createPatchApplication(array $data)
159145 );
160146
161147 if (!$ targetPackage ) {
162- throw new \RuntimeException (sprintf ('Could not find target package %s (%s) for installed patch ' ,
163- $ data ['target_package ' ]['name ' ],
164- $ data ['target_package ' ]['version ' ]
165- ));
148+ throw new \RuntimeException (
149+ sprintf (
150+ 'Could not find target package %s (%s) for installed patch ' ,
151+ $ data ['target_package ' ]['name ' ],
152+ $ data ['target_package ' ]['version ' ]
153+ )
154+ );
166155 }
167156
168157 return new PatchApplication ($ patch , $ sourcePackage , $ targetPackage , $ data ['hash ' ]);
169158 }
170159
171- /**
172- * @param PackagePatchApplication $packageApplication
173- * @return array
174- */
175- public function transformPackagePatchApplicationToArray (PackagePatchApplication $ packageApplication )
160+ public function transformPackagePatchApplicationToArray (PackagePatchApplication $ packageApplication ): array
176161 {
177162 return [
178163 'hash ' => $ packageApplication ->getHash (),
179164 'patches ' => array_map (
180165 [$ this , 'transformPatchApplicationToArray ' ],
181166 $ packageApplication ->getApplications ()
182- )
167+ ),
183168 ];
184169 }
185170
186- /**
187- * @param PatchApplication $application
188- * @return array
189- */
190- public function transformPatchApplicationToArray (PatchApplication $ application )
171+ public function transformPatchApplicationToArray (PatchApplication $ application ): array
191172 {
192173 return [
193174 'hash ' => $ application ->getHash (),
@@ -201,7 +182,7 @@ public function transformPatchApplicationToArray(PatchApplication $application)
201182 'version ' => $ application ->getSourcePackage ()->getVersion (),
202183 'ref ' => $ application ->getSourcePackage ()->getSourceReference (),
203184 ],
204- 'patch ' => $ application ->getPatch ()->toArray ()
185+ 'patch ' => $ application ->getPatch ()->toArray (),
205186 ];
206187 }
207- }
188+ }
0 commit comments