/** * Validate user's CMIS reference * * Users can enter a CMIS reference in various ways: * id: 753026c2-1d1e-40df-bf5b-847f5d23c1df * path: /Sites/bloomington-arts-commission/documentLibrary/Agendas * query: select id from cmis:document where ... * * @implements hook_field_validate() * @see https://api.drupal.org/api/drupal/modules!field!field.api.php/function/hook_field_validate/7 */ function cmisro_field_validate($entity_type, $entity, $field, $instance, $lang, &$items, &$errors) { foreach ($items as $delta => $item) { if (!empty($item['reference'])) { $type = _cmisro_referenceType($item['reference']); try { $o = $type === 'query' ? _cmisro_getQuery($item['reference']) : _cmisro_getObject($item['reference']); } catch (Exception $e) { $errors[$field['field_name']][$lang][$delta][] = ['error' => 'unknownAttachment', 'message' => "{$instance['label']}: {$e->getMessage()}"]; } } } }
/** * @param string $reference */ function _cmisro_getObject($reference) { $s = _cmisro_service(); $o = _cmisro_referenceType($reference) === 'path' ? $s->getObjectByPath($reference) : $s->getObject($reference); return _cmisro_object($o); }