entityManager = $entityManager; $this->service = $service; } public function run(Request $request, Response $response): void { $id = $request->getQueryParam('id'); if (!$id || !is_string($id)) { throw new BadRequest(); } $queueItemId = $id; $queueItem = $this->entityManager->getEntity('EmailQueueItem', $queueItemId); if (!$queueItem) { throw new NotFound(); } $target = null; $targetType = $queueItem->get('targetType'); $targetId = $queueItem->get('targetId'); if ($targetType && $targetId) { $target = $this->entityManager->getEntity($targetType, $targetId); } $massEmailId = $queueItem->get('massEmailId'); if (!$massEmailId) { return; } $massEmail = $this->entityManager->getEntity('MassEmail', $massEmailId); if (!$massEmail) { return; } $campaignId = $massEmail->get('campaignId'); if (!$campaignId) { return; } $campaign = $this->entityManager->getEntity('Campaign', $campaignId); if (!$campaign) { return; } if (!$target) { return; } $this->service->logOpened($campaignId, $queueItemId, $target, null, $queueItem->get('isTest')); header('Content-Type: image/png'); $img = imagecreatetruecolor(1, 1); if (!$img) { return; } imagesavealpha($img, true); $color = imagecolorallocatealpha($img, 127, 127, 127, 127); if ($color === false) { return; } imagefill($img, 0, 0, $color); imagepng($img); imagecolordeallocate($img, $color); imagedestroy($img); } }