Completed
Push — master ( 11a0f2...1d683d )
by Karl
10s
created

JobFilter::filterFields()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 9
Code Lines 6

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 5
CRAP Score 2

Importance

Changes 0
Metric Value
dl 0
loc 9
ccs 5
cts 5
cp 1
rs 9.6666
c 0
b 0
f 0
cc 2
eloc 6
nc 2
nop 2
crap 2
1
<?php namespace JobApis\JobsToMail\Filters;
2
3
class JobFilter
4
{
5
    /**
6
     * Returns an array of jobs each with only the attributes specified
7
     *
8
     * @param array $jobs
9
     * @param array $fields
10
     *
11
     * @return array
12
     */
13 1
    public function filterFields($jobs = [], $fields = [])
14
    {
15 1
        foreach ($jobs as &$job) {
16
            $job = array_filter($job, function ($key) use ($fields) {
17 1
                return in_array($key, $fields);
18 1
            }, ARRAY_FILTER_USE_KEY);
19
        }
20 1
        return $jobs;
21
    }
22
23
    /**
24
     * Sort jobs by date posted, desc
25
     *
26
     * @param array $jobs
27
     *
28
     * @return array
29
     */
30 2
    public function sort($jobs = [], $maxAge = 14, $maxJobs = 50)
31
    {
32
        // Sort by date
33
        usort($jobs, function ($item1, $item2) {
34 2
            return $item2->datePosted <=> $item1->datePosted;
35 2
        });
36
        // Filter any older than max age
37 2
        $jobs = array_filter($jobs, function ($job) use ($maxAge) {
38 2
            return $job->datePosted > new \DateTime($maxAge.' days ago');
39 2
        });
40
        // Truncate to the max number of results
41 2
        return array_slice($jobs, 0, $maxJobs);
42
    }
43
}
44