Merge branch '4.6' of https://github.com/civicrm/civicrm-core
[civicrm-core.git] / api / v3 / File.php
index 7230bf9182e3b13e8111904ee0016bd3a1c12a57..feccd430f9802458f586fd20f4534964914130b4 100644 (file)
@@ -1,10 +1,9 @@
 <?php
-
 /*
  +--------------------------------------------------------------------+
  | CiviCRM version 4.6                                                |
  +--------------------------------------------------------------------+
- | Copyright CiviCRM LLC (c) 2004-2014                                |
+ | Copyright CiviCRM LLC (c) 2004-2015                                |
  +--------------------------------------------------------------------+
  | This file is a part of CiviCRM.                                    |
  |                                                                    |
  */
 
 /**
+ * This api is a simple wrapper of the CiviCRM file DAO.
  *
- * Definition of the Tag of the CRM API.
- * More detailed documentation can be found
- * {@link http://objectledge.org/confluence/display/CRM/CRM+v1.0+Public+APIs
- * here}
+ * Creating and updating files is a complex process and this api is usually insufficient.
+ * Use the "Attachment" api instead for more robust file handling.
  *
+ * @fixme no unit tests
  * @package CiviCRM_APIv3
- * @subpackage API_File
- * @copyright CiviCRM LLC (c) 2004-2014
- * $Id: $
- *
  */
 
 /**
- * Create a file
- *
- * This API is used for creating a file
+ * Create a file record.
+ * @note This is only one of several steps needed to create a file in CiviCRM.
+ * Use the "Attachment" api to better handle all steps.
  *
  * @param array $params
- *   An associative array of name/value property values of civicrm_file.
+ *   Array per getfields metadata.
  *
  * @return array
- *   Array of newly created file property values.
- * @access public
  */
 function civicrm_api3_file_create($params) {
 
@@ -61,7 +54,15 @@ function civicrm_api3_file_create($params) {
   }
 
   $fileDAO = new CRM_Core_DAO_File();
-  $properties = array('id', 'file_type_id', 'mime_type', 'uri', 'document', 'description', 'upload_date');
+  $properties = array(
+    'id',
+    'file_type_id',
+    'mime_type',
+    'uri',
+    'document',
+    'description',
+    'upload_date',
+  );
 
   foreach ($properties as $name) {
     if (array_key_exists($name, $params)) {
@@ -74,21 +75,17 @@ function civicrm_api3_file_create($params) {
   $file = array();
   _civicrm_api3_object_to_array($fileDAO, $file);
 
-  return civicrm_api3_create_success($file, $params, 'file', 'create', $fileDAO);
+  return civicrm_api3_create_success($file, $params, 'File', 'create', $fileDAO);
 }
 
 /**
- * Get a file.
- *
- * This api is used for finding an existing file.
- * Required parameters : id OR file_type_id of a file
+ * Get a File.
  *
  * @param array $params
- *   An associative array of name/value property values of civicrm_file.
+ *   Array per getfields metadata.
  *
  * @return array
  *   Array of all found file object property values.
- * @access public
  */
 function civicrm_api3_file_get($params) {
   civicrm_api3_verify_one_mandatory($params);
@@ -96,17 +93,12 @@ function civicrm_api3_file_get($params) {
 }
 
 /**
- * Update an existing file
+ * Update an existing File.
  *
- * This api is used for updating an existing file.
- * Required parameters : id of a file
- *
- * @param array $paramsAn array of name/value property values of civicrm_file.
- *   An array of name/value property values of civicrm_file.
+ * @param array $params
+ *   Array per getfields metadata.
  *
  * @return array
- *   Array of updated file object property values
- * @access public
  */
 function civicrm_api3_file_update($params) {
 
@@ -129,34 +121,21 @@ function civicrm_api3_file_update($params) {
 }
 
 /**
- * Deletes an existing file
- *
- * This API is used for deleting a file
- * Required parameters : id of a file
+ * Delete an existing File.
  *
  * @param array $params
+ *   Array per getfields metadata.
  *
  * @return array
- *   API result array
- * @access public
+ *   API Result Array
  */
 function civicrm_api3_file_delete($params) {
 
   civicrm_api3_verify_mandatory($params, NULL, array('id'));
-
-  $check = FALSE;
-
-  $entityFileDAO = new CRM_Core_DAO_EntityFile();
-  $entityFileDAO->file_id = $params['id'];
-  if ($entityFileDAO->find()) {
-    $check = $entityFileDAO->delete();
+  if (CRM_Core_BAO_File::deleteEntityFile('*', $params['id'])) {
+    return civicrm_api3_create_success();
   }
-
-  $fileDAO = new CRM_Core_DAO_File();
-  $fileDAO->id = $params['id'];
-  if ($fileDAO->find(TRUE)) {
-    $check = $fileDAO->delete();
+  else {
+    throw new API_Exception('Error while deleting a file.');
   }
-
-  return $check ? NULL : civicrm_api3_create_error('Error while deleting a file.');
 }