Controller/AzineEmailTemplateController.php
public function webPreViewAction(Request $request, $template, $format = null)
    {
        if ('txt' !== $format) {
            $format = 'html';
        }

        $template = urldecode($template);

        $locale = $request->getLocale();

        // merge request vars with dummyVars, but make sure request vars remain as they are.
        $emailVars = array_merge(array(), $request->query->all());
        $emailVars = $this->get('azine_email_web_view_service')->getDummyVarsFor($template, $locale, $emailVars);
        $emailVars = array_merge($emailVars, $request->query->all());

        // add the styles
        $emailVars = $this->getTemplateProviderService()->addTemplateVariablesFor($template, $emailVars);

        // add the from-email for the footer-text
        if (!array_key_exists('fromEmail', $emailVars)) {
            $noReply = $this->getParameter('azine_email_no_reply');
            $emailVars['fromEmail'] = $noReply['email'];
            $emailVars['fromName'] = $noReply['name'];
        }

        // set the emailLocale for the templates
        $emailVars['emailLocale'] = $locale;

        // replace absolute image-paths with relative ones.
        $emailVars = $this->getTemplateProviderService()->makeImagePathsWebRelative($emailVars, $locale);

        // add code-snippets
        $emailVars = $this->getTemplateProviderService()->addTemplateSnippetsWithImagesFor($template, $emailVars, $locale);

        // render & return email
        $response = $this->renderResponse("$template.$format.twig", $emailVars);

        // add campaign tracking params
        $campaignParams = $this->getTemplateProviderService()->getCampaignParamsFor($template, $emailVars);
        $campaignParams['utm_medium'] = 'webPreview';
        if (sizeof($campaignParams) > 0) {
            $htmlBody = $response->getContent();
            $htmlBody = $this->get('azine.email.bundle.twig.filters')->addCampaignParamsToAllUrls($htmlBody, $campaignParams);

            $emailOpenTrackingCodeBuilder = $this->get('azine_email_email_open_tracking_code_builder');
            if ($emailOpenTrackingCodeBuilder) {
                // add an image at the end of the html tag with the tracking-params to track email-opens
                $imgTrackingCode = $emailOpenTrackingCodeBuilder->getTrackingImgCode($template, $campaignParams, $emailVars, 'dummy', 'dummy@from.email.com', null, null);
                if ($imgTrackingCode && strlen($imgTrackingCode) > 0) {
                    // replace the tracking url, so no request is made to the real tracking system.
                    $imgTrackingCode = str_replace('://', '://webview-dummy-domain.', $imgTrackingCode);
                    $htmlCloseTagPosition = strpos($htmlBody, '</html>');
                    $htmlBody = substr_replace($htmlBody, $imgTrackingCode, $htmlCloseTagPosition, 0);
                }
            }
            $response->setContent($htmlBody);
        }

        // if the requested format is txt, remove the html-part
        if ('txt' == $format) {
            // set the correct content-type
            $response->headers->set('Content-Type', 'text/plain');

            // cut away the html-part
            $content = $response->getContent();
            $textEnd = stripos($content, '<!doctype');
            $response->setContent(substr($content, 0, $textEnd));
        }

        return $response;
    }
public function webPreViewAction(Request $request, $template, $format = null)
    {
        if ('txt' !== $format) {
            $format = 'html';
        }

        $template = urldecode($template);

        $locale = $request->getLocale();

        // merge request vars with dummyVars, but make sure request vars remain as they are.
        $emailVars = array_merge(array(), $request->query->all());
        $emailVars = $this->get('azine_email_web_view_service')->getDummyVarsFor($template, $locale, $emailVars);
        $emailVars = array_merge($emailVars, $request->query->all());

        // add the styles
        $emailVars = $this->getTemplateProviderService()->addTemplateVariablesFor($template, $emailVars);

        // add the from-email for the footer-text
        if (!array_key_exists('fromEmail', $emailVars)) {
            $noReply = $this->getParameter('azine_email_no_reply');
            $emailVars['fromEmail'] = $noReply['email'];
            $emailVars['fromName'] = $noReply['name'];
        }

        // set the emailLocale for the templates
        $emailVars['emailLocale'] = $locale;

        // replace absolute image-paths with relative ones.
        $emailVars = $this->getTemplateProviderService()->makeImagePathsWebRelative($emailVars, $locale);

        // add code-snippets
        $emailVars = $this->getTemplateProviderService()->addTemplateSnippetsWithImagesFor($template, $emailVars, $locale);

        // render & return email
        $response = $this->renderResponse("$template.$format.twig", $emailVars);

        // add campaign tracking params
        $campaignParams = $this->getTemplateProviderService()->getCampaignParamsFor($template, $emailVars);
        $campaignParams['utm_medium'] = 'webPreview';
        if (sizeof($campaignParams) > 0) {
            $htmlBody = $response->getContent();
            $htmlBody = $this->get('azine.email.bundle.twig.filters')->addCampaignParamsToAllUrls($htmlBody, $campaignParams);

            $emailOpenTrackingCodeBuilder = $this->get('azine_email_email_open_tracking_code_builder');
            if ($emailOpenTrackingCodeBuilder) {
                // add an image at the end of the html tag with the tracking-params to track email-opens
                $imgTrackingCode = $emailOpenTrackingCodeBuilder->getTrackingImgCode($template, $campaignParams, $emailVars, 'dummy', 'dummy@from.email.com', null, null);
                if ($imgTrackingCode && strlen($imgTrackingCode) > 0) {
                    // replace the tracking url, so no request is made to the real tracking system.
                    $imgTrackingCode = str_replace('://', '://webview-dummy-domain.', $imgTrackingCode);
                    $htmlCloseTagPosition = strpos($htmlBody, '</html>');
                    $htmlBody = substr_replace($htmlBody, $imgTrackingCode, $htmlCloseTagPosition, 0);
                }
            }
            $response->setContent($htmlBody);
        }

        // if the requested format is txt, remove the html-part
        if ('txt' == $format) {
            // set the correct content-type
            $response->headers->set('Content-Type', 'text/plain');

            // cut away the html-part
            $content = $response->getContent();
            $textEnd = stripos($content, '<!doctype');
            $response->setContent(substr($content, 0, $textEnd));
        }

        return $response;
    }
