Esempio n. 1
0
 public function parseFields($data, $cart)
 {
     $fields = \Ecommerce\UserAdds\Field::getList();
     $name = '';
     foreach ($fields as $field) {
         if ($field->save && !empty($data[$field->id])) {
             $name .= htmlspecialchars($data[$field->id]) . ' ';
         }
     }
     $name = trim($name);
     $userAdds = Ecommerce\UserAdds::get([['user_id', $cart->user->id], ['name', $name]]);
     if (!$userAdds) {
         $userAdds = new Ecommerce\UserAdds();
         $userAdds->user_id = $cart->user->id;
         $userAdds->name = $name;
         $userAdds->save();
         foreach ($fields as $field) {
             if (!$field->save) {
                 continue;
             }
             $userAddsValue = new Ecommerce\UserAdds\Value();
             $userAddsValue->value = htmlspecialchars($data[$field->id]);
             $userAddsValue->useradds_field_id = $field->id;
             $userAddsValue->useradds_id = $userAdds->id;
             $userAddsValue->save();
         }
     }
     $user = \Users\User::get($cart->user_id);
     foreach ($fields as $field) {
         $info = new \Ecommerce\Cart\Info();
         $info->name = $field->name;
         $info->value = htmlspecialchars($data[$field->id]);
         $info->useradds_field_id = $field->id;
         $info->cart_id = $cart->id;
         $info->save();
         $relations = [];
         if ($field->userfield) {
             if (strpos($field->userfield, ':')) {
                 $path = explode(':', $field->userfield);
                 if (!$user->{$path[0]}->{$path[1]}) {
                     $user->{$path[0]}->{$path[1]} = $info->value;
                     $relations[$path[0]] = $path[0];
                 }
             } else {
                 if (!$user->{$field->userfield}) {
                     $user->{$field->userfield} = $info->value;
                 }
             }
         }
         foreach ($relations as $rel) {
             $user->{$rel}->save();
         }
         $user->save();
     }
     return $userAdds;
 }