HEX
Server: Apache/2.4.52 (Ubuntu)
System: Linux spn-python 5.15.0-89-generic #99-Ubuntu SMP Mon Oct 30 20:42:41 UTC 2023 x86_64
User: arjun (1000)
PHP: 8.1.2-1ubuntu2.20
Disabled: NONE
Upload Files
File: //var/www/html/WPSassoon/wp-content/themes/sassoon/functions.php
<?php
function handle_contact_form_submission() {
    if (!isset($_POST['fname'],  $_POST['pnum'], $_POST['mailid'], $_POST['msg'])) {
        echo "<p style='color:red;'>All fields are required!</p>";
        wp_die();
    }

    $fname  = sanitize_text_field($_POST['fname']);
    $lname  = sanitize_text_field($_POST['lname']);
    $name   =   $fname.' '.$lname;
    $phone   = sanitize_text_field($_POST['pnum']);
    $email = sanitize_email($_POST['mailid']);
    $message    = sanitize_textarea_field($_POST['msg']);


    // Send Email
    $to      = get_option('admin_email'); // Admin Email
    $subject = "New Contact Form Submission";
    $message = "<!DOCTYPE html>
<html lang='en' xmlns='http://www.w3.org/1999/xhtml' xmlns:v='urn:schemas-microsoft-com:vml' xmlns:o='urn:schemas-microsoft-com:office:office'>
<head>
    <meta charset='utf-8'> <!-- utf-8 works for most cases -->
    <meta name='viewport' content='width=device-width'> <!-- Forcing initial-scale shouldn't be necessary -->
    <meta http-equiv='X-UA-Compatible' content='IE=edge'> <!-- Use the latest (edge) version of IE rendering engine -->
    <meta name='x-apple-disable-message-reformatting'>  <!-- Disable auto-scale in iOS 10 Mail entirely -->
    <meta name='format-detection' content='telephone=no,address=no,email=no,date=no,url=no'> <!-- Tell iOS not to automatically link certain text strings. -->
    <meta name='color-scheme' content='light'>
    <meta name='supported-color-schemes' content='light'>
    <title>Welcome</title> <!-- The title tag shows in email notifications, like Android 4.4. -->

    <!-- What it does: Makes background images in 72ppi Outlook render at correct size. -->
    <!--[if gte mso 9]>
    <xml>
        <o:OfficeDocumentSettings>
            <o:AllowPNG/>
            <o:PixelsPerInch>96</o:PixelsPerInch>
        </o:OfficeDocumentSettings>
    </xml>
    <![endif]-->

    <!-- Web Font / @font-face : BEGIN -->
    <link href='https://fonts.googleapis.com/css2?family=Poppins:wght@300;400;500;600;700&display=swap' rel='stylesheet'>
    <!-- All other clients get the webfont reference; some will render the font and others will silently fail to the fallbacks. More on that here: http://stylecampaign.com/blog/2015/02/webfont-support-in-email/ -->
    <!--[if !mso]>
        <link href='https://fonts.googleapis.com/css2?family=Poppins:wght@300;400;500;600;700&display=swap' rel='stylesheet'>
    <![endif]-->

    <!-- Desktop Outlook chokes on web font references and defaults to Times New Roman, so we force a safe fallback font. -->
    <!--[if mso]>
        <style>
            *, body,div,p,a ,h1,h2,h3,h4,h5,h6, table, td, th {
                font-family: 'Poppins', sans-serif;
            }
        </style>
    <![endif]-->

    <!-- Web Font / @font-face : END -->

    <!-- CSS Reset : BEGIN -->
    <style>

        :root {
          color-scheme: light;
          supported-color-schemes: light;
        }
      html,
        body {
            margin: 0 auto !important;
            padding: 0 !important;
            height: 100% !important;
            width: 100% !important;
        }

        * {
            -ms-text-size-adjust: 100%;
            -webkit-text-size-adjust: 100%;
        }

        /* What it does: Centers email on Android 4.4 */
        div[style*='margin: 16px 0'] {
            margin: 0 !important;
        }
        /* What it does: forces Samsung Android mail clients to use the entire viewport */
        #MessageViewBody, #MessageWebViewDiv{
            width: 100% !important;
        }

        /* What it does: Stops Outlook from adding extra spacing to tables. */
        table,
        td {
            mso-table-lspace: 0pt !important;
            mso-table-rspace: 0pt !important;
        }

        /* What it does: Fixes webkit padding issue. */
        table {
            border-spacing: 0 !important;
            border-collapse: collapse !important;
            table-layout: fixed !important;
            margin: 0 auto !important;
        }

        /* What it does: Uses a better rendering method when resizing images in IE. */
        img {
            -ms-interpolation-mode:bicubic;
        }

        /* What it does: Prevents Windows 10 Mail from underlining links despite inline CSS. Styles for underlined links should be inline. */
        a {
            text-decoration: none;
        }

        /* What it does: A work-around for email clients meddling in triggered links. */
        a[x-apple-data-detectors],  /* iOS */
        .unstyle-auto-detected-links a,
        .aBn {
            border-bottom: 0 !important;
            cursor: default !important;
            color: inherit !important;
            text-decoration: none !important;
            font-size: inherit !important;
            font-family: inherit !important;
            font-weight: inherit !important;
            line-height: inherit !important;
        }

        /* What it does: Prevents Gmail from changing the text color in conversation threads. */
        .im {
            color: inherit !important;
        }

        /* What it does: Prevents Gmail from displaying a download button on large, non-linked images. */
        .a6S {
            display: none !important;
            opacity: 0.01 !important;
        }
        /* If the above doesn't work, add a .g-img class to any image in question. */
        img.g-img + div {
            display: none !important;
        }

        /* What it does: Removes right gutter in Gmail iOS app: https://github.com/TedGoas/Cerberus/issues/89  */
        /* Create one of these media queries for each additional viewport size you'd like to fix */

        /* iPhone 4, 4S, 5, 5S, 5C, and 5SE */
        @media only screen and (min-device-width: 320px) and (max-device-width: 374px) {
            u ~ div .email-container {
                min-width: 320px !important;
            }
        }
        /* iPhone 6, 6S, 7, 8, and X */
        @media only screen and (min-device-width: 375px) and (max-device-width: 413px) {
            u ~ div .email-container {
                min-width: 375px !important;
            }
        }
        /* iPhone 6+, 7+, and 8+ */
        @media only screen and (min-device-width: 414px) {
            u ~ div .email-container {
                min-width: 414px !important;
            }
        }

    </style>
    <!-- CSS Reset : END -->

    <!-- Progressive Enhancements : BEGIN -->
    <style>
        @media screen and (max-width: 579px) {
            .name-block{
                width: 100% !important;
                margin-left: 0 !important;
            }
            .inner-td{
                padding: 20px !important;
            }
        }
        

	    /* Media Queries */
	    @media screen and (max-width: 480px) {
	        /* What it does: Forces table cells into full-width rows. */
	        .stack-column,
	        .stack-column-center {
	            display: block !important;
	            width: 100% !important;
	            max-width: 100% !important;
	            direction: ltr !important;
	        }
	        /* And center justify these ones. */
	        .stack-column-center {
	            text-align: center !important;
	        }

	        /* What it does: Generic utility class for centering. Useful for images, buttons, and nested tables. */
	        .center-on-narrow {
	            text-align: center !important;
	            display: block !important;
	            margin-left: auto !important;
	            margin-right: auto !important;
	            float: none !important;
	        }
	        table.center-on-narrow {
	            display: inline-block !important;
	        }

	        /* What it does: Adjust typography on small screens to improve readability */
	    }

    </style>
    <!-- Progressive Enhancements : END -->


    <!-- MSO dark mode fix :  use the class name for texts to remain in white -->
    <!--[if mso ]>
    <style>
        a{
            line-height: normal !important;
            text-decoration: none !important;
        }
        .ms-whiteX {
            mso-style-textfill-type:gradient;
            mso-style-textfill-fill-gradientfill-stoplist:'0 \#FFFFFF 0 100000\,100000 \#FFFFFF 0 100000';
        }
    </style>
    <![endif]-->

