CRM_Core_BAO_Address::checkContactSharedAddressFields($fields, $contactID);
$addCaptcha = FALSE;
+ // fetch file preview when not submitted yet, like in online contribution Confirm and ThankYou page
+ $viewOnlyFileValues = array();
foreach ($fields as $key => $field) {
if ($viewOnly &&
isset($field['data_type']) &&
$field['data_type'] == 'File' || ($viewOnly && $field['name'] == 'image_URL')
) {
- // ignore file upload fields
- continue;
+ $viewOnlyFileValues[$key] = '';
+ if (!empty($this->_params[$key])) {
+ $path = CRM_Utils_Array::value('name', $this->_params[$key]);
+ $fileType = CRM_Utils_Array::value('type', $this->_params[$key]);
+ $viewOnlyFileValues[$key] = CRM_Utils_File::getFileURL($path, $fileType);
+ }
}
if ($profileContactType) {
$this->assign($name, $fields);
+ if (count($viewOnlyFileValues)) {
+ $this->assign('viewOnlyFileValues', $viewOnlyFileValues);
+ }
+
if ($addCaptcha && !$viewOnly) {
$captcha = CRM_Utils_ReCAPTCHA::singleton();
$captcha->add($this);
'id'
);
list($path) = CRM_Core_BAO_File::path($fileID, $entityId, NULL, NULL);
- list($imageWidth, $imageHeight) = getimagesize($path);
- list($imageThumbWidth, $imageThumbHeight) = CRM_Contact_BAO_Contact::getThumbSize($imageWidth, $imageHeight);
$url = CRM_Utils_System::url('civicrm/file',
"reset=1&id=$fileID&eid=$contactID",
$absolute, NULL, TRUE, TRUE
);
- $result['file_url'] = "
- <a href=\"$url\" class='crm-image-popup'>
- <img src=\"$url\" width=$imageThumbWidth height=$imageThumbHeight/>
- </a>";
- // for non image files
+ $result['file_url'] = CRM_Utils_File::getFileURL($path, $fileType, $url);
}
+ // for non image files
else {
$uri = CRM_Core_DAO::getFieldValue('CRM_Core_DAO_File',
$fileID,
"reset=1&id=$fileID&eid=$contactID",
$absolute, NULL, TRUE, TRUE
);
- $result['file_url'] = "<a href=\"$url\">{$uri}</a>";
+ $result['file_url'] = CRM_Utils_File::getFileURL($uri, $fileType, $url);
}
}
return $result;
class CRM_Core_Page_File extends CRM_Core_Page {
public function run() {
- $eid = CRM_Utils_Request::retrieve('eid', 'Positive', $this, TRUE);
- $fid = CRM_Utils_Request::retrieve('fid', 'Positive', $this, FALSE);
- $id = CRM_Utils_Request::retrieve('id', 'Positive', $this, TRUE);
- $quest = CRM_Utils_Request::retrieve('quest', 'String', $this);
+ $fileName = CRM_Utils_Request::retrieve('filename', 'String', $this);
+ $path = CRM_Core_Config::singleton()->customFileUploadDir . $fileName;
+ $mimeType = CRM_Utils_Request::retrieve('mime-type', 'String', $this);
$action = CRM_Utils_Request::retrieve('action', 'String', $this);
- list($path, $mimeType) = CRM_Core_BAO_File::path($id, $eid, NULL, $quest);
+ // if we are not providing essential parameter needed for file preview then
+ if (empty($fileName) && empty($mimeType)) {
+ $eid = CRM_Utils_Request::retrieve('eid', 'Positive', $this, TRUE);
+ $fid = CRM_Utils_Request::retrieve('fid', 'Positive', $this, FALSE);
+ $id = CRM_Utils_Request::retrieve('id', 'Positive', $this, TRUE);
+ $quest = CRM_Utils_Request::retrieve('quest', 'String', $this);
+
+ list($path, $mimeType) = CRM_Core_BAO_File::path($id, $eid, NULL, $quest);
+ }
+
if (!$path) {
CRM_Core_Error::statusBounce('Could not retrieve the file');
}
$param[$fileName] = $fileParams;
}
+ /**
+ * Return formatted file URL, like for image file return image url with image icon
+ *
+ * @param string $path
+ * Absoulte file path
+ * @param string $fileType
+ * @param string $url
+ * File preview link e.g. https://example.com/civicrm/file?reset=1&filename=image.png&mime-type=image/png
+ *
+ * @return string $url
+ */
+ public static function getFileURL($path, $fileType, $url = NULL) {
+ if (empty($path) || empty($fileType)) {
+ return '';
+ }
+ elseif (empty($url)) {
+ $fileName = basename($path);
+ $url = CRM_Utils_System::url('civicrm/file', "reset=1&filename={$fileName}&mime-type={$fileType}");
+ }
+ switch ($fileType) {
+ case 'image/jpeg':
+ case 'image/pjpeg':
+ case 'image/gif':
+ case 'image/x-png':
+ case 'image/png':
+ list($imageWidth, $imageHeight) = getimagesize($path);
+ list($imageThumbWidth, $imageThumbHeight) = CRM_Contact_BAO_Contact::getThumbSize($imageWidth, $imageHeight);
+ $url = "<a href=\"$url\" class='crm-image-popup'>
+ <img src=\"$url\" width=$imageThumbWidth height=$imageThumbHeight/>
+ </a>";
+ break;
+
+ default:
+ $url = sprintf('<a href="%s">%s</a>', $url, basename($path));
+ break;
+ }
+
+ return $url;
+ }
+
}
{$form.onbehalfof_id.html}
{/if}
{$form.$prefix.$n.html}
+ {elseif $field.html_type eq 'File' && $viewOnlyFileValues}
+ {$viewOnlyFileValues.$n}
{else}
{$form.$n.html}
{/if}