ZipCompressor::compress()   A
last analyzed

Complexity

Conditions 4
Paths 6

Size

Total Lines 14

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 6
CRAP Score 4.0466

Importance

Changes 0
Metric Value
dl 0
loc 14
ccs 6
cts 7
cp 0.8571
rs 9.7998
c 0
b 0
f 0
cc 4
nc 6
nop 2
crap 4.0466
1
<?php
2
/**
3
 * GpsLab component.
4
 *
5
 * @author    Peter Gribanov <[email protected]>
6
 * @copyright Copyright (c) 2011, Peter Gribanov
7
 * @license   http://opensource.org/licenses/MIT
8
 */
9
10
namespace GpsLab\Component\Compressor;
11
12
class ZipCompressor implements CompressorInterface
13
{
14
    /**
15
     * @var \ZipArchive
16
     */
17
    protected $zip;
18
19
    /**
20
     * @param \ZipArchive $zip
21
     */
22 3
    public function __construct(\ZipArchive $zip)
23
    {
24 3
        $this->zip = $zip;
25 3
    }
26
27
    /**
28
     * @param string $source
29
     * @param string $target
30
     *
31
     * @return bool
32
     */
33 2
    public function compress($source, $target = '')
34
    {
35 2
        $target = $target ?: $source.'.zip';
36
37 2
        if (false === $this->zip->open($target, \ZipArchive::OVERWRITE | \ZipArchive::CREATE)) {
38
            return false;
39
        }
40
41 2
        if (false === @$this->zip->addFile($source, basename($source))) {
42 1
            return false;
43
        }
44
45 1
        return $this->zip->close();
46
    }
47
48
    /**
49
     * @param string $source
50
     * @param string $target
51
     *
52
     * @return bool
53
     */
54 2
    public function uncompress($source, $target)
55
    {
56 2
        if (false === $this->zip->open($source, \ZipArchive::CHECKCONS)) {
57
            return false;
58
        }
59
60 2
        if (false === @$this->zip->extractTo(dirname($target), basename($target))) {
61 1
            return false;
62
        }
63
64 1
        return $this->zip->close();
65
    }
66
}
67