</head>
<!--
	The email background color (#ECF3FE) is defined in three places:
	1. body tag: for most email clients
	2. center tag: for Gmail and Inbox mobile apps and web versions of Gmail, GSuite, Inbox, Yahoo, AOL, Libero, Comcast, freenet, Mail.ru, Orange.fr
	3. mso conditional: For Windows 10 Mail
-->
<body width='100%' style='margin: 0; padding: 0 !important; mso-line-height-rule: exactly; background-color: #fff;'>
  <center role='article' aria-roledescription='email' lang='en' style='width: 100%; background-color: #fff;'>
    <!--[if mso | IE]>
    <table role='presentation' border='0' cellpadding='0' cellspacing='0' width='100%' style='background-color: #ECF3FE;'>
    <tr>
    <td>
    <![endif]-->

        <!-- Create white space after the desired preview text so email clients don’t pull other distracting text into the inbox preview. Extend as necessary. -->
        <!-- Preview Text Spacing Hack : BEGIN -->
        <div style='display: none; font-size: 1px; line-height: 1px; max-height: 0px; max-width: 0px; opacity: 0; overflow: hidden; mso-hide: all; font-family: 'Prompt',  sans-serif;'>
	        &zwnj;&nbsp;&zwnj;&nbsp;&zwnj;&nbsp;&zwnj;&nbsp;&zwnj;&nbsp;&zwnj;&nbsp;&zwnj;&nbsp;&zwnj;&nbsp;&zwnj;&nbsp;&zwnj;&nbsp;&zwnj;&nbsp;&zwnj;&nbsp;&zwnj;&nbsp;&zwnj;&nbsp;&zwnj;&nbsp;&zwnj;&nbsp;&zwnj;&nbsp;&zwnj;&nbsp;
        </div>
        <!-- Preview Text Spacing Hack : END -->

        <!--
            Set the email width. Defined in two places:
            1. max-width for all clients except Desktop Windows Outlook, allowing the email to squish on narrow but never go wider than 680px.
            2. MSO tags for Desktop Windows Outlook enforce a 680px width.
            Note: The Fluid and Responsive templates have a different width (600px). The hybrid grid is more 'fragile', and I've found that 680px is a good width. Change with caution.
        -->
        <div style='background-color: #262677; max-width: 800px; margin: 0 auto;font-family: 'Poppins', sans-serif; padding: 15px 5px;' class='email-container'>
            <!--[if mso]>
            <table align='center' role='presentation' cellspacing='0' cellpadding='0' border='0' width='800'>
            <tr>
            <td>
            <![endif]-->

	        <!-- Email Body : BEGIN -->
            <table role='presentation' cellspacing='0' cellpadding='0' border='0' bgcolor='' style='width: 780px; margin: 0px auto 0 !important; font-family: 'Poppins', sans-serif; max-width: 100%;'>
                <tr>
                    <td>
                        <table role='presentation' cellspacing='0' cellpadding='0' border='0' bgcolor='' width='100%' style='margin: auto !important; '>
                            
                            
                             <!-- Clear Spacer : BEGIN -->
                             <!-- <tr>
                                <td aria-hidden='true' height='10' style='font-size: 0px; line-height: 0px;'>
                                    &nbsp;
                                </td>
                            </tr> -->
                            <!-- Clear Spacer : END -->

                            <tr>
                                <td class='inner-td' style='background: #fff; padding: 40px; border-top: solid 5px #fff; margin-bottom: 20px;'>

                                        <div style='padding: 0px 0px 10px; text-align: center; border-bottom:1px solid #ededed; padding:15px 0px 10px; margin-bottom: 20px; background: #262677;'>
                                            <img src='https://sassoon.spericorn.com/wp-content/themes/sassoon/img/logo.png' width='180' alt='alt_text' border='0' >
                                        </div>

                                    <h4 style='font-family: 'Poppins', sans-serif; color: #292D32; font-size: 20px; font-weight: 600; margin: 0; margin-bottom: 15px;'>Hi Admin,</h4>
                                    <div style='display:block; text-align: center; padding-top: 15px;'>
                                        <img src='https://sassoon.spericorn.com/wp-content/themes/sassoon/img/contact.png' alt='' width='250' style='width:250px'>
                                    </div>
                                    <p style='font-family: 'Poppins', sans-serif; color: #697F9B; font-size: 14px; margin-top: 30px; margin-bottom: 30px;'>We wanted to inform you that a user has recently made a message on your platform.</p>
                                    <div style='display:block; box-sizing: border-box; width: 100%;'>
                                        <div class='name-block' style='margin-bottom: 20px; display:block; width: 100%; box-sizing: border-box;'>
                                            <p style='font-family: 'Poppins', sans-serif; color: #292D32; color: #697F9B; font-size: 13px; margin: 0;'>
                                                <span style='font-weight: 500;'>Name</span>: ". $name."
                                            </p>
                                        </div>
                                        <div class='name-block' style='margin-bottom: 20px; display:block; width: 100%; box-sizing: border-box;'>
                                            <p style='font-family: 'Poppins', sans-serif; color: #697F9B; font-size: 13px; margin: 0;'>
                                                <span style='font-weight: 500;'>Email</span>: ". $email."
                                            </p>
                                        </div>
                                        <div class='name-block' style='margin-bottom: 20px; display:block; width: 100%; box-sizing: border-box;'>
                                            <p style='font-family: 'Poppins', sans-serif; color: #697F9B; font-size: 13px; margin: 0;'>
                                                <span style='font-weight: 500;'>Phone</span>: ". $phone."
                                            </p>
                                        </div>
                                        <div style='display:inline-block; box-sizing: border-box;'>
                                            <p style='font-family: 'Poppins', sans-serif; color: #697F9B; font-size: 13px; margin: 0 0 10px;'>
                                                <span style='font-weight: 500;'>Message</span>
                                            </p>
                                            <p style='font-family: 'Poppins', sans-serif; color: #697F9B; font-size: 13px; margin: 0 0 15px;'>
                                                ". $message."
                                            </p>
                                           
                                            <p style='margin-top: 30px; margin-bottom: 5px; font-family: 'Poppins', sans-serif; color: #292D32; font-size: 12px;'>Thank you</p>
                                            <h4 style='font-size: 12px; margin-top: 0; color: #292D32; font-weight: 700;'>Sassoon</h4>
                                        </div>
                                    </div>
                                                                        
                                </td>
                            </tr>

                             <!-- Clear Spacer : BEGIN -->
                             
                            <!-- Clear Spacer : END -->
                        </table>
                    </td>
                </tr>
            </table>
            
            <!-- Email Body : END -->

            <!-- Email Social Media : BEGIN  -->


            <tr>
                <td>
                    <!-- <table role='presentation' cellspacing='0' cellpadding='0' border='0' bgcolor='' width='100%'>
                        <tr>
                            <td style='text-align: center; padding: 15px;'>
                                <p style='font-family: 'Poppins', sans-serif; text-align: center; margin: 0;'>
                                    <a href='#' style='display: inline-block; margin: 0 2px;'><img src='img/upwrk.png' alt='Up work'></a>
                                    <a href='#' style='display: inline-block; margin: 0 2px;'><img src='img/linkd.png' alt='Linked in'></a>
                                </p>
                            </td>
                        </tr>
                    </table> -->

                </td>
            </tr>

            <!--[if mso]>
            </td>
            </tr>
            </table>
            <![endif]-->
        </div>

        <!-- Full Bleed Background Section : BEGIN -->


        <!-- Full Bleed Background Section : END -->

    <!--[if mso | IE]>
    </td>
    </tr>
    </table>
    <![endif]-->
    </center>
</body>
</html>";
$headers = array(
    'Content-Type: text/html; charset=utf-8'
);

    if (wp_mail($email, $subject, $message, $headers)) {
        echo "<p style='color:green;'>Thank you! Your message has been sent.</p>";
    } else {
        echo "<p style='color:red;'>Error sending email.</p>";
    }

    wp_die(); // Required to terminate properly
}
add_action('wp_ajax_submit_contact_form', 'handle_contact_form_submission');
add_action('wp_ajax_nopriv_submit_contact_form', 'handle_contact_form_submission');


