diff --git a/api/v3/Documents.php b/api/v3/Documents.php index 06caeec..92b8eb6 100644 --- a/api/v3/Documents.php +++ b/api/v3/Documents.php @@ -19,7 +19,6 @@ function _civicrm_api3_documents_import_spec(array &$params) : void { 'type' => CRM_Utils_Type::T_INT, 'title' => E::ts('Custom Field ID'), 'api.required' => 'TRUE', - 'options' => get_custom_fields_ids_files(), ]; } @@ -30,6 +29,22 @@ function _civicrm_api3_documents_import_spec(array &$params) : void { * @return array */ function civicrm_api3_documents_import(array $params) : array { + + $customFieldId = $params['custom_field_id']; + try{ + $custom_field = civicrm_api3('CustomField', 'getSingle', [ + 'id' => $customFieldId, + 'api.CustomGroup.getSingle' => [], + ]); + } + catch(Exception $e){ + return civicrm_api3_create_error("custom_field_id does not exists", $params); + } + + if($custom_field['data_type'] != "File"){ + return civicrm_api3_create_error("custom_field_id is not type File", $params); + } + $custom_field = civicrm_api3('CustomField', 'getSingle', [ 'id' => $params['custom_field_id'], 'api.CustomGroup.getSingle' => [], @@ -68,8 +83,6 @@ function civicrm_api3_documents_import(array $params) : array { $filePath = Civi::paths()->getPath("[civicrm.files]/custom/{$file_ori['uri']}"); $new_path = CRM_Utils_File::duplicate($filePath); - $file_ori['mime_type']; - $repository = CRM_Documents_Entity_DocumentRepository::singleton(); $document = new CRM_Documents_Entity_Document(); $document->setSubject($params['subject']); @@ -102,30 +115,5 @@ function civicrm_api3_documents_import(array $params) : array { $count++; } // ToDo better return of API - $values_imported = ['count' => $count]; - return civicrm_api3_create_success($values_imported, $params, 'Documents', 'import'); + return civicrm_api3_create_success(['count' => $count], $params, 'Documents', 'import'); } - -/** - * Get the custom fields avalibles to use - * - * @return array - */ -function get_custom_fields_ids_files () : array { - $custom_fields_files = civicrm_api3('CustomField', 'get', [ - 'sequential' => 1, - 'return' => ["id"], - 'data_type' => "File", - 'options' => ['limit' => 0], - ]); - - if (!is_array($custom_fields_files['values'])) { - throw new API_Exception(E::ts('Not exist custom fields of type File.')); - } - - $custom_fields_avalible = []; - foreach ($custom_fields_files['values'] as $custom_fields_files) { - $custom_fields_avalible[$custom_fields_files['id']] = $custom_fields_files['id']; - } - return $custom_fields_avalible; -} \ No newline at end of file