/** * * Get the last N leads for a specific form * * @param Form $form * @param $searchInHistoryOfNbPost * @return Paginator */ public function findLastNByType(Form $form, $searchInHistoryOfNbPost) { $dql = 'SELECT l FROM TellawLeadsFactoryBundle:Leads l JOIN l.form f'; $dql .= " WHERE f.id=:formId"; $dql .= " ORDER BY l.createdAt DESC"; $query = $this->getEntityManager()->createQuery($dql)->setParameter('formId', $form->getId())->setMaxResults($searchInHistoryOfNbPost); $result_array = $query->getArrayResult(); return $result_array; }
/** * Tracking callback method * * Method used to generate a transparent pixel to track display of a form, including the UTM. * * @Route("/form/trck", name="_client_form_tracking") * @Route("/form/trck/{code}/") * @Route("/form/trck/{code}/{utm_campaign}") */ public function trackingAction(Form $form, $utm_campaign = '') { // Track call request /** @var \Tellaw\LeadsFactoryBundle\Entity\Tracking $tracking */ $tracking = new Tracking(); if (trim($utm_campaign) == '') { $utm_campaign = $form->getUtmcampaign(); } $tracking->setUtmCampaign($utm_campaign); $tracking->setForm($form); $tracking->setCreatedAt(new \DateTime()); $em = $this->getDoctrine()->getManager(); $em->persist($tracking); $em->flush(); return new TransparentPixelResponse(); }
/** * Process export to CSV file * * @param array $jobs * @param \Tellaw\LeadsFactoryBundle\Entity\Form $form */ public function export($jobs, $form) { $fileName = 'export_' . $form->getCode() . '_' . time() . '.csv'; $path = $this->getExportPath(); $logger = $this->getContainer()->get('export.logger'); $handle = fopen($path . DIRECTORY_SEPARATOR . $fileName, 'w+'); if ($handle === false) { $logger->error("Export CSV : impossible d'ouvrir ou créer le fichier " . $fileName); } $exportUtils = $this->getContainer()->get('export_utils'); $em = $this->getContainer()->get('doctrine')->getManager(); foreach ($jobs as $job) { $lead = $job->getLead(); $data = json_decode($lead->getData(), true); $status = fputcsv($handle, $data) ? $exportUtils::$_EXPORT_SUCCESS : $exportUtils->getErrorStatus($job); $lead->setStatus($status); $log = $status != $exportUtils::$_EXPORT_SUCCESS ? "Job export (ID " . $job->getId() . ") : erreur lors de l'édition du fichier CSV" : "Job export (ID " . $job->getId() . ") : exporté avec succès"; $logger->info($log); $em->persist($lead); $exportUtils->updateJob($job, $status, $log); } $em->flush(); fclose($handle); }
/** * * Save the final status of the form. * The status is saved in the formEntity * It saves two datas : * - Status (static value of this utils class) * - Log message * * @param $status */ public function saveTestStatus($status, $log, Form $form) { $form->setTestStatus($status); $form->setTestLog($log); $em = $this->getDoctrine()->getManager(); $em->persist($form); $em->flush(); }
/** * @param FormEntity $form * * @return string */ public function getHiddenTags($form) { $tags = "\r\n <input type='hidden' name=\"lffield[utmcampaign]\" id=\"lffield[utmcampaign]\" value='" . $form->getUtmcampaign() . "'/>\r\n <input type='hidden' name='lfFormId' id='lfFormId' value='" . $form->getId() . "'/>\r\n <input type='hidden' name='lfFormKey' id='lfFormKey' value='" . $this->getFormKey($form->getId()) . "'/>\r\n "; if (!is_null($form->getFormType())) { $tags .= "<input type='hidden' name='lfFormType' id='lfFormType' value='" . $form->getFormType()->getId() . "'/>"; } return $tags; }
/** * Launches export for all configured methods * * @param \Tellaw\LeadsFactoryBundle\Entity\Form $form */ public function export($form) { $logger = $this->getContainer()->get('export.logger'); $config = $form->getConfig(); if (!isset($config['export'])) { return; } foreach ($config['export'] as $method => $methodConfig) { if (!$this->isValidExportMethod($method)) { $logger->error('Méthode d\'export "' . $method . '" invalide'); continue; } $jobs = $this->getExportableJobs($form, $method, $methodConfig); if (count($jobs)) { $this->getMethod($method)->export($jobs, $form); } } }