function handle_email_subscription() {
    if (isset($_POST['email']) && is_email($_POST['email'])) {
        
    // Send Email
    $email      = $_POST['email']; // Admin Email
    $subject = "New Subscription";
    $message = "<!DOCTYPE html>
<html lang='en' xmlns='http://www.w3.org/1999/xhtml' xmlns:v='urn:schemas-microsoft-com:vml' xmlns:o='urn:schemas-microsoft-com:office:office'>
<head>
    <meta charset='utf-8'> <!-- utf-8 works for most cases -->
    <meta name='viewport' content='width=device-width'> <!-- Forcing initial-scale shouldn't be necessary -->
    <meta http-equiv='X-UA-Compatible' content='IE=edge'> <!-- Use the latest (edge) version of IE rendering engine -->
    <meta name='x-apple-disable-message-reformatting'>  <!-- Disable auto-scale in iOS 10 Mail entirely -->
    <meta name='format-detection' content='telephone=no,address=no,email=no,date=no,url=no'> <!-- Tell iOS not to automatically link certain text strings. -->
    <meta name='color-scheme' content='light'>
    <meta name='supported-color-schemes' content='light'>
    <title>Welcome</title> <!-- The title tag shows in email notifications, like Android 4.4. -->

    <!-- What it does: Makes background images in 72ppi Outlook render at correct size. -->
    <!--[if gte mso 9]>
    <xml>
        <o:OfficeDocumentSettings>
            <o:AllowPNG/>
            <o:PixelsPerInch>96</o:PixelsPerInch>
        </o:OfficeDocumentSettings>
    </xml>
    <![endif]-->

    <!-- Web Font / @font-face : BEGIN -->
    <link href='https://fonts.googleapis.com/css2?family=Poppins:wght@300;400;500;600;700&display=swap' rel='stylesheet'>
    <!-- All other clients get the webfont reference; some will render the font and others will silently fail to the fallbacks. More on that here: http://stylecampaign.com/blog/2015/02/webfont-support-in-email/ -->
    <!--[if !mso]>
        <link href='https://fonts.googleapis.com/css2?family=Poppins:wght@300;400;500;600;700&display=swap' rel='stylesheet'>
    <![endif]-->

    <!-- Desktop Outlook chokes on web font references and defaults to Times New Roman, so we force a safe fallback font. -->
    <!--[if mso]>
        <style>
            *, body,div,p,a ,h1,h2,h3,h4,h5,h6, table, td, th {
                font-family: 'Poppins', sans-serif;
            }
        </style>
    <![endif]-->

    <!-- Web Font / @font-face : END -->

    <!-- CSS Reset : BEGIN -->
    <style>

        :root {
          color-scheme: light;
          supported-color-schemes: light;
        }
      html,
        body {
            margin: 0 auto !important;
            padding: 0 !important;
            height: 100% !important;
            width: 100% !important;
        }

        * {
            -ms-text-size-adjust: 100%;
            -webkit-text-size-adjust: 100%;
        }

        /* What it does: Centers email on Android 4.4 */
        div[style*='margin: 16px 0'] {
            margin: 0 !important;
        }
        /* What it does: forces Samsung Android mail clients to use the entire viewport */
        #MessageViewBody, #MessageWebViewDiv{
            width: 100% !important;
        }

        /* What it does: Stops Outlook from adding extra spacing to tables. */
        table,
        td {
            mso-table-lspace: 0pt !important;
            mso-table-rspace: 0pt !important;
        }

        /* What it does: Fixes webkit padding issue. */
        table {
            border-spacing: 0 !important;
            border-collapse: collapse !important;
            table-layout: fixed !important;
            margin: 0 auto !important;
        }

        /* What it does: Uses a better rendering method when resizing images in IE. */
        img {
            -ms-interpolation-mode:bicubic;
        }

        /* What it does: Prevents Windows 10 Mail from underlining links despite inline CSS. Styles for underlined links should be inline. */
        a {
            text-decoration: none;
        }

        /* What it does: A work-around for email clients meddling in triggered links. */
        a[x-apple-data-detectors],  /* iOS */
        .unstyle-auto-detected-links a,
        .aBn {
            border-bottom: 0 !important;
            cursor: default !important;
            color: inherit !important;
            text-decoration: none !important;
            font-size: inherit !important;
            font-family: inherit !important;
            font-weight: inherit !important;
            line-height: inherit !important;
        }

        /* What it does: Prevents Gmail from changing the text color in conversation threads. */
        .im {
            color: inherit !important;
        }

        /* What it does: Prevents Gmail from displaying a download button on large, non-linked images. */
        .a6S {
            display: none !important;
            opacity: 0.01 !important;
        }
        /* If the above doesn't work, add a .g-img class to any image in question. */
        img.g-img + div {
            display: none !important;
        }

        /* What it does: Removes right gutter in Gmail iOS app: https://github.com/TedGoas/Cerberus/issues/89  */
        /* Create one of these media queries for each additional viewport size you'd like to fix */

        /* iPhone 4, 4S, 5, 5S, 5C, and 5SE */
        @media only screen and (min-device-width: 320px) and (max-device-width: 374px) {
            u ~ div .email-container {
                min-width: 320px !important;
            }
        }
        /* iPhone 6, 6S, 7, 8, and X */
        @media only screen and (min-device-width: 375px) and (max-device-width: 413px) {
            u ~ div .email-container {
                min-width: 375px !important;
            }
        }
        /* iPhone 6+, 7+, and 8+ */
        @media only screen and (min-device-width: 414px) {
            u ~ div .email-container {
                min-width: 414px !important;
            }
        }

    </style>
    <!-- CSS Reset : END -->

    <!-- Progressive Enhancements : BEGIN -->
    <style>
        @media screen and (max-width: 579px) {
            .name-block{
                width: 100% !important;
                margin-left: 0 !important;
            }
            .inner-td{
                padding: 20px !important;
            }
        }
        

	    /* Media Queries */
	    @media screen and (max-width: 480px) {
	        /* What it does: Forces table cells into full-width rows. */
	        .stack-column,
	        .stack-column-center {
	            display: block !important;
	            width: 100% !important;
	            max-width: 100% !important;
	            direction: ltr !important;
	        }
	        /* And center justify these ones. */
	        .stack-column-center {
	            text-align: center !important;
	        }

	        /* What it does: Generic utility class for centering. Useful for images, buttons, and nested tables. */
	        .center-on-narrow {
	            text-align: center !important;
	            display: block !important;
	            margin-left: auto !important;
	            margin-right: auto !important;
	            float: none !important;
	        }
	        table.center-on-narrow {
	            display: inline-block !important;
	        }

	        /* What it does: Adjust typography on small screens to improve readability */
	    }

    </style>
    <!-- Progressive Enhancements : END -->


    <!-- MSO dark mode fix :  use the class name for texts to remain in white -->
    <!--[if mso ]>
    <style>
        a{
            line-height: normal !important;
            text-decoration: none !important;
        }
        .ms-whiteX {
            mso-style-textfill-type:gradient;
            mso-style-textfill-fill-gradientfill-stoplist:'0 \#FFFFFF 0 100000\,100000 \#FFFFFF 0 100000';
        }
    </style>
    <![endif]-->

</head>
<!--
	The email background color (#ECF3FE) is defined in three places:
	1. body tag: for most email clients
	2. center tag: for Gmail and Inbox mobile apps and web versions of Gmail, GSuite, Inbox, Yahoo, AOL, Libero, Comcast, freenet, Mail.ru, Orange.fr
	3. mso conditional: For Windows 10 Mail
-->
<body width='100%' style='margin: 0; padding: 0 !important; mso-line-height-rule: exactly; background-color: #fff;'>
  <center role='article' aria-roledescription='email' lang='en' style='width: 100%; background-color: #fff;'>
    <!--[if mso | IE]>
    <table role='presentation' border='0' cellpadding='0' cellspacing='0' width='100%' style='background-color: #ECF3FE;'>
    <tr>
    <td>
    <![endif]-->

        <!-- Create white space after the desired preview text so email clients don’t pull other distracting text into the inbox preview. Extend as necessary. -->
        <!-- Preview Text Spacing Hack : BEGIN -->
        <div style='display: none; font-size: 1px; line-height: 1px; max-height: 0px; max-width: 0px; opacity: 0; overflow: hidden; mso-hide: all; font-family: 'Prompt',  sans-serif;'>
	        &zwnj;&nbsp;&zwnj;&nbsp;&zwnj;&nbsp;&zwnj;&nbsp;&zwnj;&nbsp;&zwnj;&nbsp;&zwnj;&nbsp;&zwnj;&nbsp;&zwnj;&nbsp;&zwnj;&nbsp;&zwnj;&nbsp;&zwnj;&nbsp;&zwnj;&nbsp;&zwnj;&nbsp;&zwnj;&nbsp;&zwnj;&nbsp;&zwnj;&nbsp;&zwnj;&nbsp;
        </div>
        <!-- Preview Text Spacing Hack : END -->

        <!--
            Set the email width. Defined in two places:
            1. max-width for all clients except Desktop Windows Outlook, allowing the email to squish on narrow but never go wider than 680px.
            2. MSO tags for Desktop Windows Outlook enforce a 680px width.
            Note: The Fluid and Responsive templates have a different width (600px). The hybrid grid is more 'fragile', and I've found that 680px is a good width. Change with caution.
        -->
        <div style='background-color: #262677; max-width: 800px; margin: 0 auto;font-family: 'Poppins', sans-serif; padding: 15px 5px;' class='email-container'>
            <!--[if mso]>
            <table align='center' role='presentation' cellspacing='0' cellpadding='0' border='0' width='800'>
            <tr>
            <td>
            <![endif]-->

	        <!-- Email Body : BEGIN -->
            <table role='presentation' cellspacing='0' cellpadding='0' border='0' bgcolor='' style='width: 780px; margin: 0px auto 0 !important; font-family: 'Poppins', sans-serif; max-width: 100%;'>
                <tr>
                    <td>
                        <table role='presentation' cellspacing='0' cellpadding='0' border='0' bgcolor='' width='100%' style='margin: auto !important; '>
                            
                            
                             <!-- Clear Spacer : BEGIN -->
                             <!-- <tr>
                                <td aria-hidden='true' height='10' style='font-size: 0px; line-height: 0px;'>
                                    &nbsp;
                                </td>
                            </tr> -->
                            <!-- Clear Spacer : END -->

                            <tr>
                                <td class='inner-td' style='background: #fff; padding: 40px; border-top: solid 5px #fff; margin-bottom: 20px;'>

                                        <div style='padding: 0px 0px 10px; text-align: center; border-bottom:1px solid #ededed; padding:15px 0px 10px; margin-bottom: 20px; background: #262677;'>
                                            <img src='https://sassoon.spericorn.com/wp-content/themes/sassoon/img/logo.png' width='180' alt='alt_text' border='0' >
                                        </div>

                                    <h4 style='font-family: 'Poppins', sans-serif; color: #292D32; font-size: 20px; font-weight: 600; margin: 0; margin-bottom: 15px;'>Hi,</h4>
                                    <div style='display:block; text-align: center; padding-top: 15px;'>
                                        <img src='https://sassoon.spericorn.com/wp-content/themes/sassoon/img/contact.png' alt='' width='250' style='width:250px'>
                                    </div>
                                   
									 <p style='font-family: Poppins, sans-serif; color: #697F9B; font-size: 14px; margin-top: 30px; margin-bottom: 30px;'>
                    Thank you for subscribing!
                </p>
                <p>We appreciate your interest. You'll receive our latest updates and newsletters.</p>
                                    <div style='display:block; box-sizing: border-box; width: 100%;'>
                                        
                                        <div style='display:inline-block; box-sizing: border-box;'>
                                           
                                            <p style='font-family: 'Poppins', sans-serif; color: #697F9B; font-size: 13px; margin: 0 0 15px;'>
                                                
                                            </p>
                                           
                                            <p style='margin-top: 30px; margin-bottom: 5px; font-family: 'Poppins', sans-serif; color: #292D32; font-size: 12px;'>Thank you</p>
                                            <h4 style='font-size: 12px; margin-top: 0; color: #292D32; font-weight: 700;'>Sassoon</h4>
                                        </div>
                                    </div>
                                                                        
                                </td>
                            </tr>

                             <!-- Clear Spacer : BEGIN -->
                             
                            <!-- Clear Spacer : END -->
                        </table>
                    </td>
                </tr>
            </table>
            
            <!-- Email Body : END -->

            <!-- Email Social Media : BEGIN  -->


            <tr>
                <td>
                    <!-- <table role='presentation' cellspacing='0' cellpadding='0' border='0' bgcolor='' width='100%'>
                        <tr>
                            <td style='text-align: center; padding: 15px;'>
                                <p style='font-family: 'Poppins', sans-serif; text-align: center; margin: 0;'>
                                    <a href='#' style='display: inline-block; margin: 0 2px;'><img src='img/upwrk.png' alt='Up work'></a>
                                    <a href='#' style='display: inline-block; margin: 0 2px;'><img src='img/linkd.png' alt='Linked in'></a>
                                </p>
                            </td>
                        </tr>
                    </table> -->

                </td>
            </tr>

            <!--[if mso]>
            </td>
            </tr>
            </table>
            <![endif]-->
        </div>

        <!-- Full Bleed Background Section : BEGIN -->


        <!-- Full Bleed Background Section : END -->

    <!--[if mso | IE]>
    </td>
    </tr>
    </table>
    <![endif]-->
    </center>
</body>
</html>";
$headers = array(
    'Content-Type: text/html; charset=utf-8'
);

    if (wp_mail($email, $subject, $message, $headers)) {
        echo "<p style='color:green;'>Thank you! Your message has been sent.</p>";
    } else {
        echo "<p style='color:red;'>Error sending email.</p>";
    }

    wp_die(); // Required to terminate properly
    } else {
        echo '<span style="color: red;">Invalid email!</span>';
    }
}
add_action('wp_ajax_subscribe_email', 'handle_email_subscription');
add_action('wp_ajax_nopriv_subscribe_email', 'handle_email_subscription');