public function webPreViewAction ( Request $ request , $ template , $ format = null ) { if ( 'txt' !== $ format ) { $ format = 'html' ; } $ template = urldecode ( $ template ) ; $ locale = $ request -> getLocale ( ) ; // merge request vars with dummyVars, but make sure request vars remain as they are. $ emailVars = array_merge ( array ( ) , $ request -> query -> all ( ) ) ; $ emailVars = $ this -> get ( 'azine_email_web_view_service' ) -> getDummyVarsFor ( $ template , $ locale , $ emailVars ) ; $ emailVars = array_merge ( $ emailVars , $ request -> query -> all ( ) ) ; // add the styles $ emailVars = $ this -> getTemplateProviderService ( ) -> addTemplateVariablesFor ( $ template , $ emailVars ) ; // add the from-email for the footer-text if ( ! array_key_exists ( 'fromEmail' , $ emailVars ) ) { $ noReply = $ this -> getParameter ( 'azine_email_no_reply' ) ; $ emailVars [ 'fromEmail' ] = $ noReply [ 'email' ] ; $ emailVars [ 'fromName' ] = $ noReply [ 'name' ] ; } // set the emailLocale for the templates $ emailVars [ 'emailLocale' ] = $ locale ; // replace absolute image-paths with relative ones. $ emailVars = $ this -> getTemplateProviderService ( ) -> makeImagePathsWebRelative ( $ emailVars , $ locale ) ; // add code-snippets $ emailVars = $ this -> getTemplateProviderService ( ) -> addTemplateSnippetsWithImagesFor ( $ template , $ emailVars , $ locale ) ; // render & return email $ response = $ this -> renderResponse ( "$template.$format.twig" , $ emailVars ) ; // add campaign tracking params $ campaignParams = $ this -> getTemplateProviderService ( ) -> getCampaignParamsFor ( $ template , $ emailVars ) ; $ campaignParams [ 'utm_medium' ] = 'webPreview' ; if ( sizeof ( $ campaignParams ) > 0 ) { $ htmlBody = $ response -> getContent ( ) ; $ htmlBody = $ this -> get ( 'azine.email.bundle.twig.filters' ) -> addCampaignParamsToAllUrls ( $ htmlBody , $ campaignParams ) ; $ emailOpenTrackingCodeBuilder = $ this -> get ( 'azine_email_email_open_tracking_code_builder' ) ; if ( $ emailOpenTrackingCodeBuilder ) { // add an image at the end of the html tag with the tracking-params to track email-opens $ imgTrackingCode = $ emailOpenTrackingCodeBuilder -> getTrackingImgCode ( $ template , $ campaignParams , $ emailVars , 'dummy' , 'dummy@from.email.com' , null , null ) ; if ( $ imgTrackingCode && strlen ( $ imgTrackingCode ) > 0 ) { // replace the tracking url, so no request is made to the real tracking system. $ imgTrackingCode = str_replace ( '://' , '://webview-dummy-domain.' , $ imgTrackingCode ) ; $ htmlCloseTagPosition = strpos ( $ htmlBody , '</html>' ) ; $ htmlBody = substr_replace ( $ htmlBody , $ imgTrackingCode , $ htmlCloseTagPosition , 0 ) ; } } $ response -> setContent ( $ htmlBody ) ; } // if the requested format is txt, remove the html-part if ( 'txt' == $ format ) { // set the correct content-type $ response -> headers -> set ( 'Content-Type' , 'text/plain' ) ; // cut away the html-part $ content = $ response -> getContent ( ) ; $ textEnd = stripos ( $ content , '<!doctype' ) ; $ response -> setContent ( substr ( $ content , 0 , $ textEnd ) ) ; } return $ response ; }
Show a web-preview-version of an email-template, filled with dummy-content.

@param string $format

@return Response
Show a web - preview - version of an email - template filled with dummy - content .