- /**
- * @param array $fields contains the fields that are updated
- * @param array $condition condition array with the key values
- * @param array|boolean $old_fields array with the old field values that are about to be replaced (true = update on duplicate)
- *
- * @return boolean was the update successfull?
- * @throws \Exception
- */
- public static function update($fields, $condition, $old_fields = [])
- {
- $ret = DBA::update('contact', $fields, $condition, $old_fields);
-
- // We quit when the update affected more than one row
- if (DBA::affectedRows() > 1) {
- return $ret;
- }
-
- // Don't proceed when the command aboved queried more than one row
- // This is not a duplicate of the test above since that only checked for affected rows
- if (DBA::count('contact', $condition) != 1) {
- return $ret;
- }
-
- $contact = DBA::selectFirst('contact', ['nurl', 'uid', 'id'], $condition);
- if (!DBA::isResult($contact)) {
- // Shouldn't happen
- return $ret;
- }
-
- // Search for duplicated contacts and get rid of them
- self::handleDuplicates($contact['nurl'], $contact['uid'], $contact['id']);
-
- return $ret;
- }
-