// 🔹 Register Deals CPT
function create_deal_cpt() {
    $labels = [
        'name'               => 'Deals',
        'singular_name'      => 'Deal',
        'add_new'            => 'Add New',
        'add_new_item'       => 'Add New Deal',
        'edit_item'          => 'Edit Deal',
        'new_item'           => 'New Deal',
        'all_items'          => 'All Deals',
        'view_item'          => 'View Deal',
        'search_items'       => 'Search Deals',
        'not_found'          => 'No Deal found',
        'not_found_in_trash' => 'No Deals found in Trash',
        'menu_name'          => 'Deal'
    ];

    $args = [
        'labels'        => $labels,
        'public'        => true,
        'has_archive'   => true,
        'show_in_menu'  => true,
        'supports'      => ['title'],
        'menu_position' => 5,
        'menu_icon'     => 'dashicons-randomize',
    ];

    register_post_type('deal', $args);
}
add_action('init', 'create_deal_cpt');

// 🔹 Register Taxonomy
function create_deal_category_taxonomy() {
    $labels = [
        'name'              => 'Deal Categories',
        'singular_name'     => 'Deal Category',
        'menu_name'         => 'Categories',
    ];

    $args = [
        'hierarchical'      => true,
        'labels'            => $labels,
        'show_ui'           => true,
        'show_admin_column' => true,
        'query_var'         => true,
        'rewrite'           => ['slug' => 'deal-category'],
    ];

    register_taxonomy('deal_category', 'deal', $args);
}
add_action('init', 'create_deal_category_taxonomy');

