["%" . $_GET['photo'], 'String'], ]; $dao = CRM_Core_DAO::executeQuery($sql, $params); $cid = NULL; while ($dao->fetch()) { $cid = $dao->id; } if ($cid) { $config = CRM_Core_Config::singleton(); $fileExtension = strtolower(pathinfo($_GET['photo'], PATHINFO_EXTENSION)); $this->download( $config->customFileUploadDir . $_GET['photo'], 'image/' . ($fileExtension == 'jpg' ? 'jpeg' : $fileExtension), $this->ttl ); CRM_Utils_System::civiExit(); } else { throw new CRM_Core_Exception(ts('Photo does not exist')); } } /** * Download image. * * @param string $file * Local file path. * @param string $mimeType * @param int $ttl * Time to live (seconds). */ protected function download($file, $mimeType, $ttl) { if (!file_exists($file)) { header("HTTP/1.0 404 Not Found"); return; } elseif (!is_readable($file)) { header('HTTP/1.0 403 Forbidden'); return; } CRM_Utils_System::setHttpHeader('Expires', gmdate('D, d M Y H:i:s \G\M\T', CRM_Utils_Time::getTimeRaw() + $ttl)); CRM_Utils_System::setHttpHeader("Content-Type", $mimeType); CRM_Utils_System::setHttpHeader("Content-Disposition", "inline; filename=\"" . basename($file) . "\""); CRM_Utils_System::setHttpHeader("Cache-Control", "max-age=$ttl, public"); CRM_Utils_System::setHttpHeader('Pragma', 'public'); readfile($file); } }