18
18
use Passbook \Certificate \WWDR ;
19
19
use Passbook \Exception \FileException ;
20
20
use JMS \Serializer \SerializerBuilder ;
21
- use Symfony \Component \Filesystem \Filesystem ;
22
21
23
22
/**
24
23
* PassFactory - Creates .pkpass files
@@ -71,15 +70,9 @@ class PassFactory
71
70
72
71
/**
73
72
* Pass file extension
74
- * @var array
75
- */
76
- private $ passExtension = '.pkpass ' ;
77
-
78
- /**
79
- * Symfony filesystem component
80
- * @var Symfony\Component\Filesystem\Filesystem
73
+ * @var string
81
74
*/
82
- private $ filesystem ;
75
+ const PASS_EXTENSION = ' .pkpass ' ;
83
76
84
77
public function __construct ($ passTypeIdentifier , $ teamIdentifier , $ organizationName , $ p12File , $ p12Pass , $ wwdrFile )
85
78
{
@@ -90,8 +83,6 @@ public function __construct($passTypeIdentifier, $teamIdentifier, $organizationN
90
83
// Create certificate objects
91
84
$ this ->p12 = new P12 ($ p12File , $ p12Pass );
92
85
$ this ->wwdr = new WWDR ($ wwdrFile );
93
- // Filesystem
94
- $ this ->filesystem = new Filesystem ();
95
86
}
96
87
97
88
/**
@@ -203,7 +194,7 @@ public function package(PassInterface $pass)
203
194
}
204
195
205
196
// Zip pass
206
- $ zipFile = $ outputPath . $ pass ->getSerialNumber () . $ this -> passExtension ;
197
+ $ zipFile = $ outputPath . $ pass ->getSerialNumber () . self :: PASS_EXTENSION ;
207
198
$ zip = new ZipArchive ();
208
199
if (!$ zip ->open ($ zipFile , $ this ->override ? ZIPARCHIVE ::OVERWRITE : ZipArchive::CREATE )) throw new FileException ("Couldn't open zip file. " );
209
200
if ($ handle = opendir ($ passDir )) {
@@ -217,8 +208,21 @@ public function package(PassInterface $pass)
217
208
throw new FileException ("Error reading pass directory " );
218
209
}
219
210
$ zip ->close ();
220
- // Clean temporary pass directory
221
- $ this ->filesystem -> remove ($ passDir );
211
+ // Remove temporary pass directory
212
+ $ this ->rrmdir ($ passDir );
222
213
return new SplFileObject ($ zipFile );
223
214
}
215
+
216
+ /**
217
+ * Recursive folder remove
218
+ *
219
+ * @param string $dir
220
+ */
221
+ private function rrmdir ($ dir ) {
222
+ $ files = array_diff (scandir ($ dir ), array ('. ' , '.. ' ));
223
+ foreach ($ files as $ file ) {
224
+ is_dir ("$ dir/ $ file " ) ? $ this ->rrmdir ("$ dir/ $ file " ) : unlink ("$ dir/ $ file " );
225
+ }
226
+ return rmdir ($ dir );
227
+ }
224
228
}
0 commit comments