// 🔹 Add Meta Boxes
function deal_add_meta_boxes() {
    add_meta_box('deal_meta', 'Deal Details', 'deal_meta_callback', 'deal', 'normal', 'high');
}
add_action('add_meta_boxes', 'deal_add_meta_boxes');

function deal_meta_callback($post) {
    $buyer_name  = get_post_meta($post->ID, '_buyer_name', true);
    $buyer_logo  = get_post_meta($post->ID, '_buyer_logo', true);
    $seller_name = get_post_meta($post->ID, '_seller_name', true);
    $seller_logo = get_post_meta($post->ID, '_seller_logo', true);

    wp_nonce_field('save_deal_meta', 'deal_meta_nonce');
    ?>
    <p>
        <label>Buyer Name</label><br>
        <input type="text" name="buyer_name" value="<?php echo esc_attr($buyer_name); ?>" style="width:100%">
    </p>
    <p>
        <label>Buyer Logo</label><br>
        <input type="hidden" name="buyer_logo" id="buyer_logo" value="<?php echo esc_attr($buyer_logo); ?>">
        <img id="buyer_logo_preview" src="<?php echo esc_url($buyer_logo); ?>" style="max-width:120px; display:block; margin-bottom:10px;">
        <button type="button" class="button upload-logo" data-target="buyer_logo">Upload Logo</button>
        <button type="button" class="button remove-logo" data-target="buyer_logo">Remove</button>
    </p>
    <hr>
    <p>
        <label>Seller Name</label><br>
        <input type="text" name="seller_name" value="<?php echo esc_attr($seller_name); ?>" style="width:100%">
    </p>
    <p>
        <label>Seller Logo</label><br>
        <input type="hidden" name="seller_logo" id="seller_logo" value="<?php echo esc_attr($seller_logo); ?>">
        <img id="seller_logo_preview" src="<?php echo esc_url($seller_logo); ?>" style="max-width:120px; display:block; margin-bottom:10px;">
        <button type="button" class="button upload-logo" data-target="seller_logo">Upload Logo</button>
        <button type="button" class="button remove-logo" data-target="seller_logo">Remove</button>
    </p>
    <?php
}

