GitHub Access Token became invalid

It seems like the GitHub access token used for retrieving details about this repository from GitHub became invalid. This might prevent certain types of inspections from being run (in particular, everything related to pull requests).
Please ask an admin of your repository to re-new the access token on this website.
Completed
Push — master ( eeec88...a15255 )
by Bob Olde
10s
created

PaymentCurrencies::import()   C

Complexity

Conditions 7
Paths 20

Size

Total Lines 35
Code Lines 20

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 35
rs 6.7272
c 0
b 0
f 0
cc 7
eloc 20
nc 20
nop 2
1
<?php
2
3
namespace NerdsAndCompany\Schematic\Commerce\Services;
4
5
use Craft\Craft;
6
use Craft\Commerce_PaymentCurrencyModel;
7
use NerdsAndCompany\Schematic\Services\Base;
8
9
/**
10
 * Schematic Commerce Payment Currencies Service.
11
 *
12
 * Sync Craft Setups.
13
 *
14
 * @author    Nerds & Company
15
 * @copyright Copyright (c) 2015-2017, Nerds & Company
16
 * @license   MIT
17
 *
18
 * @see      http://www.nerds.company
19
 */
20
class PaymentCurrencies extends Base
21
{
22
    /**
23
     * Export paymentCurrencies.
24
     *
25
     * @param PaymentCurrencyModel[] $paymentCurrencies
26
     *
27
     * @return array
28
     */
29
    public function export(array $paymentCurrencies = [])
30
    {
31
        if (!count($paymentCurrencies)) {
32
            $paymentCurrencies = Craft::app()->commerce_paymentCurrencies->getAllPaymentCurrencies();
33
        }
34
35
        Craft::log(Craft::t('Exporting Commerce Payment Currencies'));
36
37
        $paymentCurrencyDefinitions = [];
38
39
        foreach ($paymentCurrencies as $paymentCurrency) {
40
            $paymentCurrencyDefinitions[$paymentCurrency->iso] = $this->getPaymentCurrencyDefinition($paymentCurrency);
41
        }
42
43
        return $paymentCurrencyDefinitions;
44
    }
45
46
    /**
47
     * Get payment currencies definition.
48
     *
49
     * @param Commerce_PaymentCurrencyModel $paymentCurrency
50
     *
51
     * @return array
52
     */
53
    private function getPaymentCurrencyDefinition(Commerce_PaymentCurrencyModel $paymentCurrency)
54
    {
55
        return [
56
            'iso' => $paymentCurrency->iso,
57
            'primary' => $paymentCurrency->primary,
58
            'rate' => $paymentCurrency->rate,
59
        ];
60
    }
61
62
    /**
63
     * Attempt to import payment currencies.
64
     *
65
     * @param array $paymentCurrencyDefinitions
66
     * @param bool  $force                      If set to true payment currencies not included in the import will be deleted
67
     *
68
     * @return Result
69
     */
70
    public function import(array $paymentCurrencyDefinitions, $force = false)
71
    {
72
        Craft::log(Craft::t('Importing Commerce Payment Currencies'));
73
74
        $this->resetCraftPaymentCurrenciesServiceCache();
75
        $paymentCurrencies = array();
76
        foreach (Craft::app()->commerce_paymentCurrencies->getAllPaymentCurrencies() as $paymentCurrency) {
77
            $paymentCurrencies[$paymentCurrency->iso] = $paymentCurrency;
78
        }
79
80
        foreach ($paymentCurrencyDefinitions as $paymentCurrencyDefinition) {
81
            $paymentCurrencyHandle = $paymentCurrencyDefinition['iso'];
82
            $paymentCurrency = array_key_exists($paymentCurrencyHandle, $paymentCurrencies)
83
                ? $paymentCurrencies[$paymentCurrencyHandle]
84
                : new Commerce_PaymentCurrencyModel();
85
86
            unset($paymentCurrencies[$paymentCurrencyHandle]);
87
88
            $this->populatePaymentCurrency($paymentCurrency, $paymentCurrencyDefinition, $paymentCurrencyHandle);
89
90
            if (!Craft::app()->commerce_paymentCurrencies->savePaymentCurrency($paymentCurrency)) { // Save paymentcurrency via craft
91
                $this->addErrors($paymentCurrency->getAllErrors());
92
93
                continue;
94
            }
95
        }
96
97
        if ($force) {
98
            foreach ($paymentCurrencies as $paymentCurrency) {
99
                Craft::app()->commerce_paymentCurrencies->deletePaymentCurrencyById($paymentCurrency->id);
100
            }
101
        }
102
103
        return $this->getResultModel();
104
    }
105
106
    /**
107
     * Populate paymentCurrency.
108
     *
109
     * @param Commerce_PaymentCurrencyModel $paymentCurrency
110
     * @param array                         $paymentCurrencyDefinition
111
     * @param string                        $paymentCurrencyHandle
112
     */
113
    private function populatePaymentCurrency(Commerce_PaymentCurrencyModel $paymentCurrency, array $paymentCurrencyDefinition, $paymentCurrencyHandle)
114
    {
115
        $paymentCurrency->setAttributes([
116
            'iso' => $paymentCurrencyHandle,
117
            'primary' => $paymentCurrencyDefinition['primary'],
118
            'rate' => $paymentCurrencyDefinition['rate'],
119
        ]);
120
    }
121
122
    /**
123
     * Reset service cache using reflection.
124
     */
125
    private function resetCraftPaymentCurrenciesServiceCache()
126
    {
127
        $obj = Craft::app()->commerce_paymentCurrencies;
128
        $refObject = new \ReflectionObject($obj);
129
        if ($refObject->hasProperty('_allCurrencies')) {
130
            $refProperty = $refObject->getProperty('_allCurrencies');
131
            $refProperty->setAccessible(true);
132
            $refProperty->setValue($obj, null);
133
        }
134
    }
135
}
136