Code Duplication    Length = 56-57 lines in 2 locations

system/modules/Ecommerce/Ecommerce.php 2 locations

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