Code Duplication    Length = 56-57 lines in 2 locations

system/modules/Ecommerce/Ecommerce.php 2 locations

@@ 49-105 (lines=57) @@
46
        }
47
    }
48
49
    public function parseFields($data, $cart)
50
    {
51
        $fields = \Ecommerce\UserAdds\Field::getList();
52
        $name = '';
53
        foreach ($fields as $field) {
54
            if ($field->save && !empty($data[$field->id])) {
55
                $name .= htmlspecialchars($data[$field->id]) . ' ';
56
            }
57
        }
58
        $name = trim($name);
59
60
        $userAdds = Ecommerce\UserAdds::get([['user_id', $cart->user->id], ['name', $name]]);
61
        if (!$userAdds) {
62
            $userAdds = new Ecommerce\UserAdds();
63
            $userAdds->user_id = $cart->user->id;
64
            $userAdds->name = $name;
65
            $userAdds->save();
66
            foreach ($fields as $field) {
67
                if (!$field->save) {
68
                    continue;
69
                }
70
                $userAddsValue = new Ecommerce\UserAdds\Value();
71
                $userAddsValue->value = htmlspecialchars($data[$field->id]);
72
                $userAddsValue->useradds_field_id = $field->id;
73
                $userAddsValue->useradds_id = $userAdds->id;
74
                $userAddsValue->save();
75
            }
76
        }
77
        $user = \Users\User::get($cart->user_id);
78
        foreach ($fields as $field) {
79
            $info = new \Ecommerce\Cart\Info();
80
            $info->name = $field->name;
81
            $info->value = htmlspecialchars($data[$field->id]);
82
            $info->useradds_field_id = $field->id;
83
            $info->cart_id = $cart->id;
84
            $info->save();
85
            $relations = [];
86
            if ($field->userfield) {
87
                if (strpos($field->userfield, ':')) {
88
                    $path = explode(':', $field->userfield);
89
                    if (!$user->{$path[0]}->{$path[1]}) {
90
                        $user->{$path[0]}->{$path[1]} = $info->value;
91
                        $relations[$path[0]] = $path[0];
92
                    }
93
                } else {
94
                    if (!$user->{$field->userfield}) {
95
                        $user->{$field->userfield} = $info->value;
96
                    }
97
                }
98
            }
99
            foreach ($relations as $rel) {
100
                $user->$rel->save();
101
            }
102
            $user->save();
103
        }
104
        return $userAdds;
105
    }
106
107
    public function parseDeliveryFields($data, $cart, $fields)
108
    {
@@ 107-162 (lines=56) @@
104
        return $userAdds;
105
    }
106
107
    public function parseDeliveryFields($data, $cart, $fields)
108
    {
109
        $name = '';
110
        foreach ($fields as $field) {
111
            if ($field->save && !empty($data[$field->id])) {
112
                $name .= htmlspecialchars($data[$field->id]) . ' ';
113
            }
114
        }
115
        $name = trim($name);
116
117
        $save = Ecommerce\Delivery\Save::get([['user_id', $cart->user->id], ['name', $name]]);
118
        if (!$save) {
119
            $save = new Ecommerce\Delivery\Save();
120
            $save->user_id = $cart->user->id;
121
            $save->name = $name;
122
            $save->save();
123
            foreach ($fields as $field) {
124
                if (!$field->save) {
125
                    continue;
126
                }
127
                $saveValue = new Ecommerce\Delivery\Value();
128
                $saveValue->value = htmlspecialchars($data[$field->id]);
129
                $saveValue->delivery_field_id = $field->id;
130
                $saveValue->delivery_save_id = $save->id;
131
                $saveValue->save();
132
            }
133
        }
134
        $user = \Users\User::get($cart->user_id);
135
        foreach ($fields as $field) {
136
            $info = new \Ecommerce\Cart\DeliveryInfo();
137
            $info->name = $field->name;
138
            $info->value = htmlspecialchars($data[$field->id]);
139
            $info->delivery_field_id = $field->id;
140
            $info->cart_id = $cart->id;
141
            $info->save();
142
            $relations = [];
143
            if ($field->userfield) {
144
                if (strpos($field->userfield, ':')) {
145
                    $path = explode(':', $field->userfield);
146
                    if (!$user->{$path[0]}->{$path[1]}) {
147
                        $user->{$path[0]}->{$path[1]} = $info->value;
148
                        $relations[$path[0]] = $path[0];
149
                    }
150
                } else {
151
                    if (!$user->{$field->userfield}) {
152
                        $user->{$field->userfield} = $info->value;
153
                    }
154
                }
155
            }
156
            foreach ($relations as $rel) {
157
                $user->$rel->save();
158
            }
159
            $user->save();
160
        }
161
        return $save;
162
    }
163
164
    public function getCurCart($create = true)
165
    {