// 🔹 Save Meta
function save_deal_meta($post_id) {
    if (!isset($_POST['deal_meta_nonce']) || !wp_verify_nonce($_POST['deal_meta_nonce'], 'save_deal_meta')) {
        return;
    }
    if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) return;

    update_post_meta($post_id, '_buyer_name', sanitize_text_field($_POST['buyer_name'] ?? ''));
    update_post_meta($post_id, '_buyer_logo', esc_url_raw($_POST['buyer_logo'] ?? ''));
    update_post_meta($post_id, '_seller_name', sanitize_text_field($_POST['seller_name'] ?? ''));
    update_post_meta($post_id, '_seller_logo', esc_url_raw($_POST['seller_logo'] ?? ''));
}
add_action('save_post', 'save_deal_meta');

// 🔹 Enqueue JS
function deals_enqueue_scripts() {
    wp_enqueue_script(
        'deals-ajax',
        get_stylesheet_directory_uri() . '/js/deals-ajax.js',
        ['jquery'],
        null,
        true
    );

    wp_localize_script('deals-ajax', 'deals_ajax', [
        'ajax_url' => admin_url('admin-ajax.php'),
        'nonce'    => wp_create_nonce('deals_nonce')
    ]);
}
add_action('wp_enqueue_scripts', 'deals_enqueue_scripts');
// 🔹 Media uploader for logos
function deal_admin_scripts($hook) {
    global $post_type;
    if ($post_type === 'deal') {
        wp_enqueue_media();
        wp_enqueue_script(
            'deal-meta-js',
            get_stylesheet_directory_uri() . '/js/deal-meta.js',
            ['jquery'],
            null,
            true
        );
    }
}
add_action('admin_enqueue_scripts', 'deal_admin_scripts');

