You are here

public function CustomFile::render in CiviCRM Entity 8.3

Renders the field.

Parameters

\Drupal\views\ResultRow $values: The values retrieved from a single row of a view's query result.

Return value

string|\Drupal\Component\Render\MarkupInterface The rendered output. If the output is safe it will be wrapped in an object that implements MarkupInterface. If it is empty or unsafe it will be a string.

Overrides FieldPluginBase::render

File

src/Plugin/views/field/CustomFile.php, line 56

Class

CustomFile
Display file link base on CiviCRM.

Namespace

Drupal\civicrm_entity\Plugin\views\field

Code

public function render(ResultRow $values) {
  $value = $this
    ->getValue($values);
  if ($value) {
    $path = 'civicrm/file';
    $file_type = \CRM_Core_DAO::getFieldValue('CRM_Core_DAO_File', $value, 'mime_type');

    // @todo Maybe grab these from the API?
    $file_types = [
      'image/jpeg',
      'image/pjpeg',
      'image/gif',
      'image/x-png',
      'image/png',
    ];
    if ($file_type && in_array($file_type, $file_types)) {
      $path = sprintf('%s/imagefile', $path);
    }
    $entity_id = $this
      ->getValue($values, 'entity_id');
    $file_hash = \CRM_Core_BAO_File::generateFileHash($entity_id, $value);
    $query = [
      'id' => $value,
      'eid' => $entity_id,
      'fcs' => $file_hash,
    ];
    return \CRM_Utils_System::url($path, UrlHelper::buildQuery($query), TRUE, FALSE, FALSE, TRUE);
  }
  return NULL;
}