setOptionGroupId($request); } /** * @param \Civi\Api4\Generic\DAOCreateAction $request * * @return bool */ protected function applies(DAOCreateAction $request) { return $request->getEntityName() === 'OptionValue'; } /** * @param \Civi\Api4\Generic\DAOCreateAction $request * @throws \API_Exception * @throws \Exception */ private function setOptionGroupId(DAOCreateAction $request) { $optionGroupName = $request->getValue('option_group'); if (!$optionGroupName || $request->getValue('option_group_id')) { return; } \CRM_Core_Error::deprecatedFunctionWarning('Use option_group_id:name instead of option_group in APIv4'); $optionGroup = OptionGroup::get(FALSE) ->addSelect('id') ->addWhere('name', '=', $optionGroupName) ->execute(); if ($optionGroup->count() !== 1) { throw new \Exception('Option group name must match only a single group'); } $request->addValue('option_group_id', $optionGroup->first()['id']); } }