- $areaName = $area . 'Name';
- $areaNameLocal = $areaName . 'Local';
- $areaId = $area . 'Id';
- if (!is_null($address->$areaName) && isset($databases[$area])) {
- $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)
- VALUES ({?}, {?}, {?})',
- $address->$areaName, $address->$areaNameLocal, $address->countryId);
- $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 = {?}' . $where,
+ $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();