src/Controller/Master/ZCatchAllController.php line 624

Open in your IDE?
  1. <?php
  2. namespace App\Controller\Master;
  3. use App\Controller\Master\DefaultController as DefaultController;
  4. use Symfony\Component\Routing\Annotation\Route;
  5. use Symfony\Component\HttpFoundation\Request;
  6. use Symfony\Component\HttpFoundation\Response;
  7. use Symfony\Component\HttpFoundation\RedirectResponse;
  8. use App\Entity\User;
  9. use App\Entity\Lead;
  10. use App\Entity\OldEvents;
  11. use App\Utils\ContentHelper;
  12. use App\Utils\UserHelper;
  13. use App\Utils\EmailHelper;
  14. use App\Utils\LeadHelper;
  15. use App\Utils\MediaHelper;
  16. use App\Utils\PollHelper;
  17. use App\Exception\ResourceNotFoundException;
  18. class ZCatchAllController extends DefaultController
  19. {
  20.     /**
  21.      * @Route("/{slug}/{slug2}", 
  22.      *      name="postall", 
  23.      *      methods={"POST"},
  24.      *      defaults={"slug": "", "slug2": ""})
  25.      * )
  26.      */
  27.      /* *
  28.      * @Route("/{slug}/{slug2}", 
  29.      *      name="postall", 
  30.      *      methods={"POST"},
  31.      *      defaults={"slug": "", "slug2": ""},
  32.      *        requirements={"slug": "^(?!admin).+"})
  33.      * )
  34.      */
  35.     public function catchAllPost (
  36.         Request $request,
  37.         UserHelper $userHelper,
  38.         EmailHelper $emailHelper,
  39.         ContentHelper $contentHelper,
  40.         LeadHelper $leadHelper,
  41.         MediaHelper $mediaHelper,
  42.         $slug "",
  43.         $slug2 ""
  44.     ) {
  45.         // good place to check any form modules ... check their action
  46.         $action $request->get("action");
  47.         $redirectPath $request->get("redirectPath");
  48.         $session $request->getSession();
  49.         
  50.         // find where to redirect back to
  51.         $thisRoute $session->get("this_route");
  52.         $lastRoute $session->get("last_route");
  53.         $path "";
  54.         
  55.         if($redirectPath) {
  56.             $path $redirectPath;
  57.         }
  58.         else {
  59.             if (isset($lastRoute["path"])) {
  60.                 $path $lastRoute["path"];
  61.             } /* else if (isset($thisRoute["path"])) {
  62.                 $path = $thisRoute["path"];
  63.             } */ else {
  64.                 $path $_SERVER["HTTP_REFERER"];
  65.             }
  66.         }
  67.         
  68.         if (!$path) {
  69.             $path "/";
  70.         }
  71.         
  72.         if ($action) {
  73.             switch ($action) {
  74.                 case "sign-in":
  75.                     $username $request->get("username");
  76.                     $password $request->get("password");
  77.                     $result $userHelper->signIn(
  78.                         $username
  79.                         $password,
  80.                         $this->get("security.token_storage"),
  81.                         $this->get("event_dispatcher")
  82.                     );
  83.                     if(is_array($result)) {
  84.                         return new RedirectResponse("/mfa/{$result['uid']}/{$result['token']}");
  85.                     }
  86.                     elseif ($result) {
  87.                         $this->addFlash("success""You have successfully logged in.");
  88.                     } else {
  89.                         $this->addFlash("warning""Invalid credentials provided.");
  90.                     }
  91.                     
  92.                     return new RedirectResponse($path);
  93.                     
  94.                 /* //No longer used
  95.                 case "rcs-sign-up":
  96.                     $username = $request->get("username");
  97.                     $email = $request->get("email");
  98.                     $password1 = $request->get("password1");
  99.                     $password2 = $request->get("password2");
  100.                     
  101.                     $resp = $userHelper->signUp($username, $email, $password1, $password2);
  102.                     if ($resp["status"]) {
  103.                         $this->addFlash("success", $resp["message"]["text"]);
  104.                     } else {
  105.                         $this->addFlash("warning", $resp["message"]["text"]);
  106.                     }
  107.                     
  108.                     return new RedirectResponse($path);
  109.                     */
  110.                     
  111.                 case "reset-password":
  112.                     $email $request->get("email");
  113.                     $resp $userHelper->forgotPassword($email);
  114.                     
  115.                     if ($resp["status"]) {
  116.                         $this->addFlash("success"$resp["message"]);
  117.                     } else {
  118.                         $this->addFlash("warning"$resp["message"]);
  119.                     }
  120.                     
  121.                     return new RedirectResponse($path);
  122.                     
  123.                 case "forgot-username":
  124.                     $email $request->get("email");
  125.                     $resp $userHelper->forgotUsername($email);
  126.                     
  127.                     if ($resp["status"]) {
  128.                         $this->addFlash("success"$resp["message"]);
  129.                     } else {
  130.                         $this->addFlash("warning"$resp["message"]);
  131.                     }
  132.                     
  133.                     return new RedirectResponse($path);
  134.                     
  135.                 case "resend-activation":
  136.                     $email $request->get("email");
  137.                     $resp $userHelper->sendActivation($email);
  138.                     
  139.                     if ($resp["status"]) {
  140.                         $this->addFlash("success"$resp["message"]);
  141.                     } else {
  142.                         $this->addFlash("warning"$resp["message"]);
  143.                     }
  144.                     
  145.                     return new RedirectResponse($path);
  146.             }
  147.         }
  148.         else {
  149.             
  150.             switch ($slug) {
  151.                 case "sign-up":
  152.                     // no longer used
  153.                     $lead $request->get("lead");
  154.                     
  155.                     $firstname $lead["firstname"];
  156.                     $lastname $lead["lastname"];
  157.                     $email $lead["email"];
  158.                     $company $lead["company"];
  159.                     $contractor_type $lead["contractor_type"];
  160.                     $country = ($lead["country"] == "Other" $lead["country_other"] : $lead["country"]);
  161.                     $business_type $lead["business_type"];
  162.                     
  163.                     if(!$emailHelper->checkCaptcha($request->get("g-recaptcha-response"))) {
  164.                         //temp2-5
  165.                         //$this->addFlash("danger", "The reCAPTCHA was invalid. Please try again.");
  166.                         return new RedirectResponse($request->headers->get('referer'));
  167.                     }
  168.                     
  169.                     if(empty($email) || filter_var($emailFILTER_VALIDATE_EMAIL) === false){
  170.                         $this->addFlash("danger""Please enter a valid email address. - adam");
  171.                         return new RedirectResponse($request->headers->get('referer'));
  172.                     }
  173.                     
  174.                     try {
  175.                         //add to mailchimp list
  176.                         
  177.                         // MailChimp API credentials
  178.                         $apiKey "27ce559264a47aa3487224e1c95424bc-us10";
  179.                         $listID "3efdbc4139";
  180.                         
  181.                         // MailChimp API URL
  182.                         $memberID md5(strtolower($email));
  183.                         $dataCenter substr($apiKey,strpos($apiKey,'-')+1);
  184.                         $url 'https://' $dataCenter '.api.mailchimp.com/3.0/lists/' $listID '/members/' $memberID;
  185.                         
  186.                         // member information
  187.                         $json json_encode([
  188.                             'email_address' => $email,
  189.                             'status'        => 'subscribed',
  190.                             'merge_fields'  => [
  191.                                 'FNAME'     => $firstname,
  192.                                 'LNAME'     => $lastname,
  193.                                 'MMERGE3'    => $company,
  194.                                 'MMERGE4'    => $contractor_type,
  195.                                 'MMERGE5'    => $business_type
  196.                             ]
  197.                         ]);
  198.                         
  199.                         // send a HTTP POST request with curl
  200.                         $ch curl_init($url);
  201.                         curl_setopt($chCURLOPT_USERPWD'user:' $apiKey);
  202.                         curl_setopt($chCURLOPT_HTTPHEADER, ['Content-Type: application/json']);
  203.                         curl_setopt($chCURLOPT_RETURNTRANSFERtrue);
  204.                         curl_setopt($chCURLOPT_TIMEOUT10);
  205.                         curl_setopt($chCURLOPT_CUSTOMREQUEST'PUT');
  206.                         curl_setopt($chCURLOPT_SSL_VERIFYPEERfalse);
  207.                         curl_setopt($chCURLOPT_POSTFIELDS$json);
  208.                         $result curl_exec($ch);
  209.                         $httpCode curl_getinfo($chCURLINFO_HTTP_CODE);
  210.                         curl_close($ch);
  211.                         
  212.                         if ($httpCode != 200) {
  213.                             $httpErrorCode $httpCode;
  214.                         }
  215.                         
  216.                         // end mailchimp
  217.                         
  218.                         
  219.                         //send email
  220.                         $emailHelper->sendEmail(
  221.                             ["rcs@rooferscoffeeshop.com"],
  222.                             "New submission from the \"Week in Roofing\" sign-up form.",
  223.                             [
  224.                                 ["p" => "New submission from the \"Week in Roofing\" sign-up form."],
  225.                                 ["table" => [
  226.                                     "First Name" => $firstname,
  227.                                     "Last Name" => $lastname,
  228.                                     "Email Address" => $email,
  229.                                     "Company" => $company,
  230.                                     "Country" => $country,
  231.                                     "Type of Work" => $contractor_type,
  232.                                     "Type of Business" => $business_type,
  233.                                 ]],
  234.                             ]
  235.                         );
  236.                         
  237.                         // store the lead
  238.                         $content $contentHelper->getContentBySlugRaw($slug);
  239.                         
  240.                         $lead $leadHelper->saveLead($lead$content$request);
  241.                         
  242.                         if(isset($httpErrorCode)) {
  243.                             $lead->setComments("MailChimp http code: {$httpErrorCode}");
  244.                         }
  245.                         
  246.                         $em $this->getDoctrine()->getManager();
  247.                         $em->persist($lead);
  248.                         $em->flush();
  249.                         
  250.                         if(isset($httpErrorCode)) {
  251.                             $this->addFlash("warning""An error occurred while attempting to add you to our mailing list. Please try again later.");
  252.                             return new RedirectResponse($request->headers->get('referer'));
  253.                         }
  254.                         
  255.                         $this->addFlash("success""Thank you for signing up for the RCS Week in Roofing.");
  256.                         return new RedirectResponse($request->headers->get('referer'));
  257.                         
  258.                     }
  259.                     
  260.                     catch (\Exception $e) {
  261.                         $this->addFlash("warning""An error occurred while attempting to add you to our mailing list. Please try again later.");
  262.                         return new RedirectResponse($request->headers->get('referer'));
  263.                     }
  264.                         
  265.                     break;
  266.                     
  267.                 
  268.                 case "contact-us":
  269.                     if($emailHelper->checkCaptcha($request->get("g-recaptcha-response"))) {
  270.                         $contact $request->get("contact");
  271.                         
  272.                         $firstname $contact["firstname"];
  273.                         $lastname $contact["lastname"];
  274.                         $email $contact["email"];
  275.                         $state $contact["state"];
  276.                         $zip $contact["zip"];
  277.                         $subject $contact["subject"];
  278.                         $message $contact["message"];
  279.                         
  280.                         if( $contentHelper->isSpam($message) ||  $contentHelper->isSpam($subject) ||  $contentHelper->isSpam($email) ) {
  281.                             //$this->addFlash("danger", "Invalid characters used.");
  282.                             return new RedirectResponse($request->headers->get('referer'));
  283.                         }
  284.                         
  285.                         if(!filter_var($emailFILTER_VALIDATE_EMAIL)) {
  286.                             $this->addFlash("danger""The provided e-mail address is invalid.");
  287.                             return new RedirectResponse($request->headers->get('referer'));
  288.                         }
  289.                         
  290.                         try {
  291.                             
  292.                             $leadHelper->saveLead($contactnull$request);
  293.                             
  294.                             $emailHelper->sendEmail(
  295.                                 ["rcs@rooferscoffeeshop.com"],
  296.                                 "Contact Form Received",
  297.                                 [
  298.                                     ["p" => "Contact Form Received"],
  299.                                     ["table" => [
  300.                                         "First Name" => $firstname,
  301.                                         "Last Name" => $lastname,
  302.                                         "Email Address" => $email,
  303.                                         "State / Region" => $state,
  304.                                         "ZIP / Postal Code" => $zip,
  305.                                         "Subject" => $subject,
  306.                                         "Message" => $message,
  307.                                     ]],
  308.                                 ]
  309.                             );
  310.                             
  311.                             
  312.                             $this->addFlash("success""Thanks for contacting us! We will get in touch with you shortly.");
  313.                             return new RedirectResponse($request->headers->get('referer'));
  314.                         }
  315.                         
  316.                         catch (ResourceNotFoundException $e) {
  317.                             
  318.                         }
  319.                     }
  320.                     else {
  321.                         //temp2-5
  322.                         //$this->addFlash("danger", "The reCAPTCHA was invalid. Please try again.");
  323.                         return new RedirectResponse($request->headers->get('referer'));
  324.                     }
  325.                     
  326.                     break;
  327.                     
  328.                 case "membership":
  329.                     if($emailHelper->checkCaptcha($request->get("g-recaptcha-response"))) {
  330.                         $contact $request->get("contact");
  331.                         
  332.                         $firstname $contact["firstname"];
  333.                         $lastname $contact["lastname"];
  334.                         $phone $contact["phone"];
  335.                         $email $contact["email"];
  336.                         
  337.                         try {
  338.                         
  339.                             $emailHelper->sendEmail(
  340.                                 ["rcs@rooferscoffeeshop.com"],
  341.                                 "Contact Form Received",
  342.                                 [
  343.                                     ["p" => "Membership Pre-Registration Received"],
  344.                                     ["table" => [
  345.                                         "First Name" => $firstname,
  346.                                         "Last Name" => $lastname,
  347.                                         "Phone" => $phone,
  348.                                         "Email Address" => $email,
  349.                                     ]],
  350.                                 ]
  351.                             );
  352.                             
  353.                             $lead = new Lead();
  354.                             $lead->setFirstname($firstname);
  355.                             $lead->setLastname($lastname);
  356.                             $lead->setPhoneBusiness($phone);
  357.                             $lead->setEmail($email);
  358.                             
  359.                             $lead->setIpAddress($request->getClientIp());
  360.                             $lead->setRefUrl($request->headers->get("referer"));
  361.                             $lead->setUserAgent($request->headers->get("User-Agent"));
  362.                             $content $contentHelper->getContentBySlugRaw($slug);
  363.                             $lead->setContent($content);
  364.                             
  365.                             $em $this->getDoctrine()->getManager();
  366.                             $em->persist($lead);
  367.                             $em->flush();
  368.                             
  369.                             
  370.                             $this->addFlash("success""Thanks for pre-registering! We will get in touch with you shortly.");
  371.                             return new RedirectResponse($request->headers->get('referer'));
  372.                         }
  373.                         
  374.                         catch (ResourceNotFoundException $e) {
  375.                             
  376.                         }
  377.                     }
  378.                     else {
  379.                         //temp2-5
  380.                         //$this->addFlash("danger", "The reCAPTCHA was invalid. Please try again.");
  381.                         return new RedirectResponse($request->headers->get('referer'));
  382.                     }
  383.                     
  384.                     break;
  385.                     
  386.                 // since the following forms are all the same, should make a function like submitLandingPage in Content Controller to deal with them
  387.                 // temporarily copy pasting for each case
  388.                 case "trends-report-results":
  389.                     if($emailHelper->checkCaptcha($request->get("g-recaptcha-response"))) {
  390.                         $l $request->get("lead");
  391.                         
  392.                         $content $contentHelper->getContentBySlugRaw($slug);
  393.                         
  394.                         $leadHelper->saveLead($l$content$request);
  395.                         
  396.                         try {
  397.                         
  398.                             $emailHelper->sendEmail(
  399.                                 ["rcs@rooferscoffeeshop.com"],
  400.                                 "Lead Received - Trends Report Results",
  401.                                 [
  402.                                     ["p" => "Lead received from the Trends Report form"],
  403.                                     ["table" => [
  404.                                         "First Name" => $l["firstname"],
  405.                                         "Last Name" => $l["lastname"],
  406.                                         "Company" => $l["company"],
  407.                                         "Phone Number" => $l["phone"],
  408.                                         "Email Address" => $l["email"],
  409.                                         "Contractor Type" => $l["contractor_type"],
  410.                                     ]],
  411.                                 ]
  412.                             );
  413.                             
  414.                             
  415.                             return $this->redirect("/download-trends-report-results");
  416.                         }
  417.                         
  418.                         catch (ResourceNotFoundException $e) {
  419.                             
  420.                         }
  421.                     }
  422.                     else {
  423.                         //temp2-5
  424.                         //$this->addFlash("danger", "The reCAPTCHA was invalid. Please try again.");
  425.                         return new RedirectResponse($request->headers->get('referer'));
  426.                     }
  427.                     
  428.                     break;
  429.                     
  430.                 case "advertise-on-rcs":
  431.                     if($emailHelper->checkCaptcha($request->get("g-recaptcha-response"))) {
  432.                         $l $request->get("lead");
  433.                         
  434.                         $content $contentHelper->getContentBySlugRaw($slug);
  435.                         
  436.                         $leadHelper->saveLead($l$content$request);
  437.                         $media_kit = [];
  438.                         //$media_kit[] = $mediaHelper->getMediaById(35745);
  439.                         $media_kit[] = ["path" => "https://www.rooferscoffeeshop.com/uploads/media/2023/08/2024-coffee-shops-media-kit.pdf""file_name" => "RCS-2024-MediaKit.pdf"];
  440.                         
  441.                         try {
  442.                             $emailHelper->sendEmail(
  443.                                 [$l["email"]],
  444.                                 "RoofersCoffeeShop Media Kit",
  445.                                 [
  446.                                     ["p" => "Thank you for requesting the RoofersCoffeeShop Media Kit. Please find a copy for reference attached to this email."],
  447.                                     ["p" => "RoofersCoffeeShop is an online community for roofing contractors and roofing industry professionals. <b>We are a sponsored content site</b> and publish articles and news from our advertisers, in addition to our original industry news and articles. Our goal is to partner with you to leverage our website and connections so you can achieve your company objectives."],
  448.                                     ["p" => "If you would like to speak with us to learn more about how RoofersCoffeeShop can help you meet your goals, please contact <a href='mailto:james@rooferscoffeeshop.com'>james@rooferscoffeeshop.com</a> to schedule a call with our CEO, Heidi Ellsworth."],
  449.                                     ["p" => "Thank you so much!"],
  450.                                 ], [], """"""$media_kitnull, ["james@rooferscoffeeshop.com" => "James Ellsworth"]
  451.                             );
  452.                         //], [], "", "", "", $media_kit, null, ["test@rooferscoffeeshop.com" => "RoofersCoffeeShop Test"]
  453.                             
  454.                             $emailHelper->sendEmail(
  455.                                 ["rcs@rooferscoffeeshop.com"],
  456.                                 "Lead Received - Media Kit Download",
  457.                                 [
  458.                                     ["p" => "Lead received from the Media Kit download form"],
  459.                                     ["table" => [
  460.                                         "First Name" => $l["firstname"],
  461.                                         "Last Name" => $l["lastname"],
  462.                                         "Company" => $l["company"],
  463.                                         "Phone Number" => $l["phone"],
  464.                                         "Email Address" => $l["email"],
  465.                                         "Contractor Type" => $l["contractor_type"],
  466.                                     ]],
  467.                                 ]
  468.                             );
  469.                             
  470.                             
  471.                             return $this->redirect("/media-kit");
  472.                         }
  473.                         
  474.                         catch (ResourceNotFoundException $e) {
  475.                             
  476.                         }
  477.                     }
  478.                     else {
  479.                         //temp2-5
  480.                         //$this->addFlash("danger", "The reCAPTCHA was invalid. Please try again.");
  481.                         return new RedirectResponse($request->headers->get('referer'));
  482.                     }
  483.                     
  484.                     break;
  485.                     
  486.                 case "respect":
  487.                 case "order-look-bumper-sticker":
  488.                     if($emailHelper->checkCaptcha($request->get("g-recaptcha-response"))) {
  489.                         $l $request->get("lead");
  490.                         
  491.                         $content $contentHelper->getContentBySlugRaw($slug);
  492.                         
  493.                         $leadHelper->saveLead($l$content$request);
  494.                         
  495.                         
  496.                         try {
  497.                             $emailHelper->sendEmail(
  498.                                 ["rcs@rooferscoffeeshop.com"],
  499.                                 "Roofing Respect Sticker Request",
  500.                                 [
  501.                                     ["p" => "New submission received from the Roofing Respect Sticker request form."],
  502.                                     ["table" => [
  503.                                         "First Name" => $l["firstname"],
  504.                                         "Last Name" => $l["lastname"],
  505.                                         "Company" => $l["company"],
  506.                                         "Phone Number" => $l["phone"],
  507.                                         "Email Address" => $l["email"],
  508.                                         "Street Address" => $l["address1"],
  509.                                         "Address Line 2" => $l["address2"],
  510.                                         "City" => $l["city"],
  511.                                         "State / Providence / Region" => $l["state"],
  512.                                         "ZIP / Postal Code" => $l["zip"],
  513.                                         "Contractor Type" => $l["contractor_type"],
  514.                                     ]],
  515.                                 ]
  516.                             );
  517.                             
  518.                             return $this->redirect("/thank-you-bumper-sticker");
  519.                         }
  520.                         
  521.                         catch (ResourceNotFoundException $e) {
  522.                             
  523.                         }
  524.                     }
  525.                     else {
  526.                         //temp2-5
  527.                         //$this->addFlash("danger", "The reCAPTCHA was invalid. Please try again.");
  528.                         return new RedirectResponse($request->headers->get('referer'));
  529.                     }
  530.                     
  531.                     break;
  532.             }
  533.         }
  534.         
  535.         
  536.         
  537.         // set flash message
  538.         $this->addFlash("warning""Content with slug: {$slug} not found.");
  539.         // if reached - redirect to 404
  540.         return $this->redirectToRoute("404");
  541.     }
  542.     
  543.     /**
  544.      * @Route("/{slug}/{slug2}", 
  545.      *      name="catchall",
  546.      *      requirements={"slug"="^([^_/])+$"},
  547.      *      defaults={"slug": "home", "slug2": ""},
  548.      *        )
  549.      * )
  550.      */
  551.      /* *
  552.      * @Route("/{slug}/{slug2}", 
  553.      *      name="catchall",
  554.      *      requirements={"slug"="^([^_/])(?!admin)+$"},
  555.      *      defaults={"slug": "home", "slug2": ""},
  556.      *        )
  557.      * )
  558.      */
  559.     public function catchAllGet(
  560.         Request $request,
  561.         ContentHelper $helper
  562.         PollHelper $pollHelper
  563.         $slug "home",
  564.         $slug2 ""
  565.     ) {
  566.         
  567.         $gaplg $request->get("gaplg");
  568.         if ($gaplg) {
  569.             $event $this->getDoctrine()->getRepository(OldEvents::class)
  570.                 ->findOneBy([
  571.                     "old_id" => $gaplg,
  572.                 ]);
  573.                 
  574.             $url $event->getUrl();
  575.             if ($url) {
  576.                 return new RedirectResponse($url);
  577.             }
  578.         }
  579.         
  580.         if($slug == "home") {
  581.             $poll $pollHelper->getActivePoll();
  582.             $isActivePoll = !is_null($poll);
  583.             $home_content $helper->getStaticPageBySlug("static-rcs-home");
  584.             if($home_content) {
  585.                 $home_content $home_content->getContentFull();
  586.             }
  587.             // TODO: Make this better --  @eric -- do you have a plan to make this more dynamc
  588.             return $this->defaultRender("homepages/rcs-home.html.twig", [
  589.                 "isActivePoll" => $isActivePoll,
  590.                 "dynamic_content" => $home_content,
  591.              ]);
  592.         }
  593.         
  594.         // the user tried to access the admin section from /admin instead of /admin/
  595.         if ($slug == "admin") {
  596.             return $this->redirect("/admin/");
  597.         }
  598.         $classifiedAdPages = array("classified-ads-faqs""classified-policy");
  599.       
  600.         $rlwAdPages = array("read-listen-watch""learning-listening""podcasts""podcasts/partner-podcast""rcs-webinar-series""partner-webinars""upcoming-industry-webinars""videos""ebooks""coffee-conversations""coffee-break");
  601.         if (in_array($slug$classifiedAdPages)) {
  602.           $adPage "classified"
  603.         }elseif (in_array($slug$rlwAdPages)) {
  604.           $adPage "rlw"
  605.         }else {
  606.           $adPage "nope";
  607.         }
  608.       
  609.         
  610.         try {
  611.             
  612.             $breadcrumbs = [];
  613.             
  614.             if ($slug2) {
  615.                 $temp $helper->getPageBySlug($slug);
  616.                 $breadcrumbs[] = [
  617.                     "title" => $temp->getTitle(),
  618.                     "href" => "/{$slug}",
  619.                 ];
  620.                 
  621.                 $page $helper->getPageBySlug($slug2);
  622.                 $slug2 "/{$slug2}";
  623.             } else {
  624.                 $page $helper->getPageBySlug($slug);
  625.             }
  626.             
  627.             //Members only check
  628.             if($page->getMembersOnly() && (!$this->user || (!$this->user->isMember() && !$this->user->isAdmin()))) {
  629.                 $this->addFlash("warning""This page is only accessible to RCS Club members. Continue below to become a member and access this page.");
  630.                 return $this->redirectToRoute("rcs-club-sign-up");
  631.             }
  632.             
  633.             $breadcrumbs[] = [
  634.                 "title" => $page->getTitle(),
  635.                 "href" => "/{$slug}{$slug2}",
  636.             ];
  637.             return $this->defaultRender("content/content.html.twig", [
  638.                 "content" => $page,
  639.                 "meta" => [
  640.                       "title" => $page->getTitle(),
  641.                     "breadcrumbs" => $breadcrumbs,
  642.                     "adGroup" => $adPage
  643.                  
  644.             ]);
  645.         } 
  646.         
  647.         catch (ResourceNotFoundException $e) {
  648.             
  649.             throw $e;
  650.             
  651.             
  652.             $response = new Response();
  653.             $response->setStatusCode("404");
  654.             
  655.             return $this->defaultRender("errors/404.html.twig", [
  656.                 "meta" => [
  657.                     "title" => "Page Not Found",
  658.                 ],
  659.             ], $response);
  660.         }
  661.     }
  662.     
  663. }