// 🔹 Shortcode
function deals_ajax_shortcode($atts) {
    $atts = shortcode_atts([
        'posts_per_page' => 6,
    ], $atts, 'deals_ajax');

    $categories = get_terms(['taxonomy' => 'deal_category', 'hide_empty' => true]);

    ob_start(); ?>
    <div class="deals-filter">
        <select id="deal-category-select">
            <option value="">All Categories</option>
            <?php foreach ($categories as $cat): ?>
                <option value="<?php echo esc_attr($cat->slug); ?>">
                    <?php echo esc_html($cat->name); ?>
                </option>
            <?php endforeach; ?>
        </select>
    </div>
    <div id="deals-container" data-perpage="<?php echo intval($atts['posts_per_page']); ?>">
        <!-- Deals load here -->
    </div>
    <div id="deals-pagination"></div>
    <?php
    return ob_get_clean();
}
add_shortcode('deals_ajax', 'deals_ajax_shortcode');

// 🔹 AJAX Loader
function load_deals_ajax() {
    check_ajax_referer('deals_nonce', 'nonce');

    $category = sanitize_text_field($_POST['category'] ?? '');
    $paged    = intval($_POST['paged'] ?? 1);
    $per_page = intval($_POST['per_page'] ?? 6);

    $tax_query = [];
    if ($category) {
        $tax_query[] = [
            'taxonomy' => 'deal_category',
            'field'    => 'slug',
            'terms'    => $category,
        ];
    }

    $query = new WP_Query([
        'post_type'      => 'deal',
        'posts_per_page' => $per_page,
        'paged'          => $paged,
        'tax_query'      => $tax_query,
    ]);

    ob_start();
    if ($query->have_posts()) {
        echo '<div class="deals-wrapper">';
        while ($query->have_posts()) {
            $query->the_post();

            $buyer_name  = get_post_meta(get_the_ID(), '_buyer_name', true);
            $buyer_logo  = get_post_meta(get_the_ID(), '_buyer_logo', true);
            $seller_name = get_post_meta(get_the_ID(), '_seller_name', true);
            $seller_logo = get_post_meta(get_the_ID(), '_seller_logo', true);

            $terms = get_the_terms(get_the_ID(), 'deal_category');
            $category_name = $terms && !is_wp_error($terms) ? $terms[0]->name : '';

            echo '<div class="deal-card">';
            echo '<div class="deal-logos">';

            // Buyer
            echo '<div class="deal-buyer">';
            echo '<span class="deal-label">Buyer</span>';
            if ($buyer_logo) echo '<img src="'.esc_url($buyer_logo).'" alt="'.esc_attr($buyer_name).'" />';
            echo '</div>';

            // Seller
            echo '<div class="deal-seller">';
            echo '<span class="deal-label">Seller</span>';
            if ($seller_logo) echo '<img src="'.esc_url($seller_logo).'" alt="'.esc_attr($seller_name).'" />';
            echo '</div>';

            echo '</div>'; // end logos

            if ($category_name) {
                echo '<div class="deal-category">'.esc_html($category_name).'</div>';
            }

            echo '</div>'; // end deal-card
        }
        echo '</div>';
    } else {
        echo '<p>No Deal found.</p>';
    }

    // Pagination
    $paginate_links = paginate_links([
        'base'    => '%_%',
        'format'  => '',
        'current' => $paged,
        'total'   => $query->max_num_pages,
    ]);

    echo '<div class="deals-pagination">'.$paginate_links.'</div>';

    wp_reset_postdata();
    echo ob_get_clean();
    wp_die();
}
add_action('wp_ajax_load_deals', 'load_deals_ajax');
add_action('wp_ajax_nopriv_load_deals', 'load_deals_ajax');


