Extract   A
last analyzed

Complexity

Total Complexity 9

Size/Duplication

Total Lines 72
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 1

Importance

Changes 0
Metric Value
wmc 9
lcom 1
cbo 1
dl 0
loc 72
rs 10
c 0
b 0
f 0

2 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 4 1
C process() 0 42 8
1
<?php
2
3
/**
4
 * @package Skeleton module
5
 * @author Iurii Makukh <[email protected]>
6
 * @copyright Copyright (c) 2015, Iurii Makukh
7
 * @license https://www.gnu.org/licenses/gpl.html GNU/GPLv3
8
 */
9
10
namespace gplcart\modules\skeleton\handlers;
11
12
use Exception;
13
use gplcart\modules\skeleton\models\Extractor;
14
15
class Extract
16
{
17
18
    /**
19
     * Max files to parse for one iteration
20
     */
21
    const LIMIT = 10;
22
23
    /**
24
     * Skeleton model instance
25
     * @var \gplcart\modules\skeleton\models\Extractor $extractor
26
     */
27
    protected $extractor;
28
29
    /**
30
     * Extract constructor.
31
     * @param Extractor $extractor
32
     */
33
    public function __construct(Extractor $extractor)
34
    {
35
        $this->extractor = $extractor;
36
    }
37
38
    /**
39
     * Processes one extration job iteration
40
     * @param array $job
41
     * @return null
42
     */
43
    public function process(array &$job)
44
    {
45
        if (!isset($job['context']['extracted'])) {
46
            $job['context']['extracted'] = array();
47
        }
48
49
        if (!isset($job['context']['errors'])) {
50
            $job['context']['errors'] = array();
51
        }
52
53
        $options = array(
54
            'directory' => GC_DIR_CORE,
55
            'limit' => array($job['context']['offset'], self::LIMIT),
56
            'scopes' => empty($job['data']['submitted']['hooks']) ? array() : $job['data']['submitted']['hooks']
57
        );
58
59
        try {
60
            $extracted = $this->extractor->getHooks($options);
61
        } catch (Exception $ex) {
62
            $job['context']['errors'] = array($ex->getMessage());
63
            $job['status'] = false;
64
            return null;
65
        }
66
67
        if (empty($extracted['files'])) {
68
            $job['status'] = false;
69
            $job['done'] = $job['total'];
70
            return null;
71
        }
72
73
        if (!empty($extracted['success'])) {
74
            $job['context']['extracted'] = array_replace($job['context']['extracted'], $extracted['success']);
75
        }
76
77
        if (!empty($extracted['errors'])) {
78
            $job['errors'] += count($extracted['errors']);
79
            $job['context']['errors'] += $extracted['errors'];
80
        }
81
82
        $job['context']['offset'] += count($extracted['files']);
83
        $job['done'] = $job['context']['offset'];
84
    }
85
86
}
87