- $res = XDB::query('SELECT id, nameLocal
- FROM ' . $databases[$area] . '
- WHERE name = {?}',
- $address->$areaName);
- if ($res->numRows() == 0) {
- XDB::execute('INSERT INTO ' . $databases[$area] . ' (name, nameLocal, country' .
- ($extra ? ', ' . $extras[$area]['field'] : '') . ')
- VALUES ({?}, {?}, {?}' . ($extra ? ', {?}' : '') . ')',
- $address->$areaName, $address->$areaNameLocal, $address->countryId,
- ($extra ? $address->$extra : null));
- $address->$areaId = XDB::insertId();
- } else {
- // XXX: remove this once all areas have both nameLocal and name.
- list($id, $name) = $res->fetchOneRow();
- if (is_null($name) && !is_null($address->$areaNameLocal)) {
- XDB::execute('UPDATE ' . $databases[$area] . '
- SET nameLocal = {?}
- WHERE id = {?}',
- $address->$areaNameLocal, $id);
- }
- $address->$areaId = $id;
- }
- } elseif (empty($address->$areaId)) {
- $address->$areaId = null;
+ $id = XDB::fetchOneCell('SELECT id
+ FROM profile_addresses_components_enum
+ WHERE short_name = {?} AND long_name = {?} AND ' . implode(' AND ', $where_types),
+ $component['short_name'], $component['long_name']);
+ if (is_null($id)) {
+ XDB::execute('INSERT INTO profile_addresses_components_enum (short_name, long_name, types)
+ VALUES ({?}, {?}, {?})',
+ $component['short_name'], $component['long_name'], implode(',', $component['types']));
+ $id = XDB::insertId();