function load_deals_pagination() {
    $paged    = isset($_POST['page']) ? intval($_POST['page']) : 1;
    $per_page = isset($_POST['per_page']) ? intval($_POST['per_page']) : 6;

    $query = new WP_Query([
        'post_type'      => 'deal',
        'posts_per_page' => $per_page,
        'paged'          => $paged,
    ]);

    if ($query->have_posts()) {
        echo '<div class="box-inner">';
        while ($query->have_posts()) {
            $query->the_post();

            $buyer_name  = get_post_meta(get_the_ID(), '_buyer_name', true);
            $buyer_logo  = get_post_meta(get_the_ID(), '_buyer_logo', true);
            $seller_name = get_post_meta(get_the_ID(), '_seller_name', true);
            $seller_logo = get_post_meta(get_the_ID(), '_seller_logo', true);

            $terms = wp_get_post_terms(get_the_ID(), 'deal_category');
            $category_name = !empty($terms) ? $terms[0]->name : '';
            ?>
            <div class="box">
                <div class="top-sec">
                    <div class="gray-btn"><button class="btn-1">Buyer</button></div>
                    <div class="gray-btn"><button class="btn-1">Seller</button></div>
                </div>
                <div class="mid-sec">
                    <div class="logo-sec">
                        <?php if ($buyer_logo): ?>
                            <img src="<?php echo esc_url($buyer_logo); ?>" alt="<?php echo esc_attr($buyer_name); ?>">
                        <?php elseif ($buyer_name): ?>
                            <span><?php echo esc_html($buyer_name); ?></span>
                        <?php endif; ?>
                    </div>
                    <div class="line"></div>
                    <div class="logo-sec">
                        <?php if ($seller_logo): ?>
                            <img src="<?php echo esc_url($seller_logo); ?>" alt="<?php echo esc_attr($seller_name); ?>">
                        <?php elseif ($seller_name): ?>
                            <span><?php echo esc_html($seller_name); ?></span>
                        <?php endif; ?>
                    </div>
                </div>
                <div class="bottom-btn">
                    <?php if ($category_name): ?>
                        <button class="community-btn"><?php echo esc_html($category_name); ?></button>
                    <?php endif; ?>
                </div>
            </div>
            <?php
        }
        echo '</div>'; // close box-inner
    } else {
        echo '<p>No deals found.</p>';
    }

    // Custom pagination
    $total_pages = $query->max_num_pages;
    $total_posts = $query->found_posts;
    $showing_to  = min($paged * $per_page, $total_posts);

    if ($total_pages > 1) {
        echo '<div class="pagination-wrap">';
        echo '<div class="left-wrap"><span>Showing ' . $showing_to . ' of ' . $total_posts . '</span></div>';
        echo '<div class="right-wrap"><ul>';

        // Left arrow
        $prev_class = ($paged <= 1) ? 'class="disabled"' : '';
        echo '<li ' . $prev_class . '><a href="#" data-page="' . max(1, $paged - 1) . '">
                <div class="num arrow left">
                    <div class="svg"><svg xmlns="http://www.w3.org/2000/svg" width="8" height="13" fill="none"><path stroke="#0E0E0E" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="m1 12 5.5-5.5L1 1"/></svg></div>
                </div>
            </a></li>';

        // Numbered pages (show first 3, last, current ±1, with "..." in between)
        $range = 1; // pages around current
        for ($i = 1; $i <= $total_pages; $i++) {
            if ($i == 1 || $i == $total_pages || ($i >= $paged - $range && $i <= $paged + $range)) {
                $active = ($i == $paged) ? 'class="active"' : '';
                echo '<li ' . $active . '><a href="#" data-page="' . $i . '"><div class="num">' . $i . '</div></a></li>';
            } elseif ($i == 2 && $paged > 3) {
                echo '<li><div class="num">...</div></li>';
            } elseif ($i == $total_pages - 1 && $paged < $total_pages - 2) {
                echo '<li><div class="num">...</div></li>';
            }
        }

        // Right arrow
        $next_class = ($paged >= $total_pages) ? 'class="disabled"' : '';
        echo '<li ' . $next_class . '><a href="#" data-page="' . min($total_pages, $paged + 1) . '">
                <div class="num arrow right">
                    <div class="svg"><svg xmlns="http://www.w3.org/2000/svg" width="8" height="13" fill="none"><path stroke="#0E0E0E" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="m1 12 5.5-5.5L1 1"/></svg></div>
                </div>
            </a></li>';

        echo '</ul></div></div>';
    }

    wp_reset_postdata();
    wp_die();
}
add_action('wp_ajax_load_more_deals', 'load_deals_pagination');
add_action('wp_ajax_nopriv_load_more_deals', 'load_deals_pagination');


function enqueue_deals_scripts() {
    wp_enqueue_script('deals-loadmore', get_template_directory_uri() . '/js/deals-loadmore.js', ['jquery'], '1.0', true);
    wp_localize_script('deals-loadmore', 'deals_ajax', [
        'ajax_url' => admin_url('admin-ajax.php'),
    ]);
}
add_action('wp_enqueue_scripts', 'enqueue_deals_scripts');

// Allow SVG upload safely
function allow_svg_uploads($mimes) {
    $mimes['svg'] = 'image/svg+xml';
    return $mimes;
}
add_filter('upload_mimes', 'allow_svg_uploads');