Esempio n. 1
0
 /**
  * @param      $focus
  * @param bool $preview
  * @param bool $ignoreMinify
  *
  * @return string
  */
 public function generateJavascript($focus, $preview = false, $ignoreMinify = false)
 {
     if ($focus instanceof Focus) {
         $focus = $focus->toArray();
     }
     if (!empty($focus['form'])) {
         $form = $this->formModel->getEntity($focus['form']);
     } else {
         $form = null;
     }
     if ($preview) {
         $content = ['style' => '', 'html' => $this->templating->getTemplating()->render('MauticFocusBundle:Builder:content.html.php', ['focus' => $focus, 'form' => $form, 'preview' => $preview])];
     } else {
         // Generate link if applicable
         $url = '';
         if ($focus['type'] == 'link') {
             $trackable = $this->trackableModel->getTrackableByUrl($focus['properties']['content']['link_url'], 'focus', $focus['id']);
             $url = $this->trackableModel->generateTrackableUrl($trackable, ['channel' => ['focus', $focus['id']]]);
         }
         $content = $this->templating->getTemplating()->render('MauticFocusBundle:Builder:generate.js.php', ['focus' => $focus, 'form' => $form, 'preview' => $preview, 'ignoreMinify' => $ignoreMinify, 'clickUrl' => $url]);
         if (!$ignoreMinify) {
             $content = \JSMin::minify($content);
         }
     }
     return $content;
 }
Esempio n. 2
0
 /**
  * @param Form $form
  *
  * @return string
  */
 public function getFormScript(Form $form)
 {
     $theme = $form->getTemplate();
     if (!empty($theme)) {
         $theme .= '|';
     }
     $script = $this->templatingHelper->getTemplating()->render($theme . 'MauticFormBundle:Builder:script.html.php', ['form' => $form, 'theme' => $theme]);
     return $script;
 }
Esempio n. 3
0
 /**
  * @param $format
  * @param $form
  * @param $queryArgs
  *
  * @return StreamedResponse|Response
  *
  * @throws \Exception
  */
 public function exportResults($format, $form, $queryArgs)
 {
     $viewOnlyFields = $this->formModel->getCustomComponents()['viewOnlyFields'];
     $queryArgs['viewOnlyFields'] = $viewOnlyFields;
     $results = $this->getEntities($queryArgs);
     $translator = $this->translator;
     $date = (new DateTimeHelper())->toLocalString();
     $name = str_replace(' ', '_', $date) . '_' . $form->getAlias();
     switch ($format) {
         case 'csv':
             $response = new StreamedResponse(function () use($results, $form, $translator, $viewOnlyFields) {
                 $handle = fopen('php://output', 'r+');
                 //build the header row
                 $fields = $form->getFields();
                 $header = [$translator->trans('mautic.core.id'), $translator->trans('mautic.form.result.thead.date'), $translator->trans('mautic.core.ipaddress'), $translator->trans('mautic.form.result.thead.referrer')];
                 foreach ($fields as $f) {
                     if (in_array($f->getType(), $viewOnlyFields) || $f->getSaveResult() === false) {
                         continue;
                     }
                     $header[] = $f->getLabel();
                 }
                 //free memory
                 unset($fields);
                 //write the row
                 fputcsv($handle, $header);
                 //build the data rows
                 foreach ($results as $k => $s) {
                     $row = [$s['id'], $s['dateSubmitted']->format('Y-m-d H:i:s'), $s['ipAddress']['ipAddress'], $s['referer']];
                     foreach ($s['results'] as $k2 => $r) {
                         if (in_array($r['type'], $viewOnlyFields)) {
                             continue;
                         }
                         $row[] = $r['value'];
                         //free memory
                         unset($s['results'][$k2]);
                     }
                     fputcsv($handle, $row);
                     //free memory
                     unset($row, $results[$k]);
                 }
                 fclose($handle);
             });
             $response->headers->set('Content-Type', 'application/force-download');
             $response->headers->set('Content-Type', 'application/octet-stream');
             $response->headers->set('Content-Disposition', 'attachment; filename="' . $name . '.csv"');
             $response->headers->set('Expires', 0);
             $response->headers->set('Cache-Control', 'must-revalidate');
             $response->headers->set('Pragma', 'public');
             return $response;
         case 'html':
             $content = $this->templatingHelper->getTemplating()->renderResponse('MauticFormBundle:Result:export.html.php', ['form' => $form, 'results' => $results, 'pageTitle' => $name, 'viewOnlyFields' => $viewOnlyFields])->getContent();
             return new Response($content);
         case 'xlsx':
             if (class_exists('PHPExcel')) {
                 $response = new StreamedResponse(function () use($results, $form, $translator, $name, $viewOnlyFields) {
                     $objPHPExcel = new \PHPExcel();
                     $objPHPExcel->getProperties()->setTitle($name);
                     $objPHPExcel->createSheet();
                     //build the header row
                     $fields = $form->getFields();
                     $header = [$translator->trans('mautic.core.id'), $translator->trans('mautic.form.result.thead.date'), $translator->trans('mautic.core.ipaddress'), $translator->trans('mautic.form.result.thead.referrer')];
                     foreach ($fields as $f) {
                         if (in_array($f->getType(), $viewOnlyFields) || $f->getSaveResult() === false) {
                             continue;
                         }
                         $header[] = $f->getLabel();
                     }
                     //free memory
                     unset($fields);
                     //write the row
                     $objPHPExcel->getActiveSheet()->fromArray($header, null, 'A1');
                     //build the data rows
                     $count = 2;
                     foreach ($results as $k => $s) {
                         $row = [$s['id'], $s['dateSubmitted']->format('Y-m-d H:i:s'), $s['ipAddress']['ipAddress'], $s['referer']];
                         foreach ($s['results'] as $k2 => $r) {
                             if (in_array($r['type'], $viewOnlyFields)) {
                                 continue;
                             }
                             $row[] = $r['value'];
                             //free memory
                             unset($s['results'][$k2]);
                         }
                         $objPHPExcel->getActiveSheet()->fromArray($row, null, "A{$count}");
                         //free memory
                         unset($row, $results[$k]);
                         //increment letter
                         ++$count;
                     }
                     $objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
                     $objWriter->setPreCalculateFormulas(false);
                     $objWriter->save('php://output');
                 });
                 $response->headers->set('Content-Type', 'application/force-download');
                 $response->headers->set('Content-Type', 'application/octet-stream');
                 $response->headers->set('Content-Disposition', 'attachment; filename="' . $name . '.xlsx"');
                 $response->headers->set('Expires', 0);
                 $response->headers->set('Cache-Control', 'must-revalidate');
                 $response->headers->set('Pragma', 'public');
                 return $response;
             }
             throw new \Exception('PHPExcel is required to export to Excel spreadsheets');
         default:
             return new Response();
     }
 }
