addElement('hidden', 'oplock_ts', $timestamps['modified_date'], ['id' => 'oplock_ts']); $form->addFormRule(['CRM_Contact_Form_Inline_Lock', 'formRule'], $contactID); } /** * Ensure that oplock_ts hasn't changed in the underlying DB. * * @param array $fields * The input form values. * @param array $files * The uploaded files if any. * @param int $contactID * * @return bool|array * true if no errors, else array of errors */ public static function formRule($fields, $files, $contactID = NULL) { $errors = []; $timestamps = CRM_Contact_BAO_Contact::getTimestamps($contactID); if ($fields['oplock_ts'] != $timestamps['modified_date']) { // Inline buttons generated via JS $open = sprintf("
", $timestamps['modified_date']); $close = "
"; $errors['oplock_ts'] = $open . ts('This record was modified by another user!') . $close; } return empty($errors) ? TRUE : $errors; } /** * Return any post-save data. * * @param int $contactID * * @return array * extra options to return in JSON */ public static function getResponse($contactID) { $timestamps = CRM_Contact_BAO_Contact::getTimestamps($contactID); return ['oplock_ts' => $timestamps['modified_date']]; } }