CRM-16210 fix
authordeb.monish <monish.deb@webaccessglobal.com>
Fri, 4 Mar 2016 18:11:03 +0000 (23:41 +0530)
committerdeb.monish <monish.deb@webaccessglobal.com>
Fri, 4 Mar 2016 18:11:03 +0000 (23:41 +0530)
CRM/Case/Form/Activity.php
CRM/Core/BAO/CustomField.php

index 03feaa4f55031419ec145a769bc1be4d64e6937a..e58471ae02ea4ba2e1166dbe38097936db4e6aaa 100644 (file)
@@ -413,6 +413,10 @@ class CRM_Case_Form_Activity extends CRM_Activity_Form_Activity {
     // format activity custom data
     if (!empty($params['hidden_custom'])) {
       if ($this->_activityId) {
+        // retrieve and include the custom data of old Activity
+        $oldActivity = civicrm_api3('Activity', 'getsingle', array('id' => $this->_activityId));
+        $params = array_merge($params, $oldActivity);
+
         // unset custom fields-id from params since we want custom
         // fields to be saved for new activity.
         foreach ($params as $key => $value) {
@@ -504,8 +508,8 @@ class CRM_Case_Form_Activity extends CRM_Activity_Form_Activity {
       else {
         $newActParams['original_id'] = $activity->id;
       }
-      //is_current_revision will be set to 1 by default.
 
+      //is_current_revision will be set to 1 by default.
       // add attachments if any
       CRM_Core_BAO_File::formatAttachment($newActParams,
         $newActParams,
index 5756980c206099527cc4d8baf66ba2511772d6c6..4324e12d46b5a33f74b30a6f12da17a8781c41ee 100644 (file)
@@ -1619,14 +1619,27 @@ SELECT id
       $fName = $value['name'];
       $mimeType = $value['type'];
 
+      // If we are already passing the file id as a value then retrieve and set the file data
+      if (CRM_Utils_Rule::integer($value)) {
+        $fileDAO = new CRM_Core_DAO_File();
+        $fileDAO->id = $value;
+        $fileDAO->find(TRUE);
+        if ($fileDAO->N){
+          $fileID = $value;
+          $fName = $fileDAO->uri;
+          $mimeType = $fileDAO->mime_type;
+        }
+      }
+
       $filename = pathinfo($fName, PATHINFO_BASENAME);
 
-      // rename this file to go into the secure directory
-      if (!rename($fName, $config->customFileUploadDir . $filename)) {
+      // rename this file to go into the secure directory only if
+      // user has uploaded new file not existing verfied on the basis of $fileID
+      if (!$fileID && !rename($fName, $config->customFileUploadDir . $filename)) {
         CRM_Core_Error::statusBounce(ts('Could not move custom file to custom upload directory'));
       }
 
-      if ($customValueId) {
+      if ($customValueId && !$fileID) {
         $query = "
 SELECT $columnName
   FROM $tableName