Esempio n. 4
0
 /**
  * Export report
  *
  * @param $format
  * @param $report
  * @param $reportData
  *
  * @return StreamedResponse|Response
  * @throws \Exception
  */
 public function exportResults($format, $report, $reportData)
 {
     $formatter = $this->formatterHelper;
     $date = (new DateTimeHelper())->toLocalString();
     $name = str_replace(' ', '_', $date) . '_' . InputHelper::alphanum($report->getName(), false, '-');
     switch ($format) {
         case 'csv':
             $response = new StreamedResponse(function () use($reportData, $report, $formatter) {
                 $handle = fopen('php://output', 'r+');
                 $header = [];
                 //build the data rows
                 foreach ($reportData['data'] as $count => $data) {
                     $row = [];
                     foreach ($data as $k => $v) {
                         if ($count === 0) {
                             //set the header
                             $header[] = $k;
                         }
                         $row[] = $formatter->_($v, $reportData['columns'][$reportData['dataColumns'][$k]]['type'], true);
                     }
                     if ($count === 0) {
                         //write the row
                         fputcsv($handle, $header);
                     } else {
                         fputcsv($handle, $row);
                     }
                     //free memory
                     unset($row, $reportData['data'][$count]);
                 }
                 fclose($handle);
             });
             $response->headers->set('Content-Type', 'application/force-download');
             $response->headers->set('Content-Type', 'application/octet-stream');
             $response->headers->set('Content-Disposition', 'attachment; filename="' . $name . '.csv"');
             $response->headers->set('Expires', 0);
             $response->headers->set('Cache-Control', 'must-revalidate');
             $response->headers->set('Pragma', 'public');
             return $response;
         case 'html':
             $content = $this->templatingHelper->getTemplating()->renderResponse('MauticReportBundle:Report:export.html.php', ['data' => $reportData['data'], 'columns' => $reportData['columns'], 'pageTitle' => $name, 'graphs' => $reportData['graphs'], 'report' => $report, 'dateFrom' => $reportData['dateFrom'], 'dateTo' => $reportData['dateTo']])->getContent();
             return new Response($content);
         case 'xlsx':
             if (class_exists('PHPExcel')) {
                 $response = new StreamedResponse(function () use($formatter, $reportData, $report, $name) {
                     $objPHPExcel = new \PHPExcel();
                     $objPHPExcel->getProperties()->setTitle($name);
                     $objPHPExcel->createSheet();
                     $header = [];
                     //build the data rows
                     foreach ($reportData['data'] as $count => $data) {
                         $row = [];
                         foreach ($data as $k => $v) {
                             if ($count === 0) {
                                 //set the header
                                 $header[] = $k;
                             }
                             $row[] = $formatter->_($v, $reportData['columns'][$reportData['dataColumns'][$k]]['type'], true);
                         }
                         //write the row
                         if ($count === 0) {
                             $objPHPExcel->getActiveSheet()->fromArray($header, null, 'A1');
                         } else {
                             $rowCount = $count + 1;
                             $objPHPExcel->getActiveSheet()->fromArray($row, null, "A{$rowCount}");
                         }
                         //free memory
                         unset($row, $reportData['data'][$count]);
                     }
                     $objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
                     $objWriter->setPreCalculateFormulas(false);
                     $objWriter->save('php://output');
                 });
                 $response->headers->set('Content-Type', 'application/force-download');
                 $response->headers->set('Content-Type', 'application/octet-stream');
                 $response->headers->set('Content-Disposition', 'attachment; filename="' . $name . '.xlsx"');
                 $response->headers->set('Expires', 0);
                 $response->headers->set('Cache-Control', 'must-revalidate');
                 $response->headers->set('Pragma', 'public');
                 return $response;
             }
             throw new \Exception('PHPExcel is required to export to Excel spreadsheets');
         default:
             return new Response();
     }
 }
Esempio n. 5
0
 /**
  * @param TemplatingHelper $templatingHelper
  */
 public function setTemplating(TemplatingHelper $templatingHelper)
 {
     $this->templating = $templatingHelper->getTemplating();
 }