Plugin Directory

Changeset 2905766


Ignore:
Timestamp:
04/28/2023 03:24:54 PM (3 years ago)
Author:
speedify
Message:

Releasing version 3.4.2

Location:
auto-install-free-ssl
Files:
276 added
32 edited

Legend:

Unmodified
Added
Removed
  • auto-install-free-ssl/trunk/FreeSSLAuto/src/Acme/AcmeV2.php

    r2886132 r2905766  
    7474    {
    7575        if ( !defined( 'ABSPATH' ) ) {
    76             die( __( "Access Denied", 'auto-install-free-ssl' ) );
     76            die( __( "Access denied", 'auto-install-free-ssl' ) );
    7777        }
    7878        $this->is_staging = $is_staging;
     
    176176            if ( 'valid' === $response2['status'] ) {
    177177                //Domain ownership already verified. Skip the verification process
     178                /* translators: %s: A domain name, e.g., example.com */
    178179                $this->logger->log( sprintf( __( "Domain (%s) already verified. Skip the verification process.", 'auto-install-free-ssl' ), $domain ) );
    179180                $return_array_step1['domain_data'][$domain]['verified'] = true;
     
    184185               
    185186                if ( empty($response2['challenges']) ) {
     187                    /* translators: %s: A domain name, e.g., example.com */
    186188                    $msg = sprintf( __( "Challenge for %s is not available. Whole response:", 'auto-install-free-ssl' ), $domain ) . " <br />\n";
    187189                   
     
    209211                    if ( !$challenge ) {
    210212                        //"dns-01" is NOT available
     213                        /* translators: %s: A domain name, e.g., example.com */
    211214                        $msg = sprintf( __( "Neither 'HTTP-01' nor 'DNS-01' challenge for %s is available. Whole response:", 'auto-install-free-ssl' ), $domain ) . " <br />\n";
    212215                       
     
    226229                    $this->logger->log( __( "The 'HTTP-01' challenge was NOT found, but the 'DNS-01' challenge has been found.", 'auto-install-free-ssl' ) );
    227230                    if ( !aifs_is_free_version() ) {
    228                         $this->logger->log( " " . sprintf( __( "So, using the 'DNS-01' challenge for %s.", 'auto-install-free-ssl' ), $domain ) );
     231                        /* translators: %1$s: Challenge type (HTTP-01 or DNS-01); %2$s: A domain name, e.g., example.com */
     232                        $this->logger->log( " " . sprintf( __( 'So, using the \'%1$s\' challenge for %2$s.', 'auto-install-free-ssl' ), 'DNS-01', $domain ) );
    229233                    }
    230234                    //$this->challenge = 'dns-01';
     
    234238                    $this->logger->log( __( "'HTTP-01' challenge found.", 'auto-install-free-ssl' ) );
    235239                    if ( !aifs_is_free_version() ) {
    236                         $this->logger->log( " " . sprintf( __( "So, using the 'HTTP-01' challenge for %s.", 'auto-install-free-ssl' ), $domain ) );
     240                        /* translators: %1$s: Challenge type (HTTP-01 or DNS-01); %2$s: A domain name, e.g., example.com */
     241                        $this->logger->log( " " . sprintf( __( 'So, using the \'%1$s\' challenge for %2$s.', 'auto-install-free-ssl' ), 'HTTP-01', $domain ) );
    237242                    }
    238243                    //$this->challenge = 'http-01';
     
    241246               
    242247                $return_array_step1['domain_data'][$domain]['challenge'] = $challenge;
     248                /* translators: %s: A domain name, e.g., example.com */
    243249                $this->logger->log( sprintf( __( "We got the challenge token for %s.", 'auto-install-free-ssl' ), $domain ) );
    244250                $location = $this->client->getLastLocation();
     
    293299       
    294300        if ( !$this->factory->verify_internally_http_wp( $payload, $uri ) ) {
    295             $this->logger->log( __( "1st Internal Validation: Payload content does not match the challenge URI's content.", 'auto-install-free-ssl' ) );
     301            $this->logger->log( __( "1st Internal Validation:", 'auto-install-free-ssl' ) . " " . __( "Payload content does not match the challenge URI's content.", 'auto-install-free-ssl' ) );
    296302            //Create htaccess rules in .well-known directory to fix the issue
    297303           
     
    304310           
    305311            if ( !$this->factory->verify_internally_http_wp( $payload, $uri ) ) {
    306                 $this->logger->log( __( "2nd Internal Validation: Payload content does not match the challenge URI's content.", 'auto-install-free-ssl' ) );
     312                $this->logger->log( __( "2nd Internal Validation:", 'auto-install-free-ssl' ) . " " . __( "Payload content does not match the challenge URI's content.", 'auto-install-free-ssl' ) );
    307313                if ( !aifs_is_free_version() ) {
    308314                   
     
    316322            } else {
    317323                //Put success log text here
    318                 $this->logger->log( sprintf( __( "Final Internal Validation: the Payload content (%s) successfully matched the content of %s.", 'auto-install-free-ssl' ), $payload, $uri ) );
     324                /* translators: %1$s: A data, i.e., string of characters; %2$s: A URL, e.g., http://example.com/.well-known/acme-challenge/egIiS7rwd */
     325                $this->logger->log( sprintf( __( 'Final Internal Validation: the Payload content (%1$s) successfully matched the content of %2$s.', 'auto-install-free-ssl' ), $payload, $uri ) );
    319326                return true;
    320327            }
     
    322329        } else {
    323330            //Put success log text here
    324             $this->logger->log( sprintf( __( "Final Internal Validation: the Payload content (%s) successfully matched the content of %s.", 'auto-install-free-ssl' ), $payload, $uri ) );
     331            /* translators: %1$s: A data, i.e., string of characters; %2$s: A URL, e.g., http://example.com/.well-known/acme-challenge/egIiS7rwd */
     332            $this->logger->log( sprintf( __( 'Final Internal Validation: the Payload content (%1$s) successfully matched the content of %2$s.', 'auto-install-free-ssl' ), $payload, $uri ) );
    325333            return true;
    326334        }
     
    375383                    if ( $txt_details['txt'] === $dns_txt_record ) {
    376384                        $propagated = true;
     385                        /* translators: %1$s: DNS TXT record */
    377386                        $this->logger->log( sprintf( __( "TXT record (%s) has been propagated successfully.", 'auto-install-free-ssl' ), $dns_txt_record ) );
    378387                    }
     
    381390               
    382391                if ( !$propagated ) {
    383                     $this->logger->log( sprintf( __( "TXT record (%s) has NOT been propagated till now, sleeping for %d minutes.", 'auto-install-free-ssl' ), $dns_txt_record, 2 ) );
     392                    $min = __( "2", 'auto-install-free-ssl' );
     393                    /* translators: %1$s: DNS TXT record; %2$s: Number of minutes, e.g., 2 */
     394                    $this->logger->log( sprintf( __( 'TXT record (%1$s) has NOT been propagated till now, sleeping for %2$s minutes.', 'auto-install-free-ssl' ), $dns_txt_record, $min ) );
    384395                    sleep( 120 );
    385396                }
     
    396407           
    397408            if ( null === $txt_details || $txt_details['txt'] !== $dns_txt_record ) {
    398                 $this->logger->log_v2( 'debug', sprintf( __( "TXT record %s for %s has NOT been propagated till now. Please check whether the TXT record was set correctly. You may also set 'dns_provider_takes_longer_to_propagate' => true and try again.", 'auto-install-free-ssl' ), $dns_txt_record, $sub_domain ) );
     409                /* translators: %1$s: DNS TXT record; %2$s: A sub-domain, e.g., sub.example.com */
     410                $this->logger->log_v2( 'debug', sprintf( __( 'TXT record %1$s for %2$s has NOT been propagated till now. Please check whether the TXT record was set correctly. You may also set \'dns_provider_takes_longer_to_propagate\' => true and try again.', 'auto-install-free-ssl' ), $dns_txt_record, $sub_domain ) );
    399411                return false;
    400412            } else {
     
    513525           
    514526            if ( !$ended ) {
    515                 $this->logger->log( sprintf( __( "Verification pending, sleeping %d seconds.", 'auto-install-free-ssl' ), 2 ) );
     527                $sec = __( "2", 'auto-install-free-ssl' );
     528                /* translators: %s: Number of seconds, e.g., 2 */
     529                $this->logger->log( sprintf( __( "Verification pending, sleeping %s seconds.", 'auto-install-free-ssl' ), $sec ) );
    516530                //sleep(1);
    517531                sleep( 2 );
     
    519533       
    520534        } while (!$ended);
    521         $this->logger->log( sprintf( __( "Verification ended with status: %s for the domain %s", 'auto-install-free-ssl' ), $result['status'], $domain ) );
     535        /* translators: %1$s: Status of the verification, e.g., 'valid'; %2$s: A domain name, e.g., example.com */
     536        $this->logger->log( sprintf( __( 'Verification ended with status: \'%1$s\' for the domain %2$s', 'auto-install-free-ssl' ), strtoupper( $result['status'] ), $domain ) );
    522537       
    523538        if ( 'valid' === $result['status'] ) {
     
    572587           
    573588            if ( 202 === $this->client->getLastCode() ) {
    574                 $this->logger->log( sprintf( __( "Certificate generation pending, sleeping %d second.", 'auto-install-free-ssl' ), 1 ) );
     589                $sec = __( "1", 'auto-install-free-ssl' );
     590                /* translators: %s: Number of second */
     591                $this->logger->log( sprintf( __( "Certificate generation pending, sleeping %s second.", 'auto-install-free-ssl' ), $sec ) );
    575592                sleep( 1 );
    576593            } elseif ( 200 === $this->client->getLastCode() ) {
     
    594611        $this->logger->log( __( "Saving fullchain.pem", 'auto-install-free-ssl' ) );
    595612        file_put_contents( $domainPath . DS . 'fullchain.pem', $result );
    596         $this->logger->log_v2( 'SUCCESS', __( "Done!!!! Let's Encrypt ACME V2 SSL certificate successfully issued!!", 'auto-install-free-ssl' ), [
     613        /* translators: "Let's Encrypt" is a nonprofit SSL certificate authority. */
     614        $this->logger->log_v2( 'SUCCESS', __( "Done!!!! Let's Encrypt™ ACME V2 SSL certificate successfully issued!!", 'auto-install-free-ssl' ), [
    597615            'event' => 'gist',
    598616        ] );
     
    639657    private function postNewReg( $key_path )
    640658    {
    641         $this->logger->log( __( "Sending registration to the Let's Encrypt server", 'auto-install-free-ssl' ) );
     659        /* translators: "Let's Encrypt" is a nonprofit SSL certificate authority. */
     660        $this->logger->log( __( "Sending registration to the Let's Encrypt™ server", 'auto-install-free-ssl' ) );
    642661        $data = [
    643662            'termsOfServiceAgreed' => true,
     
    700719            'signature' => $signed64,
    701720        ];
     721        /* translators: %s: URL of the API */
    702722        $this->logger->log( sprintf( __( "Sending signed request to %s", 'auto-install-free-ssl' ), $newAccountUrl ) );
    703723        return $this->client->post( $newAccountUrl, json_encode( $data ) );
     
    740760            'signature' => $signed64,
    741761        ];
     762        /* translators: %s: URL of the API */
    742763        $this->logger->log( sprintf( __( "Sending signed request to %s", 'auto-install-free-ssl' ), $uri ) );
    743764        return $this->client->post( $uri, json_encode( $data ) );
     
    786807                    }
    787808                } else {
    788                     $error_text = sprintf( __( "Error creating kid.txt file. Please create a text file with filename 'kid.txt' in this path %s and paste this text in it (without quotation mark) \"%s\". Then try again.", 'auto-install-free-ssl' ), "<pre>" . \dirname( $this->accountKeyPath ) . "</pre>", $this->kid );
     809                    /* translators: %1$s: A directory path, e.g., /home/username/ssl-cert; %2$s: A kid (characters) generated by Let's Encrypt */
     810                    $error_text = sprintf( __( 'Error creating kid.txt file. Please create a text file with the filename \'kid.txt\' in this path %1$s and paste the following text in it: %2$s Then try again.', 'auto-install-free-ssl' ), "<strong>" . \dirname( $this->accountKeyPath ) . "</strong>", "<pre>" . $this->kid . "</pre>" );
    789811                    $this->logger->log_v2( 'error', $error_text . " " . __( "Closing the connection", 'auto-install-free-ssl' ), [
    790812                        'event' => 'exit',
     
    795817           
    796818            } else {
    797                 $this->logger->log_v2( 'debug', __( "Sorry, there was a problem registering the account. Please try again. Let's Encrypt server response given below.", 'auto-install-free-ssl' ) );
     819                /* translators: "Let's Encrypt" is a nonprofit SSL certificate authority. */
     820                $this->logger->log_v2( 'debug', __( "Sorry, there was a problem registering the account. Please try again. Let's Encrypt™ server response given below.", 'auto-install-free-ssl' ) );
    798821                //Delete the key files as the registration failed
    799822               
     
    817840                if ( strpos( $response['type'], 'invalidEmail' ) !== false ) {
    818841                    $error_text = sprintf(
    819                         __( "Oops! An invalid email id (%s) was set as the admin email of this WordPress website. But Let's Encrypt expects we should register an account with a working email address. So please %s fill in the following text field with your real email id%s and try again. This will update the admin email too.", 'auto-install-free-ssl' ),
     842                        /* translators: %1$s: An email id; %2$s: Opening HTML 'strong' tag; %3$s: Closing 'strong' tag. (Opening and closing 'strong' tags make the enclosed text bold. "Let's Encrypt" is a nonprofit SSL certificate authority.) */
     843                        __( 'Oops! An invalid email id (%1$s) was set as the admin email of this WordPress website. But Let\'s Encrypt™ expects we should register an account with a working email address. So please %2$s fill in the following text field with your real email id %3$s and try again. This will update the admin email too.', 'auto-install-free-ssl' ),
    820844                        implode( ', ', $this->contact ),
    821845                        '<strong>',
     
    826850                    }
    827851                } else {
    828                     $error_text = __( "Oops! There is an error registering your Let's Encrypt account. Error details are given below:", 'auto-install-free-ssl' ) . '<br /><pre>' . print_r( $response, true ) . '</pre>';
     852                    /* translators: "Let's Encrypt" is a nonprofit SSL certificate authority. */
     853                    $error_text = __( "Oops! There is an error registering your Let's Encrypt™ account. Error details are given below:", 'auto-install-free-ssl' ) . '<br /><pre>' . print_r( $response, true ) . '</pre>';
    829854                }
    830855               
  • auto-install-free-ssl/trunk/FreeSSLAuto/src/Acme/Client.php

    r2868890 r2905766  
    3838    {
    3939        if ( !defined( 'ABSPATH' ) ) {
    40             die( __( "Access Denied", 'auto-install-free-ssl' ) );
     40            die( __( "Access denied", 'auto-install-free-ssl' ) );
    4141        }
    4242        $this->base = $base;
     
    104104        if ( !\in_array( $this->lastCode, $expected_status_codes, true ) ) {
    105105            //Failed
    106             $this->logger->log_v2( 'error', sprintf( __( "Sorry, the Let’s Encrypt server response (%d) is unexpected. The complete server response is given below.", 'auto-install-free-ssl' ), $this->lastCode ) );
     106            /* translators: %d: A number i.e., HTTP status code. ("Let's Encrypt" is a nonprofit SSL certificate authority.) */
     107            $this->logger->log_v2( 'error', sprintf( __( "Sorry, the Let's Encrypt™ server response (%d) is unexpected. The complete server response is given below.", 'auto-install-free-ssl' ), $this->lastCode ) );
    107108           
    108109            if ( $this->logger->is_cli() ) {
  • auto-install-free-ssl/trunk/FreeSSLAuto/src/Acme/Factory.php

    r2868890 r2905766  
    3939    {
    4040        if ( !defined( 'ABSPATH' ) ) {
    41             die( __( "Access Denied", 'auto-install-free-ssl' ) );
     41            die( __( "Access denied", 'auto-install-free-ssl' ) );
    4242        }
    4343        $this->certificatesBase = $certificatesBase;
     
    208208        if ( !is_dir( $outputDirectory ) ) {
    209209            //throw new \RuntimeException("Can't create directory ${outputDirectory}. Please manually create the directory in your certificate directory and set permission 0700 and try again.");
     210            /* translators: %s: A directory path */
    210211            $this->logger->exception_sse_friendly( sprintf( __( "Can't create directory %s. Please manually create the directory in your certificate directory, set permission 0700, and try again.", 'auto-install-free-ssl' ), $outputDirectory ), __FILE__, __LINE__ );
    211212        }
  • auto-install-free-ssl/trunk/FreeSSLAuto/src/Admin/AdminNotice.php

    r2886132 r2905766  
    4747    {
    4848        if ( !defined( 'ABSPATH' ) ) {
    49             die( __( "Access Denied", 'auto-install-free-ssl' ) );
     49            die( __( "Access denied", 'auto-install-free-ssl' ) );
    5050        }
    5151        // Set class property
     
    5656         *
    5757         */
    58        
    59         if ( !get_option( 'aifs_number_of_ssl_generated' ) && $this->factory->is_ssl_generated() ) {
    60             add_option( 'aifs_number_of_ssl_generated', 1 );
    61             // since 3.4.0
    62         }
    63        
    64         if ( !get_option( 'aifs_is_generated_ssl_installed' ) && $this->factory->is_generated_ssl_installed() ) {
    65             // or $number_of_ssl_generated >= 1
    66             add_option( 'aifs_is_generated_ssl_installed', 1 );
    67         }
    68        
    69         if ( strlen( get_option( 'aifs_display_review' ) ) === 0 && get_option( 'aifs_is_generated_ssl_installed' ) ) {
    70             // Logic refactored since 3.4.0
    71            
    72             if ( aifs_is_free_version() ) {
    73                 //Display review if a valid SSL installed -> this may slowdown a bit
    74                 //$display_review = $this->factory->is_ssl_installed_on_this_website() === true;
    75                 $display_review = true;
    76             } else {
    77                 //Premium version. So, display review on cPanel only and if a valid SSL installed
    78                 //$display_review = $this->factory->is_cpanel() && $this->factory->is_ssl_installed_on_this_website() === true;
    79                 $display_review = $this->factory->is_cpanel();
    80             }
    81            
    82             if ( $display_review ) {
    83                 add_option( 'aifs_display_review', 1 );
    84             }
    85         }
    86        
     58        $this->factory->add_display_review();
     59        // Logic refactored since 3.4.0
    8760        /*if(isset($this->options['homedir'])){
    8861       
     
    248221                $generate_ssl = new GenerateSSLmanually();
    249222                $renew_button_text = __( "Renew SSL Now", 'auto-install-free-ssl' );
     223                /* translators: %s: A date, e.g., December 30, 2023. */
     224                $msg_before_expiry = sprintf( __( "Your visitors will see a security warning in red and may leave your website if you don't renew the SSL certificate before the expiry date %s.", 'auto-install-free-ssl' ), $expiry_date );
    250225                $html = '<div class="notice notice-error aifs-review">
    251226                            <div class="aifs-review-box">
    252227                              <img class="aifs-notice-img-left" src="' . AIFS_URL . 'assets/img/ssl-error.jpg" />
    253                               <p style="text-align: justify;">' . __( "Hello", 'auto-install-free-ssl' ) . ' ' . aifs_admin_first_name() . ', <span style="color: red;">' . (( time() > $expiry_timestamp ? __( "your visitors will see a security warning in red and may leave your website if you don't renew the SSL certificate URGENTLY.", 'auto-install-free-ssl' ) : sprintf( __( "your visitors will see a security warning in red and may leave your website if you don't renew the SSL certificate before the expiry date %s.", 'auto-install-free-ssl' ), $expiry_date ) )) . '</span> <span style="font-size: small;">(' . sprintf( __( "The validity of %s free SSL is 90 days. They recommend renewing 30 days before expiry.", 'auto-install-free-ssl' ), $issuerShort ) . ')</span><!-- <br /><strong>~' . AIFS_NAME . '</strong>-->
     228                              <p style="text-align: justify;">' . __( "Hello", 'auto-install-free-ssl' ) . ' ' . aifs_admin_first_name() . ', <span style="color: red;">' . (( time() > $expiry_timestamp ? __( "Your visitors will see a security warning in red and may leave your website if you don't renew the SSL certificate URGENTLY.", 'auto-install-free-ssl' ) : $msg_before_expiry )) . '</span> ';
     229                /* translators: %s: Name of the SSL certificate authority, e.g., Let's Encrypt */
     230                $html .= '<span style="font-size: small;">(' . sprintf( __( "The validity of %s free SSL is 90 days. They recommend renewing 30 days before expiry.", 'auto-install-free-ssl' ), $issuerShort ) . ')</span><!-- <br /><strong>~' . AIFS_NAME . '</strong>-->
    254231                              <br /><span style="font-size: medium; line-height: 3em;">' . __( "Tired of renewing & installing SSL certificates manually every 60 days? Try Premium Version, and the plugin will do it automatically!", 'auto-install-free-ssl' ) . '</span></p>
    255232                            </div>
     
    282259            return;
    283260        }
    284         $display_review = get_option( 'aifs_display_review' ) && is_ssl();
     261        $display_review = get_option( 'aifs_display_review' );
    285262        //Get the value of aifs_display_review
    286263       
    287         if ( $display_review_request && $display_review ) {
     264        if ( $display_review_request && is_ssl() && $display_review == 1 ) {
    288265            $already_done = wp_nonce_url( get_site_url() . $_SERVER['REQUEST_URI'], 'aifs_reviewed', 'aifsrated' );
    289266            $remind_later = wp_nonce_url( get_site_url() . $_SERVER['REQUEST_URI'], 'aifs_review_later', 'aifslater' );
     
    291268                        <div class="aifs-review-box">
    292269                          <img class="aifs-notice-img-left" src="' . AIFS_URL . 'assets/img/icon.jpg" />
    293                           <p>' . __( "Hey", 'auto-install-free-ssl' ) . ' ' . aifs_admin_first_name() . ', <strong>' . AIFS_NAME . '</strong> ' . __( "has saved you \$90 by providing Free SSL Certificates and will save more. Please share your experience with us on WordPress (probably with a five-star rating). That will help boost our motivation and spread the word.", 'auto-install-free-ssl' ) . ' <br />~Anindya</p>
     270                          <p>' . __( "Hey", 'auto-install-free-ssl' ) . ' ' . aifs_admin_first_name() . ', ' . sprintf( __( "%s has saved you \$90 by providing Free SSL Certificates and will save more. Please share your experience with us on WordPress (probably with a five-star rating). That will help boost our motivation and spread the word.", 'auto-install-free-ssl' ), '<strong>' . AIFS_NAME . '</strong>' ) . ' <br />~Anindya</p>
    294271                        </div>
    295                         <a class="aifs-review-now aifs-review-button" href="https://wordpress.org/support/plugin/auto-install-free-ssl/reviews/#new-post" target="_blank">' . __( "Click here to Review", 'auto-install-free-ssl' ) . '</a>
     272                        <a class="aifs-review-now aifs-review-button" href="https://wordpress.org/support/plugin/auto-install-free-ssl/reviews/?filter=5#new-post" target="_blank">' . __( "Click here to Review", 'auto-install-free-ssl' ) . '</a>
    296273                        <a class="aifs-review-button" href="' . $already_done . '" rel="nofollow" onclick="return confirm(\'Are you sure you have reviewed ' . AIFS_NAME . ' plugin?\')">' . __( "I have done", 'auto-install-free-ssl' ) . '</a>
    297274                        <a class="aifs-review-button" href="' . $already_done . '" rel="nofollow" onclick="return confirm(\'Are you sure you do NOT want to review ' . AIFS_NAME . ' plugin?\')">' . __( "I don't want to", 'auto-install-free-ssl' ) . '</a>
     
    314291           
    315292            if ( aifs_is_existing_user() ) {
    316                
    317                 if ( time() < strtotime( "January 1, 2023" ) ) {
    318                     $this->general_announcement();
    319                 } else {
    320                     $this->discount_offer_to_existing_users();
    321                 }
    322            
     293                /*if(time() < strtotime("January 1, 2023")) {
     294                            $this->general_announcement();
     295                        }
     296                        else {*/
     297                $this->discount_offer_to_existing_users();
     298                //}
    323299            } else {
    324300                $this->general_announcement();
     
    347323            $already_done = wp_nonce_url( get_site_url() . $_SERVER['REQUEST_URI'], 'aifs_announcement_already_read', 'aifsannouncementdone' );
    348324            $remind_later = wp_nonce_url( get_site_url() . $_SERVER['REQUEST_URI'], 'aifs_announcement_read_later', 'aifsannouncementlater' );
    349            
    350             if ( aifs_is_existing_user() ) {
    351                 $link = menu_page_url( 'auto_install_free_ssl', false );
    352                 $link_text = __( "Claim for FREE", 'auto-install-free-ssl' );
    353                 $already_done_text = __( "I have already claimed", 'auto-install-free-ssl' );
    354                 $dont_want_text = __( "I don't want it", 'auto-install-free-ssl' );
    355                 $already_done_confirmation_text = sprintf( __( "Are you sure you have already claimed the Premium Version of %s for FREE?", 'auto-install-free-ssl' ), AIFS_NAME );
    356                 $dont_want_confirmation_text = sprintf( __( "Are you sure you do NOT want the Premium Version of %s for FREE?", 'auto-install-free-ssl' ), AIFS_NAME );
    357             } else {
    358                 $link = menu_page_url( 'auto_install_free_ssl', false ) . "&comparison=yes";
    359                 $link_text = __( "Comparison Table", 'auto-install-free-ssl' );
    360                 $already_done_text = __( "Got it", 'auto-install-free-ssl' );
    361                 $dont_want_text = __( "I don't want to", 'auto-install-free-ssl' );
    362                 $already_done_confirmation_text = sprintf( __( "Are you sure you know the benefits of the Premium Version of %s compared to the free version?", 'auto-install-free-ssl' ), AIFS_NAME );
    363                 $dont_want_confirmation_text = sprintf( __( "Are you sure you do NOT want to learn the benefits of the Premium Version of %s compared to the free version?", 'auto-install-free-ssl' ), AIFS_NAME );
    364             }
    365            
     325            /*if ( aifs_is_existing_user() ) {
     326                            $link                           = menu_page_url( 'auto_install_free_ssl', false );
     327                            $link_text                      = __( "Claim for FREE", 'auto-install-free-ssl' );
     328                            $already_done_text              = __( "I have already claimed", 'auto-install-free-ssl' );
     329                            $dont_want_text                 = __( "I don't want it", 'auto-install-free-ssl' );
     330                            $already_done_confirmation_text = sprintf(__( "Are you sure you have already claimed the Premium Version of %s for FREE?", 'auto-install-free-ssl' ), AIFS_NAME);
     331                            $dont_want_confirmation_text    = sprintf(__( "Are you sure you do NOT want the Premium Version of %s for FREE?", 'auto-install-free-ssl' ), AIFS_NAME);
     332           
     333                        } else {*/
     334            $link = menu_page_url( 'auto_install_free_ssl', false ) . "&comparison=yes";
     335            $link_text = __( "Comparison Table", 'auto-install-free-ssl' );
     336            $already_done_text = __( "Got it", 'auto-install-free-ssl' );
     337            $dont_want_text = __( "I don't want to", 'auto-install-free-ssl' );
     338            /* translators: %s: Name of this plugin, i.e., 'Auto-Install Free SSL' */
     339            $already_done_confirmation_text = sprintf( __( "Are you sure you know the benefits of the Premium Version of %s compared to the free version?", 'auto-install-free-ssl' ), AIFS_NAME );
     340            /* translators: %s: Name of this plugin, i.e., 'Auto-Install Free SSL' */
     341            $dont_want_confirmation_text = sprintf( __( "Are you sure you do NOT want to learn the benefits of the Premium Version of %s compared to the free version?", 'auto-install-free-ssl' ), AIFS_NAME );
     342            //}
    366343            $html = '<div class="notice notice-success aifs-review">
    367344                    <div class="aifs-review-box">                     
     
    369346            if ( aifs_is_existing_user() ) {
    370347                //$html .= '<a href="' . $link . '">' . __( "click here", 'auto-install-free-ssl' ) . '</a> ' . __( 'and claim a Premium License of', 'auto-install-free-ssl' ) . ' <strong>' . AIFS_NAME . '</strong> ' . __( 'for FREE!', 'auto-install-free-ssl' ) . '<br />';
    371                 $html .= sprintf(
    372                     __( "%s click here%s and claim a Premium License of %s for FREE!", 'auto-install-free-ssl' ),
    373                     '<a href="' . $link . '">',
    374                     '</a>',
    375                     '<strong>' . AIFS_NAME . '</strong>'
    376                 );
    377             }
    378             $html .= sprintf( __( "As we mentioned in our %sannouncement%s dated November 3, 2020, we released the premium version", 'auto-install-free-ssl' ), '<a href="https://freessl.tech/blog/auto-install-free-ssl-needs-your-help-to-survive" target="_blank">', '</a>' );
    379             if ( !aifs_is_existing_user() ) {
    380                 $html .= ' ' . __( "of", 'auto-install-free-ssl' ) . " <strong>" . AIFS_NAME . "</strong>";
    381             }
    382             $html .= ' ' . __( "on June 30, 2022, which is fully automated.", 'auto-install-free-ssl' ) . '</p>';
     348                //$html .= sprintf(__( '%1$s click here%2$s and claim a Premium License of %3$s for FREE!', 'auto-install-free-ssl' ), '<a href="' . $link . '">', '</a>', '<strong>' . AIFS_NAME . '</strong>');
     349            }
     350            $html .= sprintf(
     351                /* translators: %1$s: Opening HTML 'a' tag; %2$s: Closing 'a' tag; %3$s: Name of this plugin, i.e., 'Auto-Install Free SSL'; (Opening and closing 'a' tags create a hyperlink with the enclosed text.) */
     352                __( 'As we mentioned in our %1$s announcement %2$s dated November 3, 2020, we released the premium version of %3$s on June 30, 2022, which is fully automated.', 'auto-install-free-ssl' ),
     353                '<a href="https://freessl.tech/blog/auto-install-free-ssl-needs-your-help-to-survive" target="_blank">',
     354                '</a>',
     355                '<strong>' . AIFS_NAME . '</strong>'
     356            ) . '</p>';
    383357            $html .= '<img class="aifs-notice-img-right" src="' . AIFS_URL . 'assets/img/icon.jpg" />
    384358                    </div>
    385359                    <a class="aifs-review-now aifs-review-button" href="' . $link . '">' . $link_text . '</a>
    386360                    <a class="aifs-review-button" href="' . $already_done . '" rel="nofollow" onclick="return confirm(\'' . $already_done_confirmation_text . '\')">' . $already_done_text . '</a>
    387                     <a class="aifs-review-button" href="' . $already_done . '" rel="nofollow" onclick="return confirm(\'' . $dont_want_confirmation_text . '\')">' . $dont_want_text . '</a>
    388                     <a class="aifs-review-button" href="' . $remind_later . '" rel="nofollow" onclick="return confirm(\'' . sprintf( __( "Do you need %s to remind you later?", 'auto-install-free-ssl' ), AIFS_NAME ) . '\')">' . __( "Remind me later", 'auto-install-free-ssl' ) . '</a>                                     
     361                    <a class="aifs-review-button" href="' . $already_done . '" rel="nofollow" onclick="return confirm(\'' . $dont_want_confirmation_text . '\')">' . $dont_want_text . '</a>';
     362            /* translators: %s: Name of this plugin, i.e., 'Auto-Install Free SSL' */
     363            $html .= '<a class="aifs-review-button" href="' . $remind_later . '" rel="nofollow" onclick="return confirm(\'' . sprintf( __( "Do you need %s to remind you later?", 'auto-install-free-ssl' ), AIFS_NAME ) . '\')">';
     364            $html .= __( "Remind me later", 'auto-install-free-ssl' ) . '</a>                                     
    389365                    </div>';
    390366            echo  $html ;
     
    418394                $already_done_text = __( "I have already purchased", 'auto-install-free-ssl' );
    419395                $dont_want_text = __( "I don't want it", 'auto-install-free-ssl' );
     396                /* translators: %s: Name of this plugin, i.e., 'Auto-Install Free SSL' */
    420397                $already_done_confirmation_text = sprintf( __( "Are you sure you have already purchased the Premium license of %s?", 'auto-install-free-ssl' ), AIFS_NAME );
    421398               
    422399                if ( aifs_is_free_version() ) {
     400                    /* translators: %s: Name of this plugin, i.e., 'Auto-Install Free SSL' */
    423401                    $dont_want_confirmation_text = sprintf( __( "If you do not purchase a premium license, you will need to renew your SSL certificate manually every 60 days. Are you sure you do not want the Premium Version of %s?", 'auto-install-free-ssl' ), AIFS_NAME );
    424402                } else {
    425                     $dont_want_confirmation_text = sprintf( __( "Are you sure you do not want the Premium Version of %s? Suppose you do not purchase a premium license. In that case, your installation will be downgraded to the free plan from January 1, 2023, and you will need to renew your SSL certificate manually every 60 days.", 'auto-install-free-ssl' ), AIFS_NAME );
     403                    $dont_want_confirmation_text = "";
     404                    //$dont_want_confirmation_text = sprintf(__( "Are you sure you do not want the Premium Version of %s? Suppose you do not purchase a premium license. In that case, your installation will be downgraded to the free plan from January 1, 2023, and you will need to renew your SSL certificate manually every 60 days.", 'auto-install-free-ssl' ), AIFS_NAME);
    426405                }
    427406               
     
    433412                    //Text only for free version
    434413                    $html .= sprintf(
    435                         __( "as we mentioned in our %sannouncement%s dated November 3, 2020, we released the premium version of %s on June 30, 2022, which is fully automated, and%s this free version doesn't have any automation feature.%s", 'auto-install-free-ssl' ),
     414                        /* translators: %1$s: Opening HTML 'a' tag; %2$s: Closing 'a' tag; %3$s: Name of this plugin, i.e., 'Auto-Install Free SSL'; (Opening and closing 'a' tags create a hyperlink with the enclosed text.) */
     415                        __( 'As we mentioned in our %1$s announcement %2$s dated November 3, 2020, we released the premium version of %3$s on June 30, 2022, which is fully automated.', 'auto-install-free-ssl' ),
    436416                        '<a href="https://freessl.tech/blog/auto-install-free-ssl-needs-your-help-to-survive" target="_blank">',
    437417                        '</a>',
    438                         '<strong>' . AIFS_NAME . '</strong>',
    439                         '<span style="color: red;">',
    440                         '</span>'
    441                     ) . '<br />';
     418                        '<strong>' . AIFS_NAME . '</strong>'
     419                    ) . ' ';
     420                    $html .= '<span style="color: red;">' . __( "This free version doesn't have any automation feature.", 'auto-install-free-ssl' ) . '</span><br />';
    442421                } else {
    443422                    //Text for premium version
    444                     $html .= '<span style="color: red;">' . sprintf(
    445                         __( "the current free premium %sunlimited sites%s license of '%s' expires on December 31, 2022.", 'auto-install-free-ssl' ),
    446                         '<strong>',
    447                         '</strong>',
    448                         AIFS_NAME
    449                     ) . '</span><br />';
     423                    $html .= "";
     424                    //$html .= '<span style="color: red;">' . sprintf( __( 'the current free premium %1$sunlimited sites%2$s license of \'%3$s\' expires on December 31, 2022.', 'auto-install-free-ssl' ), '<strong>', '</strong>', AIFS_NAME ) . '</span><br />';
    450425                }
    451426               
    452427                $html .= sprintf(
    453                     __( "%sClick here%s to purchase a premium license using this %s discount code: %s", 'auto-install-free-ssl' ),
     428                    /* translators: %1$s: Opening HTML 'a' tag; %2$s: Closing 'a' tag; %3$s: Discount percentage (includes % sign); %4$s: Coupon code for the discount; (Opening and closing 'a' tags create a hyperlink with the enclosed text.) */
     429                    __( '%1$sClick here%2$s to purchase a premium license using this %3$s discount code: %4$s', 'auto-install-free-ssl' ),
    454430                    '<a href="' . $link . '"' . (( aifs_is_free_version() ? '' : ' target="_blank"' )) . '>',
    455431                    '</a>',
    456                     ( time() < strtotime( "February 1, 2023" ) ? '30%' : '20%' ),
     432                    ( time() < strtotime( "February 1, 2023" ) ? __( "30%", 'auto-install-free-ssl' ) : __( "20%", 'auto-install-free-ssl' ) ),
    457433                    '<span style="color: green; font-weight: bold;">' . (( time() < strtotime( "February 1, 2023" ) ? 'THANKYOU' : 'THANKYOU20' )) . '</span>'
    458434                ) . '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;';
     
    462438                $html .= '<a class="aifs-review-now aifs-review-button" href="' . $link . '"' . (( aifs_is_free_version() ? '' : ' target="_blank"' )) . '>' . $link_text . '</a>';
    463439                $html .= '<a class="aifs-review-button" href="' . $already_done . '" rel="nofollow" onclick="return confirm(\'' . $already_done_confirmation_text . '\')">' . $already_done_text . '</a>
    464                             <a class="aifs-review-button" href="' . $already_done . '" rel="nofollow" onclick="return confirm(\'' . $dont_want_confirmation_text . '\')">' . $dont_want_text . '</a>
    465                             <a class="aifs-review-button" href="' . $remind_later . '" rel="nofollow" onclick="return confirm(\'' . sprintf( __( "Do you need %s to remind you later?", 'auto-install-free-ssl' ), AIFS_NAME ) . '\')">' . __( "Remind me later", 'auto-install-free-ssl' ) . '</a>                                     
     440                            <a class="aifs-review-button" href="' . $already_done . '" rel="nofollow" onclick="return confirm(\'' . $dont_want_confirmation_text . '\')">' . $dont_want_text . '</a>';
     441                /* translators: %s: Name of this plugin, i.e., 'Auto-Install Free SSL' */
     442                $html .= '<a class="aifs-review-button" href="' . $remind_later . '" rel="nofollow" onclick="return confirm(\'' . sprintf( __( "Do you need %s to remind you later?", 'auto-install-free-ssl' ), AIFS_NAME ) . '\')">';
     443                $html .= __( "Remind me later", 'auto-install-free-ssl' ) . '</a>                                     
    466444                            </div>';
    467445                echo  $html ;
     
    485463        if ( isset( $_GET['aifsrated'] ) ) {
    486464            if ( !wp_verify_nonce( $_GET['aifsrated'], 'aifs_reviewed' ) ) {
    487                 wp_die( __( "Access Denied", 'auto-install-free-ssl' ) );
     465                wp_die( __( "Access denied", 'auto-install-free-ssl' ) );
    488466            }
    489467            update_option( 'aifs_display_review', 0 );
     
    493471            if ( isset( $_GET['aifslater'] ) ) {
    494472                if ( !wp_verify_nonce( $_GET['aifslater'], 'aifs_review_later' ) ) {
    495                     wp_die( __( "Access Denied", 'auto-install-free-ssl' ) );
     473                    wp_die( __( "Access denied", 'auto-install-free-ssl' ) );
    496474                }
    497475                update_option( 'aifs_display_review', 5 );
     
    506484        if ( isset( $_GET['aifsannouncementdone'] ) ) {
    507485            if ( !wp_verify_nonce( $_GET['aifsannouncementdone'], 'aifs_announcement_already_read' ) ) {
    508                 wp_die( __( "Access Denied", 'auto-install-free-ssl' ) );
     486                wp_die( __( "Access denied", 'auto-install-free-ssl' ) );
    509487            }
    510488            update_option( 'aifs_display_free_premium_offer', 0 );
     
    514492            if ( isset( $_GET['aifsannouncementlater'] ) ) {
    515493                if ( !wp_verify_nonce( $_GET['aifsannouncementlater'], 'aifs_announcement_read_later' ) ) {
    516                     wp_die( __( "Access Denied", 'auto-install-free-ssl' ) );
     494                    wp_die( __( "Access denied", 'auto-install-free-ssl' ) );
    517495                }
    518496                update_option( 'aifs_display_free_premium_offer', 5 );
     
    527505        if ( isset( $_GET['aifsrenewssllater'] ) ) {
    528506            if ( !wp_verify_nonce( $_GET['aifsrenewssllater'], 'aifs_renew_ssl_later' ) ) {
    529                 wp_die( __( "Access Denied", 'auto-install-free-ssl' ) );
     507                wp_die( __( "Access denied", 'auto-install-free-ssl' ) );
    530508            }
    531509            update_option( 'aifs_renew_ssl_later_requested_timestamp', time() );
     
    537515        if ( isset( $_GET['aifsdiscountofferdone'] ) ) {
    538516            if ( !wp_verify_nonce( $_GET['aifsdiscountofferdone'], 'aifs_discount_offer_already_read' ) ) {
    539                 wp_die( __( "Access Denied", 'auto-install-free-ssl' ) );
     517                wp_die( __( "Access denied", 'auto-install-free-ssl' ) );
    540518            }
    541519            update_option( 'aifs_display_discount_offer_existing_users', 0 );
     
    545523            if ( isset( $_GET['aifsdiscountofferlater'] ) ) {
    546524                if ( !wp_verify_nonce( $_GET['aifsdiscountofferlater'], 'aifs_discount_offer_read_later' ) ) {
    547                     wp_die( __( "Access Denied", 'auto-install-free-ssl' ) );
     525                    wp_die( __( "Access denied", 'auto-install-free-ssl' ) );
    548526                }
    549527                update_option( 'aifs_display_discount_offer_existing_users', 5 );
  • auto-install-free-ssl/trunk/FreeSSLAuto/src/Admin/AutoDataEntry.php

    r2793094 r2905766  
    4545    {
    4646        if (!defined('ABSPATH')) {
    47             die(__( "Access Denied", 'auto-install-free-ssl' ));
     47            die(__( "Access denied", 'auto-install-free-ssl' ));
    4848        }
    4949       
  • auto-install-free-ssl/trunk/FreeSSLAuto/src/Admin/Factory.php

    r2886132 r2905766  
    4040    {
    4141        if ( !defined( 'ABSPATH' ) ) {
    42             die( __( "Access Denied", 'auto-install-free-ssl' ) );
     42            die( __( "Access denied", 'auto-install-free-ssl' ) );
    4343        }
    4444        $this->logger = new Logger();
     
    6060        if ( !is_dir( $dirPath ) ) {
    6161            //throw new InvalidArgumentException("${dirPath} must be a directory");
     62            /* translators: %s: A directory path */
    6263            $this->logger->exception_sse_friendly( sprintf( __( "%s must be a directory", 'auto-install-free-ssl' ), $dirPath ), __FILE__, __LINE__ );
    6364        }
     
    695696        if ( !is_dir( AIFS_UPLOAD_DIR ) ) {
    696697            //throw new \RuntimeException("Can't create directory '".AIFS_UPLOAD_DIR."'. Please manually create it, set permission 0755 and try again.");
    697             $this->logger->exception_sse_friendly( sprintf( __( "Can't create the directory '%s'. Please manually create it, set permission %s, and try again.", 'auto-install-free-ssl' ), AIFS_UPLOAD_DIR, '0700' ), __FILE__, __LINE__ );
     698            /* translators: %1$s: A directory path, e.g., /home/user/public_html, %2$s: Directory permissions number, e.g., 0700 */
     699            $this->logger->exception_sse_friendly( sprintf( __( 'Can not create the directory %1$s. Please manually create it, set permission %2$s, and try again.', 'auto-install-free-ssl' ), AIFS_UPLOAD_DIR, '0700' ), __FILE__, __LINE__ );
    698700        }
    699701       
     
    714716            if ( !is_writable( AIFS_UPLOAD_DIR ) ) {
    715717                //throw new \RuntimeException("The directory '".AIFS_UPLOAD_DIR."' is not writable. Please manually set permission 0755 or 0777 to this directory and try again.");
     718                /* translators: %s: A directory path, e.g., /home/user/public_html */
    716719                $this->logger->exception_sse_friendly( sprintf( __( "The directory '%s' is not writable. Please manually set the permission 0755 or 0777 to this directory and try again.", 'auto-install-free-ssl' ), AIFS_UPLOAD_DIR ), __FILE__, __LINE__ );
    717720            }
     
    774777                //throw new \RuntimeException("Can't create .htaccess file in the directory '".$dir_path."'. Please manually create it, and paste the above code in it.");
    775778                $this->logger->exception_sse_friendly( sprintf(
    776                     __( "Can't create the '%s' file in the directory '%s'. Please manually create it, and paste this code into it: %s", 'auto-install-free-ssl' ),
     779                    /* translators: %1$s: A file name; %2$s: A directory path; %3$s: Code that will be written in the file */
     780                    __( 'Can\'t create the \'%1$s\' file in the directory \'%2$s\'. Please manually create it, and paste this code into it: %3$s', 'auto-install-free-ssl' ),
    777781                    $file,
    778782                    $dir_path,
     
    797801                //throw new \RuntimeException("Can't create .htaccess file in the directory '".$dir_path."'. Please manually create it, and paste the above code in it.");
    798802                $this->logger->exception_sse_friendly( sprintf(
    799                     __( "Can't create the '%s' file in the directory '%s'. Please manually create it, and paste this code into it: %s", 'auto-install-free-ssl' ),
     803                    /* translators: %1$s: A file name; %2$s: A directory path; %3$s: Code that will be written in the file */
     804                    __( 'Can\'t create the \'%1$s\' file in the directory \'%2$s\'. Please manually create it, and paste this code into it: %3$s', 'auto-install-free-ssl' ),
    800805                    $file,
    801806                    $dir_path,
     
    903908        if ( count( $domain_online ) < 2 ) {
    904909            $link = "https://www.whatsmydns.net/#A/" . $offline_domain;
     910            /* translators: %s: A domain name, e.g., example.com */
    905911            $html .= "<p style='font-size: 1em; color: red;'>" . sprintf( __( "%s is offline.", 'auto-install-free-ssl' ), "<em>{$offline_domain}</em>" );
    906912            $html .= " " . __( "Please point it to this hosting if you need SSL for it too.", 'auto-install-free-ssl' ) . "<br /><br />";
    907             $html .= sprintf( __( "After you do so, wait to propagate the DNS record. Please%s click here%s to check the DNS record propagation status. Proceed if you see green tick marks for almost all locations in the list and map.", 'auto-install-free-ssl' ), "<a href='{$link}' target='_blank'>", "</a>" ) . "</p>";
     913            /* translators: %s: HTML code to create a hyperlink with the text 'click here' */
     914            $html .= sprintf( __( "After you do so, wait to propagate the DNS record. Please %sclick here%s to check the DNS record propagation status. Proceed if you see green tick marks for almost all locations in the list and map.", 'auto-install-free-ssl' ), "<a href='{$link}' target='_blank'>", "</a>" ) . "</p>";
    908915        }
    909916       
     
    12671274        return false;
    12681275    }
     1276   
     1277    /**
     1278     * Add 'aifs_display_review' option if the conditions are true
     1279     * @since 3.4.2
     1280     */
     1281    public function add_display_review()
     1282    {
     1283       
     1284        if ( !get_option( 'aifs_number_of_ssl_generated' ) && $this->is_ssl_generated() ) {
     1285            add_option( 'aifs_number_of_ssl_generated', 1 );
     1286            // since 3.4.0
     1287        }
     1288       
     1289        if ( !get_option( 'aifs_is_generated_ssl_installed' ) && $this->is_generated_ssl_installed() ) {
     1290            // or $number_of_ssl_generated >= 1
     1291            add_option( 'aifs_is_generated_ssl_installed', 1 );
     1292        }
     1293       
     1294        if ( strlen( get_option( 'aifs_display_review' ) ) === 0 && get_option( 'aifs_is_generated_ssl_installed' ) ) {
     1295            // Logic refactored since 3.4.0
     1296           
     1297            if ( aifs_is_free_version() ) {
     1298                //Display review if a valid SSL installed -> this may slowdown a bit
     1299                //$display_review = $this->factory->is_ssl_installed_on_this_website() === true;
     1300                $display_review = true;
     1301            } else {
     1302                //Premium version. So, display review on cPanel only and if a valid SSL installed
     1303                //$display_review = $this->factory->is_cpanel() && $this->factory->is_ssl_installed_on_this_website() === true;
     1304                $display_review = $this->is_cpanel();
     1305            }
     1306           
     1307            if ( $display_review ) {
     1308                add_option( 'aifs_display_review', 1 );
     1309            }
     1310        }
     1311   
     1312    }
    12691313
    12701314}
  • auto-install-free-ssl/trunk/FreeSSLAuto/src/Admin/ForceHttpsPage.php

    r2886132 r2905766  
    4444    {
    4545        if (!defined('ABSPATH')) {
    46             die(__( "Access Denied", 'auto-install-free-ssl' ));
     46            die(__( "Access denied", 'auto-install-free-ssl' ));
    4747        }
    4848       
  • auto-install-free-ssl/trunk/FreeSSLAuto/src/Admin/ForceSSL.php

    r2886132 r2905766  
    5454    {
    5555        if ( !defined( 'ABSPATH' ) ) {
    56             die( __( "Access Denied", 'auto-install-free-ssl' ) );
     56            die( __( "Access denied", 'auto-install-free-ssl' ) );
    5757        }
    5858        //Following function should be called for any value of aifs_force_ssl, so that revert to HTTP possible from admin dashboard
     
    312312                if ( !is_ssl() ) {
    313313                    $html .= '<p>' . __( "Clicking this button will immediately force your website to load over HTTPS and may prompt you to log in again.", 'auto-install-free-ssl' ) . '</p>';
    314                     $html .= '<p><strong>' . __( "WARNING", 'auto-install-free-ssl' ) . ':</strong> ' . sprintf( __( "If the SSL certificate is not installed correctly, clicking this button may cause issues accessing the website. So, please click this link first: %s and check for HTTPS in the address bar.", 'auto-install-free-ssl' ), '<a href="https://' . $site_url . '" target="_blank">https://' . $site_url . '</a>' ) . '</p>';
     314                    $html .= '<p><strong>' . __( "WARNING", 'auto-install-free-ssl' ) . ':</strong> ';
     315                    /* translators: %s: A website address with a hyperlink, e.g., https://example.com */
     316                    $html .= sprintf( __( "If the SSL certificate is not installed correctly, clicking this button may cause issues accessing the website. So, please click this link first: %s and check for HTTPS in the address bar.", 'auto-install-free-ssl' ), '<a href="https://' . $site_url . '" target="_blank">https://' . $site_url . '</a>' ) . '</p>';
    315317                }
    316318               
    317                 $html .= '<p>' . __( "If you face issues after clicking this button, please revert to HTTP.", 'auto-install-free-ssl' ) . '<strong> ' . __( "Please don't worry; as soon as you click the button, we'll send you an automated email with a link. If you need to revert to HTTP, click that link.", 'auto-install-free-ssl' ) . '</strong> ' . __( "Please check your spam folder if you don't find that email in your inbox.", 'auto-install-free-ssl' ) . '</p>' . '<p>' . sprintf( __( "But if the issue persists even after you click that link, please %sclick here%s for documentation on more options on how to revert to HTTP.", 'auto-install-free-ssl' ), '<a href="https://freessl.tech/free-ssl-certificate-for-wordpress-website/#reverthttp" target="_blank">', '</a>' ) . '</p>';
     319                $html .= '<p>' . __( "If you face issues after clicking this button, please revert to HTTP.", 'auto-install-free-ssl' ) . '<strong> ' . __( "Please don't worry; as soon as you click the button, we'll send you an automated email with a link. If you need to revert to HTTP, click that link.", 'auto-install-free-ssl' ) . '</strong> ' . __( "Please check your spam folder if you don't find that email in your inbox.", 'auto-install-free-ssl' ) . '</p>';
     320                /* translators: %s: HTML code to create a hyperlink with the text 'click here' */
     321                $html .= '<p>' . sprintf( __( "But if the issue persists even after you click that link, please %sclick here%s for documentation on more options on how to revert to HTTP.", 'auto-install-free-ssl' ), '<a href="https://freessl.tech/free-ssl-certificate-for-wordpress-website/#reverthttp" target="_blank">', '</a>' ) . '</p>';
    318322                $html .= $this->force_ssl_form( 1 );
    319323            } else {
     
    345349           
    346350            if ( !wp_verify_nonce( $_POST['aifs-activate-force-ssl'], 'aifsforcessl' ) ) {
    347                 wp_die( __( "Access Denied", 'auto-install-free-ssl' ) );
     351                wp_die( __( "Access denied", 'auto-install-free-ssl' ) );
    348352            } else {
    349353                /* Check if a valid SSL installed on this website - START */
     
    357361                        if ( !$ssl_details['domain_other_version']['ssl_installed'] ) {
    358362                            $text_display = sprintf(
    359                                 __( "No %svalid%s SSL is installed on %s and %s. %sPlease install an SSL certificate on this website and try again.%s", 'auto-install-free-ssl' ),
     363                                /* translators: %1$s: Opening HTML 'strong' tag; %2$s: Closing 'strong' tag; %3$s: A domain name, e.g., example.com; %4$s: Another domain name, e.g., www.example.com; (Opening and closing 'strong' tags make the enclosed text bold.) */
     364                                __( 'No %1$svalid%2$s SSL is installed on %3$s and %4$s. %1$sPlease install an SSL certificate on this website and try again.%2$s', 'auto-install-free-ssl' ),
    360365                                '<strong>',
    361366                                '</strong>',
    362367                                $ssl_details['domain_site']['url'],
    363                                 $ssl_details['domain_other_version']['url'],
    364                                 '<strong>',
    365                                 '</strong>'
     368                                $ssl_details['domain_other_version']['url']
    366369                            );
    367370                           
     
    376379                            $link_title = __( "Click here to change WordPress Address (URL) & Site Address (URL)", 'auto-install-free-ssl' );
    377380                            $text_display = sprintf(
    378                                 __( "The installed SSL covers only %s. But it doesn't cover %s. %sPlease either change your %sWordPress Address (URL) & Site Address (URL)%s or install an SSL certificate that covers %s", 'auto-install-free-ssl' ),
     381                                /* translators: %1$s: A domain name, e.g., example.com; %2$s: Another domain name, e.g., www.example.com; %3$s: Opening HTML 'strong' tag; %4$s: Opening HTML 'a' tag; %5$s: Closing 'a' tag; %6$s: Closing 'strong' tag. (Opening and closing 'strong' tags make the enclosed text bold. Opening and closing 'a' tags create a hyperlink with the enclosed text.) */
     382                                __( 'The installed SSL covers only %1$s. But it does not cover %2$s. %3$sPlease either change your %4$sWordPress Address (URL) & Site Address (URL)%5$s or install an SSL certificate that covers %2$s. %6$s', 'auto-install-free-ssl' ),
    379383                                $ssl_details['domain_other_version']['url'],
    380384                                $ssl_details['domain_site']['url'],
     
    382386                                '<a href="' . $general_settings . '" title="' . $link_title . '">',
    383387                                '</a>',
    384                                 $ssl_details['domain_site']['url'] . '.</strong>'
     388                                '</strong>'
    385389                            );
    386390                            $text_display .= __( "Error cause", 'auto-install-free-ssl' ) . ": " . $ssl_details['domain_site']['error_cause'] . ".";
     
    466470       
    467471        $revert_url = str_replace( 'https:', 'http:', site_url() ) . "/?aifs_revert_http_nonce=" . $revert_nonce;
    468         $subject = sprintf( __( "'%s' has activated Force HTTPS on your website %s.", 'auto-install-free-ssl' ), AIFS_NAME, aifs_get_domain( false ) );
     472        /* translators: %1$s: Name of this plugin, i.e., 'Auto-Install Free SSL'; %2$s: A domain name, e.g., example.com */
     473        $subject = sprintf( __( '\'%1$s\' has activated Force HTTPS on your website %2$s.', 'auto-install-free-ssl' ), AIFS_NAME, aifs_get_domain( false ) );
    469474        $headers[] = 'MIME-Version: 1.0';
    470475        $headers[] = 'Content-type: text/html; charset=UTF-8';
     
    473478        $body = "<html><body>";
    474479        $body .= __( "Hello", 'auto-install-free-ssl' ) . " " . aifs_admin_first_name() . ",<br /><br />";
     480        /* translators: %s: A domain name, e.g., example.com */
    475481        $body .= sprintf( __( "We have successfully activated Force HTTPS on your website, %s.", 'auto-install-free-ssl' ), aifs_get_domain( false ) ) . "<br /><br />";
    476482        $body .= sprintf(
    477             __( "Please refresh your website to get the padlock. Don't you see it? If your theme can %sregenerate CSS files%s, please do it. Otherwise, search the theme and plugins for %shardcoded URLs%s, if any, and fix them. Don't hesitate to contact us at %s for any help.", 'auto-install-free-ssl' ),
    478             '<strong>',
    479             '</strong>',
     483            /* translators: %1$s and %2$s: HTML code to make the enclosed text bold. Please keep their order the same. Otherwise, you'll break the style. %3$s: An email id. */
     484            __( 'Please refresh your website to get the padlock. Do not you see it? If your theme can %1$sregenerate CSS files%2$s, please do it. Otherwise, you can just search the theme and plugins for %1$shardcoded URLs%2$s, if any, and fix them. Do not hesitate to contact us at %3$s for any help.', 'auto-install-free-ssl' ),
    480485            '<strong>',
    481486            '</strong>',
     
    485490        $body .= "<a href='{$revert_url}'>{$revert_url}</a><br /><br />";
    486491        $body .= __( "Clicking the above link will instantly deactivate force HTTPS and revert your website to HTTP.", 'auto-install-free-ssl' ) . "<br /><br />";
     492        /* translators: %s: placeholders for HTML code create a hyperlink with the word 'click here'. */
    487493        $body .= sprintf( __( "But if the issue persists, %sclick here%s for documentation on more options on how to revert to HTTP.", 'auto-install-free-ssl' ), '<a href="https://freessl.tech/free-ssl-certificate-for-wordpress-website/#reverthttp" target="_blank">', '</a>' ) . "<br /><br />";
    488494        $email = new Email();
  • auto-install-free-ssl/trunk/FreeSSLAuto/src/Admin/GenerateSSLmanually.php

    r2886132 r2905766  
    6161    {
    6262        if (!defined('ABSPATH')) {
    63             die(__( "Access Denied", 'auto-install-free-ssl' ));
     63            die(__( "Access denied", 'auto-install-free-ssl' ));
    6464        }
    6565
     
    253253                            <!--
    254254                            <p><?php //echo __( "Did you know that automated SSL Certificate installation is possible with our Premium Version?" ) ?></p>
    255                             <p><?php //echo sprintf(__( "Do you need automation for all the steps? %sUpgrade to the %sPremium Version%s.", 'auto-install-free-ssl' ), '<br />', '<a href="'. $this->factory->upgrade_url() .'">', '</a>') ?></p>
     255                            <p><?php //echo sprintf(__( 'Do you need automation for all the steps? %1$sUpgrade to the %2$sPremium Version%3$s.', 'auto-install-free-ssl' ), '<br />', '<a href="'. $this->factory->upgrade_url() .'">', '</a>') ?></p>
    256256                            -->
    257257                        </td>
     
    358358                <tr>
    359359                    <td class="card block-body" style="width: 100%; padding: 0.5% 1.5% 0.5% 1.5%; background-color: #adff2f;" colspan="2">
    360                         <p style="color: black; font-size: 1.2em;"><?= sprintf(__("Hello %s! Enjoy %s automation with our PRO version. Why waste your valuable time with manual SSL renewal every 60 days?", 'auto-install-free-ssl'), aifs_admin_first_name(), ($this->factory->is_cpanel()? "100%" : "")) ?></p>
     360                        <p style="color: black; font-size: 1.2em;"><?php //echo sprintf(__('Hello %1$s! Enjoy %2$s automation with our PRO version. Why waste your valuable time with manual SSL renewal every 60 days?', 'auto-install-free-ssl'), aifs_admin_first_name(), ($this->factory->is_cpanel()? __("100%", 'auto-install-free-ssl') : "")) ?></p>
    361361                    </td>
    362362                </tr>
    363363                <tr>
    364364                    <td class="card block-body" style="width: 50%; padding-left: 1.5%;">
    365                         <h3><?= __( "Comparison of Free vs. Pro Version", 'auto-install-free-ssl' ) ?></h3>
     365                        <h3><?php //echo __( "Comparison of Free vs. Pro Version", 'auto-install-free-ssl' ) ?></h3>
    366366                        <p style="color: green;">&nbsp;</p>
    367367                        <table style="width: 100%; margin-top: 2%;" border="1" cellspacing="0">
    368368                            <thead>
    369369                                <tr>
    370                                     <th id="columnname" class="manage-column column-columnname" scope="col"><?= __( "Feature", 'auto-install-free-ssl' ) ?></th>
    371                                     <th id="columnname" class="manage-column column-columnname" scope="col"><?= __( "Free", 'auto-install-free-ssl' ) ?></th>
    372                                     <th id="columnname" class="manage-column column-columnname pro-version" scope="col"><?= __( "Pro", 'auto-install-free-ssl' ) ?></th>
    373                                     <th id="columnname" class="manage-column column-columnname pro-version" scope="col"><?= __( "Pro Unlimited", 'auto-install-free-ssl' ) ?></th>
     370                                    <th id="columnname" class="manage-column column-columnname" scope="col"><?php //echo __( "Feature", 'auto-install-free-ssl' ) ?></th>
     371                                    <th id="columnname" class="manage-column column-columnname" scope="col"><?php //echo __( "Free", 'auto-install-free-ssl' ) ?></th>
     372                                    <th id="columnname" class="manage-column column-columnname pro-version" scope="col"><?php //echo __( "Pro", 'auto-install-free-ssl' ) ?></th>
     373                                    <th id="columnname" class="manage-column column-columnname pro-version" scope="col"><?php //echo __( "Pro Unlimited", 'auto-install-free-ssl' ) ?></th>
    374374                                </tr>
    375375                            </thead>
     
    377377                            <tbody>
    378378                                <tr class="alternate">
    379                                     <td scope="row"><?= __( "Domain Verification", 'auto-install-free-ssl' ) ?></td>
    380                                     <td><?= __( "Manual", 'auto-install-free-ssl' ) ?></td>
    381                                     <td class="pro-version"><?= __( "Automatic", 'auto-install-free-ssl' ) ?></td>
    382                                     <td class="pro-version"><?= __( "Automatic", 'auto-install-free-ssl' ) ?></td>
     379                                    <td scope="row"><?php //echo __( "Domain Verification", 'auto-install-free-ssl' ) ?></td>
     380                                    <td><?php //echo __( "Manual", 'auto-install-free-ssl' ) ?></td>
     381                                    <td class="pro-version"><?php //echo __( "Automatic", 'auto-install-free-ssl' ) ?></td>
     382                                    <td class="pro-version"><?php //echo __( "Automatic", 'auto-install-free-ssl' ) ?></td>
    383383                                </tr>
    384384                                <tr>
    385                                     <td><?= __( "Generate SSL", 'auto-install-free-ssl' ) ?></td>
    386                                     <td><?= __( "Manual", 'auto-install-free-ssl' ) ?></td>
    387                                     <td class="pro-version"><?= __("Automatic", 'auto-install-free-ssl') ?></td>
    388                                     <td class="pro-version"><?= __("Automatic", 'auto-install-free-ssl') ?></td>
     385                                    <td><?php //echo __( "Generate SSL", 'auto-install-free-ssl' ) ?></td>
     386                                    <td><?php //echo __( "Manual", 'auto-install-free-ssl' ) ?></td>
     387                                    <td class="pro-version"><?php //echo __("Automatic", 'auto-install-free-ssl') ?></td>
     388                                    <td class="pro-version"><?php //echo __("Automatic", 'auto-install-free-ssl') ?></td>
    389389                                </tr>
    390390                                <tr class="alternate">
    391                                     <td><?= __( "SSL Installation", 'auto-install-free-ssl' ) ?></td>
    392                                     <td><?= __( "Manual", 'auto-install-free-ssl' ) ?></td>
    393                                     <td class="pro-version"><?= __("Automatic", 'auto-install-free-ssl') ?></td>
    394                                     <td class="pro-version"><?= __("Automatic", 'auto-install-free-ssl') ?></td>
     391                                    <td><?php //echo __( "SSL Installation", 'auto-install-free-ssl' ) ?></td>
     392                                    <td><?php //echo __( "Manual", 'auto-install-free-ssl' ) ?></td>
     393                                    <td class="pro-version"><?php //echo __("Automatic", 'auto-install-free-ssl') ?></td>
     394                                    <td class="pro-version"><?php //echo __("Automatic", 'auto-install-free-ssl') ?></td>
    395395                                </tr>
    396396                                <tr>
    397                                     <td><?= __( "Cron Job", 'auto-install-free-ssl' ) ?></td>
    398                                     <td><?= __( "No", 'auto-install-free-ssl' ) ?></td>
    399                                     <td class="pro-version"><?= __( "Automatic", 'auto-install-free-ssl' ) ?></td>
    400                                     <td class="pro-version"><?= __( "Automatic", 'auto-install-free-ssl' ) ?></td>
     397                                    <td><?php //echo __( "Cron Job", 'auto-install-free-ssl' ) ?></td>
     398                                    <td><?php //echo __( "No", 'auto-install-free-ssl' ) ?></td>
     399                                    <td class="pro-version"><?php //echo __( "Automatic", 'auto-install-free-ssl' ) ?></td>
     400                                    <td class="pro-version"><?php //echo __( "Automatic", 'auto-install-free-ssl' ) ?></td>
    401401                                </tr>
    402402                                <tr class="alternate">
    403                                     <td><?= __( "SSL Renewal", 'auto-install-free-ssl' ) ?></td>
    404                                     <td><?= __( "Manual", 'auto-install-free-ssl' ) ?></td>
    405                                     <td class="pro-version"><?= __( "Automatic", 'auto-install-free-ssl' ) ?></td>
    406                                     <td class="pro-version"><?= __( "Automatic", 'auto-install-free-ssl' ) ?></td>
     403                                    <td><?php //echo __( "SSL Renewal", 'auto-install-free-ssl' ) ?></td>
     404                                    <td><?php //echo __( "Manual", 'auto-install-free-ssl' ) ?></td>
     405                                    <td class="pro-version"><?php //echo __( "Automatic", 'auto-install-free-ssl' ) ?></td>
     406                                    <td class="pro-version"><?php //echo __( "Automatic", 'auto-install-free-ssl' ) ?></td>
    407407                                </tr>
    408408                                <tr>
    409                                     <td><?= __( "Time Required to Set Up", 'auto-install-free-ssl' ) ?></td>
    410                                     <td><?= __( "20+ Min (per 60 days)", 'auto-install-free-ssl' ) ?></td>
    411                                     <td class="pro-version"><?= __( "1 Min (once)", 'auto-install-free-ssl' ) ?></td>
    412                                     <td class="pro-version"><?= __( "1 Min (once)", 'auto-install-free-ssl' ) ?> <sup>*</sup></td>
     409                                    <td><?php //echo __( "Time Required to Set Up", 'auto-install-free-ssl' ) ?></td>
     410                                    <td><?php //echo __( "20+ Min (per 60 days)", 'auto-install-free-ssl' ) ?></td>
     411                                    <td class="pro-version"><?php //echo __( "1 Min (once)", 'auto-install-free-ssl' ) ?></td>
     412                                    <td class="pro-version"><?php //echo __( "1 Min (once)", 'auto-install-free-ssl' ) ?> <sup>*</sup></td>
    413413                                </tr>
    414414                                <tr class="alternate">
    415                                     <td><?= __( "Wildcard SSL", 'auto-install-free-ssl' ) ?></td>
    416                                     <td><?= __( "No", 'auto-install-free-ssl' ) ?></td>
    417                                     <td><?= __( "No", 'auto-install-free-ssl' ) ?></td>
    418                                     <td class="pro-version"><?= __( "Yes", 'auto-install-free-ssl' ) ?></td>
     415                                    <td><?php //echo __( "Wildcard SSL", 'auto-install-free-ssl' ) ?></td>
     416                                    <td><?php //echo __( "No", 'auto-install-free-ssl' ) ?></td>
     417                                    <td><?php //echo __( "No", 'auto-install-free-ssl' ) ?></td>
     418                                    <td class="pro-version"><?php //echo __( "Yes", 'auto-install-free-ssl' ) ?></td>
    419419                                </tr>
    420420                                <tr>
    421                                     <td><?= __( "Multisite Support", 'auto-install-free-ssl' ) ?></td>
    422                                     <td><?= __( "No", 'auto-install-free-ssl' ) ?></td>
    423                                     <td><?= __( "No", 'auto-install-free-ssl' ) ?></td>
    424                                     <td class="pro-version"><?= __( "Yes", 'auto-install-free-ssl' ) ?></td>
     421                                    <td><?php //echo __( "Multisite Support", 'auto-install-free-ssl' ) ?></td>
     422                                    <td><?php //echo __( "No", 'auto-install-free-ssl' ) ?></td>
     423                                    <td><?php //echo __( "No", 'auto-install-free-ssl' ) ?></td>
     424                                    <td class="pro-version"><?php //echo __( "Yes", 'auto-install-free-ssl' ) ?></td>
    425425                                </tr>
    426426                                <tr class="alternate">
    427                                     <td><?= __( "SSL Expiration Chance", 'auto-install-free-ssl' ) ?></td>
    428                                     <td><?= __( "High", 'auto-install-free-ssl' ) ?></td>
    429                                     <td class="pro-version"><?= __( "No", 'auto-install-free-ssl' ) ?></td>
    430                                     <td class="pro-version"><?= __( "No", 'auto-install-free-ssl' ) ?></td>
     427                                    <td><?php //echo __( "SSL Expiration Chance", 'auto-install-free-ssl' ) ?></td>
     428                                    <td><?php //echo __( "High", 'auto-install-free-ssl' ) ?></td>
     429                                    <td class="pro-version"><?php //echo __( "No", 'auto-install-free-ssl' ) ?></td>
     430                                    <td class="pro-version"><?php //echo __( "No", 'auto-install-free-ssl' ) ?></td>
    431431                                </tr>
    432432                                <tr>
    433                                     <td><?= sprintf( __( "One installation works on all%s websites of a cPanel", 'auto-install-free-ssl' ), '<br />') ?></td>
    434                                     <td><?= __( "No", 'auto-install-free-ssl' ) ?></td>
    435                                     <td><?= __( "No", 'auto-install-free-ssl' ) ?></td>
    436                                     <td class="pro-version"><?= __( "Yes", 'auto-install-free-ssl' ) ?></td>
     433                                    <td><?php //echo sprintf( __( "One installation works on all%s websites of a cPanel", 'auto-install-free-ssl' ), '<br />') ?></td>
     434                                    <td><?php //echo __( "No", 'auto-install-free-ssl' ) ?></td>
     435                                    <td><?php //echo __( "No", 'auto-install-free-ssl' ) ?></td>
     436                                    <td class="pro-version"><?php //echo __( "Yes", 'auto-install-free-ssl' ) ?></td>
    437437                                </tr>
    438438                                <tr class="alternate">
    439                                     <td><?= __( "Support", 'auto-install-free-ssl' ) ?></td>
    440                                     <td><?= __( "Forum", 'auto-install-free-ssl' ) ?></td>
    441                                     <td class="pro-version"><?= __( "Email", 'auto-install-free-ssl' ) ?></td>
    442                                     <td class="pro-version"><?= __( "Email/Phone", 'auto-install-free-ssl' ) ?></td>
     439                                    <td><?php //echo __( "Support", 'auto-install-free-ssl' ) ?></td>
     440                                    <td><?php //echo __( "Forum", 'auto-install-free-ssl' ) ?></td>
     441                                    <td class="pro-version"><?php //echo __( "Email", 'auto-install-free-ssl' ) ?></td>
     442                                    <td class="pro-version"><?php //echo __( "Email/Phone", 'auto-install-free-ssl' ) ?></td>
    443443                                </tr>
    444444                            </tbody>
    445445                        </table>
    446446
    447                         <p style="text-align: right;"><a href="<?= $this->factory->upgrade_url() ?>" class="button button-primary"><?= __( "Upgrade to Pro", 'auto-install-free-ssl' ) ?></a></p>
    448                         <p>* <em><?= sprintf(__( "If you need the plugin to work on all websites in the same %s, you need %s minutes (once).", 'auto-install-free-ssl' ), ((isset($this->appConfig['is_cpanel']) && $this->appConfig['is_cpanel']) ? 'cPanel' : 'hosting'), ((isset($this->appConfig['is_cpanel']) && $this->appConfig['is_cpanel']) ? '9' : '10')) ?></em></p>
     447                        <p style="text-align: right;"><a href="<?php //echo $this->factory->upgrade_url() ?>" class="button button-primary"><?php //echo __( "Upgrade to Pro", 'auto-install-free-ssl' ) ?></a></p>
     448                        <p>* <em><?php //echo sprintf(__( 'If you need the plugin to work on all websites in the same %1$s, you need %2$s minutes (once).', 'auto-install-free-ssl' ), ((isset($this->appConfig['is_cpanel']) && $this->appConfig['is_cpanel']) ? 'cPanel' : 'hosting'), ((isset($this->appConfig['is_cpanel']) && $this->appConfig['is_cpanel']) ? '9' : '10')) ?></em></p>
    449449                    </td>
    450450
    451451                    <td class="card block-body" style="width: 50%; padding-left: 1.5%;">
    452                         <h3><?= __( "One-Click Automation of Free SSL on cPanel [1:42 Min]", 'auto-install-free-ssl' ) ?></h3>
    453                         <p style="color: green;"><?= __( "Video Tutorial of the Pro / Unlimited Version.", 'auto-install-free-ssl' ) ?></p>
     452                        <h3><?php //echo __( "One-Click Automation of Free SSL on cPanel [1:42 Min]", 'auto-install-free-ssl' ) ?></h3>
     453                        <p style="color: green;"><?php //echo __( "Video Tutorial of the Pro / Unlimited Version.", 'auto-install-free-ssl' ) ?></p>
    454454
    455455                       <!-- <iframe width="100%" height="281" src="https://www.youtube.com/embed/XYgNPcj_zaM?rel=0" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe> -->
     
    483483            add_settings_field(
    484484                'admin_email',
     485                /* translators: %s: HTML code to create a superscript with the text '(required)' */
    485486                sprintf(__("Admin email %s(required)%s", 'auto-install-free-ssl'), '<sup>', '</sup>'),
    486487                array( $this, 'admin_email_callback' ),
     
    492493        add_settings_field(
    493494            'agree_to_le_terms',
    494             sprintf(__("%sI agree to the %sLet's Encrypt Subscriber Agreement %s(required)%s", 'auto-install-free-ssl'), '<div id="agree_to_le_terms">', '<a href="https://letsencrypt.org/documents/LE-SA-v1.3-September-21-2022.pdf" target="_blank">', '</a> <sup>', '</sup></div>'),
     495            /* translators: %1$s: Opening HTML 'div' tag; %2$s: Opening HTML 'a' tag; %3$s: Closing 'a' tag; %4$s: Closing HTML 'sup' tag ("Let's Encrypt™" is a nonprofit SSL certificate authority. Opening and closing 'a' tags create a hyperlink with the enclosed text.) */
     496            sprintf(__('%1$sI agree to the %2$sLet\'s Encrypt™ Subscriber Agreement %3$s(required)%4$s', 'auto-install-free-ssl'), '<div id="agree_to_le_terms">', '<a href="https://letsencrypt.org/documents/LE-SA-v1.3-September-21-2022.pdf" target="_blank">', '</a> <sup>', '</sup></div>'),
    495497            array( $this, 'agree_to_le_terms_callback' ),
    496498            'aifs_generate_ssl_manually_admin',
     
    500502        add_settings_field(
    501503            'agree_to_freessl_tech_tos_pp',
    502             sprintf(__("I agree to the FreeSSL.tech %sTerms of Service%s and %sPrivacy Policy %s(required)%s", 'auto-install-free-ssl'), '<a href="https://freessl.tech/terms-of-service" target="_blank">', '</a>', '<a href="https://freessl.tech/privacy-policy" target="_blank">', '</a> <sup>', '</sup>'),
     504            /* translators: %1$s: Opening HTML 'a' tag; %2$s: Closing 'a' tag; %3$s: Opening HTML 'a' tag; %4$s: Closing 'a' tag; %5$s: Closing 'sup' tag (Opening and closing 'a' tags create a hyperlink with the enclosed text.) */
     505            sprintf(__('I agree to the FreeSSL.tech %1$sTerms of Service%2$s and %3$sPrivacy Policy %4$s(required)%5$s', 'auto-install-free-ssl'), '<a href="https://freessl.tech/terms-of-service" target="_blank">', '</a>', '<a href="https://freessl.tech/privacy-policy" target="_blank">', '</a> <sup>', '</sup>'),
    503506            array( $this, 'agree_to_freessl_tech_tos_pp_callback' ),
    504507            'aifs_generate_ssl_manually_admin',
     
    557560        echo $this->factory->domain_alias_availability_text();
    558561
     562        /* translators: %s: Name of a button, e.g., Next Step */
    559563        echo "<p>" . sprintf(__( "Please click the '%s' button to proceed.", 'auto-install-free-ssl' ), $this->save_button_text) . "</p>";
    560564
     
    654658            if ( count( $domains_array ) > 0 ) {
    655659                //Start the process to generate SSL
     660                /* translators: %s: A domain name, e.g., example.com */
    656661                $this->logger->log( sprintf(__("Generating SSL for %s", 'auto-install-free-ssl'), $domains_array[0]) );
    657662                $this->logger->log( __( "The domains array is given below: ", 'auto-install-free-ssl' ));
     
    741746            <p><strong><?= __( "1.", 'auto-install-free-ssl' ) ?></strong> <?= __( "Please open an FTP client (e.g., FileZilla) or File Manager of your web hosting control panel.", 'auto-install-free-ssl' ) ?></p>
    742747
    743             <p><strong><?= __( "2.", 'auto-install-free-ssl' ) ?></strong> <?= sprintf(__("Browse to the document root of %s. Create a directory %s and another directory %s inside the %s directory.", 'auto-install-free-ssl'), ('<em>' . key($return_array_step1['domain_data']) . '</em>'), '<strong>.well-known</strong>', '<strong>acme-challenge</strong>', '<strong>.well-known</strong>') ?><?= aifs_server_software() == 'ms-iis' ? " " . __( "If you face any issues (e.g., 'Invalid path specified') creating directories, create 'Virtual Directory' instead.", 'auto-install-free-ssl' ) : "" ?></p>
     748            <p><strong><?= __( "2.", 'auto-install-free-ssl' ) ?></strong> <?= /* translators: %1$s: A domain name, e.g., example.com; %2$s: Name of a directory, e.g., '.well-known'; %3$s: Name of another directory, e.g., 'acme-challenge' */ sprintf(__('Browse to the document root of %1$s. Create a directory %2$s and another directory %3$s inside the %2$s directory.', 'auto-install-free-ssl'), ('<em>' . key($return_array_step1['domain_data']) . '</em>'), '<strong>.well-known</strong>', '<strong>acme-challenge</strong>') ?>
     749
     750                <?= aifs_server_software() == 'ms-iis' ? " " . __( "If you face any issues (e.g., 'Invalid path specified') creating directories, create 'Virtual Directory' instead.", 'auto-install-free-ssl' ) : "" ?></p>
    744751
    745752            <p><strong><?= __( "3.", 'auto-install-free-ssl' ) ?></strong> <?= __( "Download the following HTTP-01 challenge files:", 'auto-install-free-ssl' ) ?></p>
     
    774781            </div>
    775782
    776             <p><strong><?= __( "4.", 'auto-install-free-ssl' ) ?></strong> <?= sprintf(__( "Upload the above-downloaded challenge files into the %s directory (mentioned in serial number 2).", 'auto-install-free-ssl' ), "'acme-challenge'") ?><?= aifs_server_software() == 'ms-iis' ? " " . __( "If you face any issues uploading files, create files with the same file name and content.", 'auto-install-free-ssl' ) : "" ?></p>
     783            <p><strong><?= __( "4.", 'auto-install-free-ssl' ) ?></strong> <?php /* translators: %s: Name of the directory, i.e., 'acme-challenge' */ ?> <?= sprintf(__( "Upload the above-downloaded challenge files into the %s directory (mentioned in serial number 2).", 'auto-install-free-ssl' ), "'acme-challenge'") ?>
     784
     785                <?= aifs_server_software() == 'ms-iis' ? " " . __( "If you face any issues uploading files, create files with the same file name and content.", 'auto-install-free-ssl' ) : "" ?></p>
    777786
    778787            <!-- Use foreach to avoid blank link -->
     
    807816            .</p>
    808817
    809             <p><?= __( "The content of the above links should EXACTLY match the content of the downloaded files.", 'auto-install-free-ssl' ) ?><?= aifs_server_software() == 'ms-iis' ? " " . sprintf( __( "If the above links display errors, create a %s file inside the %s directory and paste the following content into it: ", 'auto-install-free-ssl' ), '<strong>web.config</strong>', '.well-known') . '<pre><code>'.htmlspecialchars($code).'</code></pre>' : "" ?></p>
     818            <p><?= __( "The content of the above links should EXACTLY match the content of the downloaded files.", 'auto-install-free-ssl' ) ?><?= aifs_server_software() == 'ms-iis' ? " " . /* translators: %1$s: Name of a file, e.g., 'web.config'; %2$s: Name of a directory, e.g., '.well-known' */ sprintf( __( 'If the above links display errors, create a %1$s file inside the %2$s directory and paste the following content into it:', 'auto-install-free-ssl' ), '<strong>web.config</strong>', '.well-known') . ' <pre><code>'.htmlspecialchars($code).'</code></pre>' : "" ?></p>
    810819
    811820            <p><br /><em><?= __( "Is everything okay? Now click the button below.", 'auto-install-free-ssl' ) ?></em></p>
     
    821830        //elseif($tab == 'dns-01'){
    822831            $registeredDomain = aifs_getRegisteredDomain( aifs_get_domain(true) );
     832            $sl_1 = __( "1.", 'auto-install-free-ssl' );
    823833            ?>
    824834            <span style="font-size: large; font-weight: bold;"><?= __( "DNS-01", 'auto-install-free-ssl' ) ?></span><hr /><br />
    825             <p><strong><?= __( "1.", 'auto-install-free-ssl' ) ?></strong> <?= sprintf(__( "Please log in to your DNS service provider's account, for %s, and add the TXT records given below:", 'auto-install-free-ssl' ), "<strong><em>$registeredDomain</em></strong>") ?></p>
     835
     836            <?php /* translators: %s: A domain name, e.g., example.com */ ?>
     837            <p><strong><?= $sl_1 ?></strong> <?= sprintf(__( "Please log in to your DNS service provider's account, for %s, and add the TXT records given below:", 'auto-install-free-ssl' ), "<strong><em>$registeredDomain</em></strong>") ?></p>
    826838            <?php
    827839            $set_no = "A";
     
    836848            ?>
    837849
    838             <p><br /><?= sprintf(__("TTL (Time to Live) for both: %s1 minute%s recommended. Otherwise, the minimum value supported by your DNS service provider.", 'auto-install-free-ssl'), '<strong>', '</strong>') ?></p>
    839 
    840             <p><br /><strong><?= __( "2.", 'auto-install-free-ssl' ) ?></strong> <?= sprintf(__("Please wait %sat least%s 15 minutes for the above DNS records to propagate and %sclick the button below%s.", 'auto-install-free-ssl'), '<strong>', '</strong>', '<em>', '</em>') ?></p>
     850            <?php /* translators: %1$s: Opening HTML 'strong' tag; %2$s: Closing 'strong' tag; (Opening and closing 'strong' tags make the enclosed text bold.) */ ?>
     851            <p><br /><?= sprintf(__('TTL (Time to Live) for both: %1$s1 minute%2$s recommended. Otherwise, the minimum value supported by your DNS service provider.', 'auto-install-free-ssl'), '<strong>', '</strong>') ?></p>
     852
     853            <p><br /><strong><?= __( "2.", 'auto-install-free-ssl' ) ?></strong> <?php /* translators: %1$s: Opening HTML 'strong' tag; %2$s: Closing 'strong' tag; %3$s: Opening HTML 'em' tag; %4$s: Closing 'em' tag (Opening and closing 'strong' tags make the enclosed text bold. Opening and closing 'em' tags make the enclosed text emphasized.) */ ?> <?= sprintf(__('Please wait %1$sat least%2$s 15 minutes for the above DNS records to propagate and %3$sclick the button below%4$s.', 'auto-install-free-ssl'), '<strong>', '</strong>', '<em>', '</em>') ?></p>
    841854
    842855
     
    872885                wp_nonce_field('aifsverifydomain', 'aifs_verify_domain', false, false);
    873886
     887        /* translators: %s: Type of the challenge (HTTP-01 or DNS-01) */
    874888        $confirmation_text = sprintf(__("Are you sure you have completed the %s challenges?", 'auto-install-free-ssl'), strtoupper($challenge_type));
    875889
    876890        //$button_text = __( 'Verify Domain &amp; Get SSL', 'auto-install-free-ssl' );
    877         $button_text = sprintf( __( "Verify Domain %s Generate Free SSL", 'auto-install-free-ssl' ), "(".strtoupper($challenge_type).") &amp;");
     891        /* translators: %s: Type of domain verification (HTTP-01 or DNS-01) */
     892        $button_text = sprintf( __( "Verify Domain (%s) & Generate Free SSL", 'auto-install-free-ssl' ), strtoupper($challenge_type));
    878893        $css_class = "button button-primary button-hero";
    879894
     
    896911        if ( isset( $_GET['aifschallengehttp'] ) ) {
    897912            if ( !wp_verify_nonce( $_GET['aifschallengehttp'], 'aifs_challenge_http' ) ) {
    898                 wp_die(__( "Access Denied", 'auto-install-free-ssl' ));
     913                wp_die(__( "Access denied", 'auto-install-free-ssl' ));
    899914            }
    900915
     
    922937
    923938        if ( isset( $_POST['aifs_challenge_type'] ) && !wp_verify_nonce($_POST['aifs_verify_domain'], 'aifsverifydomain') ) {
    924             wp_die(__( "Access Denied", 'auto-install-free-ssl' ));
     939            wp_die(__( "Access denied", 'auto-install-free-ssl' ));
    925940        }
    926941        else {
     
    932947                echo $this->progress_bar(3);
    933948
    934                 echo "<p style='font-weight: bold;'>" . sprintf(__("SSL certificate already issued to %s, and the plugin has saved you $90. Please download it from the links given below.", 'auto-install-free-ssl'), ("<em>" . $this->return_array_step1['domains_array'][0] . "</em>")) . "</p>";
     949                echo "<p>";
     950
     951                /* translators: %1$s: a domain name, e.g., example.com; %2$s: Opening HTML 'strong' tag; %3$s: Closing 'strong' tag. (Opening and closing 'strong' tags make the enclosed text bold.) */
     952                echo sprintf(__('SSL certificate already issued to %1$s, and %2$sthe plugin has saved you $90.%3$s', 'auto-install-free-ssl'), ("<em>" . $this->return_array_step1['domains_array'][0] . "</em>"), '<strong>', '</strong>') . " ";
     953
     954                echo __("Please download it from the links given below.", 'auto-install-free-ssl');
     955                echo "</p>";
    935956
    936957                echo $home_options->single_domain_ssl_data();
     
    10271048                            }
    10281049                            $error_text .= "<span style='color: red;'>";
    1029                             $error_text .= sprintf(__("Oops! Let's Encrypt could not validate ownership of the domain %s due to some error.", 'auto-install-free-ssl'), $domain);
     1050                            /* translators: %s: A domain name, e.g., example.com ("Let's Encrypt" is a nonprofit SSL certificate authority.) */
     1051                            $error_text .= sprintf(__("Oops! Let's Encrypt™ could not validate ownership of the domain %s due to some error.", 'auto-install-free-ssl'), $domain);
    10301052                            $error_text .= "</span>";
    10311053                        }
     
    10391061                    //$error_text  .= "authorizations: " .count( $this->return_array_step1['response']['authorizations'] ) ."  number_of_validated_domains_internal: ".$number_of_validated_domains_internal ." ";
    10401062                    $error_text .= "<span style='color: green;'>";
    1041                     $error_text .= "<br />" . sprintf(__("Upgrade to the %sPremium Version%s for fully automatic domain verification, automated SSL installation & renewal.", 'auto-install-free-ssl'), '<a href="'. $this->factory->upgrade_url() .'">', '</a>');
     1063                    /* translators: %1$s: Opening HTML 'a' tag; %2$s: Closing 'a' tag (Opening and closing 'a' tags create a hyperlink with the enclosed text.) */
     1064                    $error_text .= "<br />" . sprintf(__('Upgrade to the %1$sPremium Version%2$s for fully automatic domain verification, automated SSL installation & renewal.', 'auto-install-free-ssl'), '<a href="'. $this->factory->upgrade_url() .'">', '</a>');
    10421065                    $error_text .= "</span>";
    10431066
     
    10701093
    10711094                        echo $this->progress_bar(3);
    1072                         echo "<h3 style='background: green; color: white; line-height: 1.6em; padding: 2%;'>". sprintf(__("Congratulations! SSL certificate has been issued to %s, and the plugin has saved you $90. %sPlease download it from the links given below.", 'auto-install-free-ssl'), ("<em>" . $this->return_array_step1['domains_array'][0] . "</em>"), "<br /><br />") ."</h3>";
     1095                        echo "<h3 style='background: green; color: white; line-height: 1.6em; padding: 2%;'>";
     1096
     1097                        /* translators: %s: a domain name, e.g., example.com */
     1098                        echo sprintf(__('Congratulations! SSL certificate has been issued to %s, and the plugin has saved you $90.', 'auto-install-free-ssl'), ("<em>" . $this->return_array_step1['domains_array'][0] . "</em>")) . "<br /><br />";
     1099
     1100                        echo __("Please download it from the links given below.", 'auto-install-free-ssl');
     1101
     1102                        echo "</h3>";
    10731103
    10741104                        echo $home_options->single_domain_ssl_data();
     
    10761106                        echo $this->progress_bar(3);
    10771107                        //return false;
     1108                        /* translators: %s: A domain name, e.g., example.com */
    10781109                        echo "<h3 style='color: red'>". sprintf(__("Sorry, the SSL certificate was NOT issued to %s due to an error. Please check the log for details.", 'auto-install-free-ssl'), ("<em>" . $this->return_array_step1['domains_array'][0] . "</em>")) ."</h3>";
    10791110                    }
     
    10821113                    //SSL certificate can't be issued
    10831114                    echo $this->progress_bar(3);
    1084                     $text = sprintf(__("The number of authorizations: %s. But the number of validated domains: %s. Sorry, the SSL certificate can't be issued to %s. %s domain was not validated.", 'auto-install-free-ssl'), count( $this->return_array_step1['response']['authorizations'] ), $number_of_validated_domains, $this->return_array_step1['domains_array'][0], ( \count( $this->return_array_step1['response']['authorizations'] ) - $number_of_validated_domains ));
     1115
     1116                    /* translators: %1$d: A number; %2$d: Another number; %3$s: A domain name, e.g., example.com */
     1117                    $text = sprintf(__('The number of authorizations: %1$d. But the number of validated domains: %2$d. Sorry, the SSL certificate can not be issued to %3$s.', 'auto-install-free-ssl'), count( $this->return_array_step1['response']['authorizations'] ), $number_of_validated_domains, $this->return_array_step1['domains_array'][0]) . " ";
     1118
     1119                    $difference = \count( $this->return_array_step1['response']['authorizations'] ) - $number_of_validated_domains;
     1120
     1121                    if($difference > 1){
     1122                        /* translators: %d: A plural number */
     1123                        $text .= sprintf(__('%d domains were not validated.', 'auto-install-free-ssl'), $difference);
     1124                    }
     1125                    else{
     1126                        /* translators: %d: A singular number, i.e., 1 */
     1127                        $text .= sprintf(__('%d domain was not validated.', 'auto-install-free-ssl'), $difference);
     1128                    }
    10851129
    10861130                    $this->logger->log_v2( 'error', $text );
     
    11131157        if(isset( $_POST['aifs_proceed_regenerate'] )) {
    11141158            if ( ! wp_verify_nonce( $_POST['aifs_regenerate_ssl'], 'aifsregeneratessl' ) ) {
    1115                 wp_die( __( "Access Denied", 'auto-install-free-ssl' ) );
     1159                wp_die( __( "Access denied", 'auto-install-free-ssl' ) );
    11161160            } else {
    11171161                //reset option
  • auto-install-free-ssl/trunk/FreeSSLAuto/src/Admin/HomeOptions.php

    r2892748 r2905766  
    3737    public  $factory ;
    3838    public  $app_settings ;
     39    private  $countdown_duration ;
    3940    /**
    4041     * Start up
     
    4344    {
    4445        if ( !defined( 'ABSPATH' ) ) {
    45             die( __( "Access Denied", 'auto-install-free-ssl' ) );
     46            die( __( "Access denied", 'auto-install-free-ssl' ) );
    4647        }
    4748        $this->factory = new Factory();
    4849        $this->app_settings = aifs_get_app_settings();
     50        $this->countdown_duration = 2.1 * 60 * 60 + 38;
    4951        add_action( 'admin_enqueue_scripts', array( $this, 'countdown_js_script' ) );
    5052    }
     
    6365                //$this->request_free_premium_license(); // removed the method since 3.4.1
    6466            } else {
    65                 //if(!get_option('aifs_free_plan_selected') || (isset($_GET['comparison']) && $_GET['comparison'] == "yes")){   //changed from version 3.4.0
    6667               
    67                 if ( isset( $_GET['comparison'] ) && $_GET['comparison'] == "yes" ) {
     68                if ( !get_option( 'aifs_free_plan_selected' ) || isset( $_GET['comparison'] ) && $_GET['comparison'] == "yes" ) {
     69                    //before 3.4.0, 3.4.2
     70                    //if(isset($_GET['comparison']) && $_GET['comparison'] == "yes"){ // version 3.4.0, 3.4.1
    6871                    $this->plan_comparison_table_handler();
    6972                    $this->plan_comparison_table();
     
    107110           
    108111            if ( aifs_is_free_version() ) {
    109                 $text_display .= '<br /><strong><s>' . sprintf( __( "This plugin will renew & install the SSL automatically %s days before the expiry.", 'auto-install-free-ssl' ), 30 ) . '</s></strong>';
    110                 //$text_display .=  '<br /><div class="aifs-premium"><span class="dashicons dashicons-arrow-up-alt"></span> ' . sprintf(__("Upgrade to the %sPremium Version%s to avail of this.", 'auto-install-free-ssl'), '<a href="' . $this->factory->upgrade_url() .'">', '</a>') . ' <span class="dashicons dashicons-arrow-up-alt"></span></div>';
     112                $days = __( "30", 'auto-install-free-ssl' );
     113                /* translators: %s: Number of days */
     114                $text_display .= '<br /><strong><s>' . sprintf( __( "This plugin will renew & install the SSL automatically %s days before the expiry.", 'auto-install-free-ssl' ), $days ) . '</s></strong>';
     115                /* translators: %s: placeholders for HTML code create a hyperlink with the word 'Premium'. */
    111116                $text_display .= '<br /><div class="aifs-premium"><span class="dashicons dashicons-arrow-up-alt"></span> ' . sprintf( __( "%sPremium%s feature", 'auto-install-free-ssl' ), '<a href="' . $this->factory->upgrade_url() . '">', '</a>' ) . ' <span class="dashicons dashicons-arrow-up-alt"></span></div>';
    112117            }
     
    126131           
    127132            if ( aifs_is_free_version() && !get_option( 'aifs_force_ssl' ) && get_option( 'aifs_is_generated_ssl_installed' ) ) {
     133                /* translators: %s: placeholders for HTML code to create a hyperlink with the text 'Activate Force HTTPS'. */
    128134                $text_display .= sprintf( __( "After installing the SSL certificate, don't forget to %sActivate Force HTTPS%s", 'auto-install-free-ssl' ), '<a href="#force-https">', '</a>' );
    129135                $text_display .= "<hr />";
     
    142148    {
    143149        $app_settings = aifs_get_app_settings();
     150        $hosting = __( "hosting", 'auto-install-free-ssl' );
     151        /* translators: 'cPanel' is web hosting control panel software developed by cPanel, LLC. */
     152        $cpanel = __( "cPanel", 'auto-install-free-ssl' );
     153        /* translators: "Let's Encrypt" is a nonprofit SSL certificate authority. */
     154        $ca = __( "Let's Encrypt™", 'auto-install-free-ssl' );
     155        $free = wp_nonce_url( get_site_url() . $_SERVER['REQUEST_URI'], 'aifs_free_plan', 'aifsfree' );
    144156        ?>
    145157        <div class="wrap">
     
    150162
    151163          <div>
    152             <p style="font-size: xx-large; text-align: center; color: black;"><?php
    153         echo  __( "This plugin will save you \$90+ per year for every website", 'auto-install-free-ssl' ) ;
     164            <p style="font-size: large; text-align: center; color: black;"><?php
     165        echo  __( "We'll save you \$90+ per year for every website", 'auto-install-free-ssl' ) ;
    154166        ?></p>
    155167          </div>
     168
     169        <?php
     170       
     171        if ( !isset( $_GET['comparison'] ) ) {
     172            ?>
     173          <div class="card block-body" style="max-width: 100%; text-align: center;">
     174            <p><?php
     175            /* translators: %s: Name of this plugin, i.e., 'Auto-Install Free SSL' */
     176            echo  sprintf( __( 'Thank you for choosing \'%s\' - the most powerful plugin to generate Free SSL Certificates in your WordPress dashboard.', 'auto-install-free-ssl' ), AIFS_NAME ) ;
     177            ?></p>
     178
     179            <p><?php
     180            /* translators: %1$s: Name of this plugin, i.e., 'Auto-Install Free SSL'; %2$s: Name of the SSL certificate authority, e.g., Let's Encrypt */
     181            echo  sprintf( __( '\'%1$s\' makes creating Free SSL Certificates easy using the %2$s API. Please get started by creating an SSL Certificate or reading our documentation.', 'auto-install-free-ssl' ), AIFS_NAME, $ca ) ;
     182            ?></p>
     183            <p style="margin-top: 2%;"><a href="<?php
     184            echo  $free ;
     185            ?>" class="button button-primary"><?php
     186            echo  __( "Generate Your First SSL Certificate", 'auto-install-free-ssl' ) ;
     187            ?></a> <a href="https://wordpress.org/plugins/auto-install-free-ssl/#installation" target="_blank" class="button" style="margin-left: 5%;"><?php
     188            echo  __( "Read the Documentation", 'auto-install-free-ssl' ) ;
     189            ?></a></p>
     190          </div>
     191        <?php
     192        }
     193       
     194        ?>
     195
     196          <p style="font-size: xx-large; text-align: center; color: black;"><?php
     197        echo  __( "Features Comparison", 'auto-install-free-ssl' ) ;
     198        ?></p>
    156199
    157200        <?php
     
    159202              $coupon_code = "20AutoInstall";
    160203              echo '<div style="background: white; color: black; margin: 2% 0; padding: 1% 1.5%; border-style: solid; border-width: 1px; border-color: green;"><p style="font-size: medium; margin: 0;">';
    161               echo '<span class="dashicons dashicons-megaphone" style="font-size: xx-large; color: #5F97FB;"></span> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;' . sprintf(__("Could a coupon help? Use the %s discount%s code %s during checkout. The coupon is expiring soon!", 'auto-install-free-ssl'), "<span style='color: red;'>20%", "</span>", "<strong>'$coupon_code'</strong>");
     204              echo '<span class="dashicons dashicons-megaphone" style="font-size: xx-large; color: #5F97FB;"></span> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;' . sprintf(__('Could a coupon help? Use the %1$s discount%2$s code %3$s during checkout. The coupon is expiring soon!', 'auto-install-free-ssl'), "<span style='color: red;'>20%", "</span>", "<strong>'$coupon_code'</strong>");
    162205              echo '</p></div>';
    163206          }*/
     207        /*if(!get_option('aifs_default_page_first_access_time')){
     208                        add_option('aifs_default_page_first_access_time', time());
     209                    }
     210       
     211                    $first_access_time = get_option('aifs_default_page_first_access_time');*/
     212        //if(($first_access_time && (time() > $first_access_time + 5 * 60)) || (isset($_GET['comparison']) && $_GET['comparison'] == "yes")){
    164213        if ( !get_option( 'aifs_comparison_table_promo_start_time' ) ) {
    165214            add_option( 'aifs_comparison_table_promo_start_time', time() );
     
    167216        $start_time = get_option( 'aifs_comparison_table_promo_start_time' );
    168217       
    169         if ( $this->factory->is_cpanel() && time() < $start_time + 1 * 60 * 60 && (get_option( 'aifs_premium_plan_selected' ) >= 1 && time() < strtotime( "January 1, 2024" ) || time() > strtotime( "November 1, 2022" ) && time() < strtotime( "January 1, 2024" )) ) {
     218        if ( $this->factory->is_cpanel() && time() < $start_time + $this->countdown_duration && (get_option( 'aifs_premium_plan_selected' ) >= 1 && time() < strtotime( "January 1, 2024" ) || time() > strtotime( "November 1, 2022" ) && time() < strtotime( "January 1, 2024" )) ) {
    170219            $coupon_code = "20AutoInstall";
    171220            echo  '<div id="aifs-promo" class="aifs-promo"><p style="font-size: medium; margin: 0;">' ;
    172             echo  '<span class="dashicons dashicons-megaphone" style="font-size: xx-large; color: #5F97FB;"></span> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;' . sprintf( __( "Select any Pro plan asap to grab a %s discount!%s", 'auto-install-free-ssl' ), "<span style='color: red;'>20%", "</span>" ) . '<img src="' . AIFS_URL . 'assets/img/fire.webp" style="margin-left: 2%; width 20px; height: 20px;"><span class="expires-in">' . __( "expires in", 'auto-install-free-ssl' ) . ' <span id="countdown" style=""></span></span>' ;
     221            echo  '<span class="dashicons dashicons-arrow-down-alt" style="font-size: xx-large; color: #5F97FB;"></span> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;' ;
     222            $percentage = __( "20%", 'auto-install-free-ssl' );
     223            /* translators: %1$s: HTML code to make the color red of the text '%2$s discount!'. Please keep its order the same.    %2$s: Discount percentage (includes % sign) */
     224            echo  sprintf( __( 'Scroll down and Select any Pro plan asap to grab a %1$s %2$s discount!', 'auto-install-free-ssl' ), "<span style='color: red;'>", $percentage ) . "</span>" ;
     225            echo  '<img src="' . AIFS_URL . 'assets/img/fire.webp" style="margin-left: 2%; width 20px; height: 20px;"><span class="expires-in">' . __( "expires in", 'auto-install-free-ssl' ) . ' <span id="countdown" style=""></span></span>' ;
    173226            echo  '</p></div>' ;
    174227            echo  '<script type="text/javascript">' . $this->countdown_js_script() . '</script>' ;
     
    178231        }
    179232       
     233        /*}
     234          else{
     235              $coupon_code = false;
     236          }*/
    180237        ?>
    181238
     
    193250            $time_required = __( "We'll do it", 'auto-install-free-ssl' );
    194251            $time_required_unlimited_license = __( "We'll do it (10 sites)", 'auto-install-free-ssl' );
     252            /* translators: %s: HTML code to create a new line. */
    195253            $time_required_more_info_unlimited_license = sprintf( __( "PRO unlimited license is limited to 10 websites. %sIf you can implement the automation with the bash script yourself, it is truly unlimited.", 'auto-install-free-ssl' ), "\n" );
    196254            $wildcard_ssl_single_domain = __( "Yes", 'auto-install-free-ssl' );
     
    201259            $time_required = __( "1 Min (once)", 'auto-install-free-ssl' );
    202260            $time_required_unlimited_license = __( "1 Min (once)", 'auto-install-free-ssl' );
    203             $time_required_more_info_unlimited_license = sprintf( __( "If you need the plugin to work on all websites in the same %s, you need %s minutes (once).", 'auto-install-free-ssl' ), ( isset( $app_settings['is_cpanel'] ) && $app_settings['is_cpanel'] ? __( "cPanel", 'auto-install-free-ssl' ) : __( "hosting", 'auto-install-free-ssl' ) ), ( isset( $app_settings['is_cpanel'] ) && $app_settings['is_cpanel'] ? __( "9", 'auto-install-free-ssl' ) : __( "10", 'auto-install-free-ssl' ) ) );
     261            $nine = __( "9", 'auto-install-free-ssl' );
     262            $ten = __( "10", 'auto-install-free-ssl' );
     263            /* translators: %1$s: A technical word ('cPanel' or 'hosting'; based on a condition); %2$s: Number of minutes */
     264            $time_required_more_info_unlimited_license = sprintf( __( 'If you need the plugin to work on all websites in the same %1$s, you need %2$s minutes (once).', 'auto-install-free-ssl' ), ( isset( $app_settings['is_cpanel'] ) && $app_settings['is_cpanel'] ? $cpanel : $hosting ), ( isset( $app_settings['is_cpanel'] ) && $app_settings['is_cpanel'] ? $nine : $ten ) );
    204265            $wildcard_ssl_single_domain = __( "No", 'auto-install-free-ssl' );
    205266            $multisite_support_single_domain = __( "No", 'auto-install-free-ssl' );
     
    496557                    <tr>
    497558                      <td><span class="ptable-title"><?php
    498             echo  sprintf( __( "One installation works on all websites of a %s", 'auto-install-free-ssl' ), ( isset( $app_settings['is_cpanel'] ) && $app_settings['is_cpanel'] ? __( "cPanel", 'auto-install-free-ssl' ) : __( "hosting", 'auto-install-free-ssl' ) ) ) ;
     559            /* translators: %s: A technical word ('cPanel' or 'hosting'; based on a condition) */
     560            echo  sprintf( __( "One installation works on all websites of a %s", 'auto-install-free-ssl' ), ( isset( $app_settings['is_cpanel'] ) && $app_settings['is_cpanel'] ? $cpanel : $hosting ) ) ;
    499561            ?></span></td>
    500562                      <td>
     
    542604                <?php
    543605        $coupon = ( $coupon_code ? "&coupon=" . $coupon_code : "" );
    544         $free = wp_nonce_url( get_site_url() . $_SERVER['REQUEST_URI'], 'aifs_free_plan', 'aifsfree' );
     606        //$free = wp_nonce_url( get_site_url().$_SERVER['REQUEST_URI'], 'aifs_free_plan', 'aifsfree' ); //already defined
    545607        $pro = wp_nonce_url( get_site_url() . $_SERVER['REQUEST_URI'], 'aifs_pro_plan', 'aifspro' ) . $coupon;
    546608        $pro_unlimited = wp_nonce_url( get_site_url() . $_SERVER['REQUEST_URI'], 'aifs_pro_unlimited_plan', 'aifsprounlimited' ) . $coupon;
     
    570632          <?php
    571633        if ( !isset( $app_settings['is_cpanel'] ) || !$app_settings['is_cpanel'] ) {
     634            /* translators: %s: HTML code to create a hyperlink with the text 'Terms & conditions'. */
    572635            echo  "<br /><br /><p>* <i>" . sprintf( __( "%sTerms & conditions%s apply.", 'auto-install-free-ssl' ), '<a href="https://freessl.tech/terms-of-service" target="_blank">', '</a>' ) . "</i></p>" ;
    573636        }
     
    604667          <div class="card block-body" style="width: 100%; padding-left: 1.5%;">
    605668             <p><?php
    606         //echo sprintf(__( "%s discount code for you: %s", 'auto-install-free-ssl' ), "25%", "<strong>AUTOMATION</strong>")
     669        //echo sprintf(__( '%1$s discount code for you: %2$s', 'auto-install-free-ssl' ), "25%", "<strong>AUTOMATION</strong>")
    607670        ?></p>
    608671             <p><?php
     
    638701            //FREE plan selected
    639702            if ( !wp_verify_nonce( $_GET['aifsfree'], 'aifs_free_plan' ) ) {
    640                 wp_die( __( "Access Denied", 'auto-install-free-ssl' ) );
     703                wp_die( __( "Access denied", 'auto-install-free-ssl' ) );
    641704            }
    642705            update_option( 'aifs_free_plan_selected', 1 );
     
    647710                //PRO plan selected
    648711                if ( !wp_verify_nonce( $_GET['aifspro'], 'aifs_pro_plan' ) ) {
    649                     wp_die( __( "Access Denied", 'auto-install-free-ssl' ) );
     712                    wp_die( __( "Access denied", 'auto-install-free-ssl' ) );
    650713                }
    651714                update_option( 'aifs_premium_plan_selected', get_option( 'aifs_premium_plan_selected' ) + 1 );
     
    657720                    //PRO UNLIMITED plan selected
    658721                    if ( !wp_verify_nonce( $_GET['aifsprounlimited'], 'aifs_pro_unlimited_plan' ) ) {
    659                         wp_die( __( "Access Denied", 'auto-install-free-ssl' ) );
     722                        wp_die( __( "Access denied", 'auto-install-free-ssl' ) );
    660723                    }
    661724                    update_option( 'aifs_premium_plan_selected', get_option( 'aifs_premium_plan_selected' ) + 1 );
     
    696759        echo  '<ol>' ;
    697760        echo  '<li><a href="' . $premium_download_link . '">' . __( "Download from this link.", 'auto-install-free-ssl' ) . '</a></li>' ;
    698         echo  '<li>' . sprintf( __( "Download from the %s Account page%s.", 'auto-install-free-ssl' ), '<a href="' . admin_url( 'admin.php?page=auto_install_free_ssl-account' ) . '">', '</a>' ) . '</li>' ;
     761        /* translators: %s: HTML code to create a hyperlink with the text 'Account page'. */
     762        echo  '<li>' . sprintf( __( "Download from the %sAccount page%s.", 'auto-install-free-ssl' ), '<a href="' . admin_url( 'admin.php?page=auto_install_free_ssl-account' ) . '">', '</a>' ) . '</li>' ;
    699763        echo  '<li>' . __( "Download from the email we sent you after the purchase.", 'auto-install-free-ssl' ) . '</li>' ;
    700764        echo  '</ol>' ;
    701765        echo  '</div>' ;
    702         echo  '<p style="text-align: center;">' . sprintf( __( "The %s License Key%s has been provided in the same email.", 'auto-install-free-ssl' ), '<strong>', '</strong>' ) . '</p>' ;
    703         echo  '<p style="text-align: center;">' . sprintf( __( "Any issues? %s Contact Us%s right away. We'll be happy to help you.", 'auto-install-free-ssl' ), '<a href="' . $contact_link . '">', '</a>' ) . '</p>' ;
     766        /* translators: %s: HTML code to make the text 'License Key' bold. */
     767        echo  '<p style="text-align: center;">' . sprintf( __( "The %sLicense Key%s has been provided in the same email.", 'auto-install-free-ssl' ), '<strong>', '</strong>' ) . '</p>' ;
     768        /* translators: %s: HTML code to create a hyperlink with the text 'Contact Us'. */
     769        echo  '<p style="text-align: center;">' . sprintf( __( "Any issues? %sContact Us%s right away. We'll be happy to help you.", 'auto-install-free-ssl' ), '<a href="' . $contact_link . '">', '</a>' ) . '</p>' ;
    704770        ?>
    705771                </td>
     
    719785        //wp_enqueue_script('aifs_countdown', false, [], false, true);
    720786        return '// Set the date to countdown to (in this example, it is 1 hour from now)
    721 var countDownDate = (' . get_option( 'aifs_comparison_table_promo_start_time' ) . ' + 1 * 60 * 60) * 1000;
     787var countDownDate = ' . (get_option( 'aifs_comparison_table_promo_start_time' ) + $this->countdown_duration) . ' * 1000;
    722788
    723789// Update the countdown every second
  • auto-install-free-ssl/trunk/FreeSSLAuto/src/Admin/Log.php

    r2868890 r2905766  
    4444    {
    4545        if (!defined('ABSPATH')) {
    46             die(__( "Access Denied", 'auto-install-free-ssl' ));
     46            die(__( "Access denied", 'auto-install-free-ssl' ));
    4747        }
    4848       
     
    107107                                            <?php
    108108                                            $date = str_replace('.log', '', basename($file));
     109                                            /* translators: %s: A date */
    109110                                            $title = sprintf(__("Click here to view the log of %s", 'auto-install-free-ssl'), $date);
    110111                                            echo '<a href="'.$view_log_url . $date.'" title="'. $title .'">'. $date .'</a>';
     
    126127                                    if ( isset( $_GET['aifsviewlog'] ) ) {
    127128                                        if ( !wp_verify_nonce( $_GET['aifsviewlog'], 'aifs_view_log' ) ) {
    128                                             echo __( "Access Denied", 'auto-install-free-ssl' );
     129                                            echo __( "Access denied", 'auto-install-free-ssl' );
    129130                                        }
    130131                                        else {
     
    160161                                $title = __( "DELETE plugin data on deactivation", 'auto-install-free-ssl' );
    161162                                $confirm = __( "Would you like to DELETE plugin data on deactivation?", 'auto-install-free-ssl' );
    162                                 echo sprintf(__( "'%s' keeps the plugin data intact on deactivation (or uninstallation). If you'd like to delete plugin data, you can %sclick here%s", 'auto-install-free-ssl' ), AIFS_NAME, '<a href="' . $link_to_delete_data . '" title="'.$title.'" class="button" onclick="return confirm(\''.$confirm.'\')">', '</a>');
     163                                /* translators: %1$s: Name of this plugin, i.e., 'Auto-Install Free SSL'; %2$s: Opening HTML 'a' tag; %3$s: Closing 'a' tag (Opening and closing 'a' tags create a hyperlink with the enclosed text.) */
     164                                echo sprintf(__( '%1$s keeps the plugin data intact on deactivation (or uninstallation). If you\'d like to delete plugin data, you can %2$sclick here.%3$s', 'auto-install-free-ssl' ), '<strong>' . AIFS_NAME . '</strong>', '<a href="' . $link_to_delete_data . '" title="'.$title.'" class="button" onclick="return confirm(\''.$confirm.'\')">', '</a>');
    163165                            }
    164166                            else {
    165167                                $link_to_keep_data = wp_nonce_url( get_site_url() . $_SERVER['REQUEST_URI'], 'aifs_keep_data_intact_on_deactivate', 'aifskeepplugindataintact' );
    166168                                $title = __( "You could keep plugin data INTACT on deactivation", 'auto-install-free-ssl' );
    167                                 echo sprintf( __( "'%s' will delete the plugin data upon deactivation (or uninstallation). Feel free to %sclick here%s if you'd like to keep plugin data intact.", 'auto-install-free-ssl' ), AIFS_NAME, '<a href="' . $link_to_keep_data . '" title="'.$title.'" class="button button-primary">', '</a>' );
     169                                /* translators: %1$s: Name of this plugin, i.e., 'Auto-Install Free SSL'; %2$s: Opening HTML 'a' tag; %3$s: Closing 'a' tag (Opening and closing 'a' tags create a hyperlink with the enclosed text.) */
     170                                echo sprintf( __( '%1$s will delete the plugin data upon deactivation (or uninstallation). Feel free to %2$sclick here%3$s if you\'d like to keep plugin data intact.', 'auto-install-free-ssl' ), '<strong>' . AIFS_NAME . '</strong>', '<a href="' . $link_to_keep_data . '" title="'.$title.'" class="button button-primary">', '</a>' );
    168171                            }
    169172                            ?>
     
    186189        if ( isset( $_GET['aifsdeleteplugindata'] ) ) {
    187190            if ( !wp_verify_nonce( $_GET['aifsdeleteplugindata'], 'aifs_delete_data_on_deactivate' ) ) {
    188                 wp_die( __( "Access Denied", 'auto-install-free-ssl' ) );
     191                wp_die( __( "Access denied", 'auto-install-free-ssl' ) );
    189192            }
    190193            update_option( 'aifs_delete_plugin_data_on_deactivation', 1);
     
    196199        else if ( isset( $_GET['aifskeepplugindataintact'] ) ) {
    197200                if ( !wp_verify_nonce( $_GET['aifskeepplugindataintact'], 'aifs_keep_data_intact_on_deactivate' ) ) {
    198                     wp_die( __( "Access Denied", 'auto-install-free-ssl' ) );
     201                    wp_die( __( "Access denied", 'auto-install-free-ssl' ) );
    199202                }
    200203                update_option( 'aifs_delete_plugin_data_on_deactivation', 0);
  • auto-install-free-ssl/trunk/FreeSSLAuto/src/Controller.php

    r2886132 r2905766  
    4141    {
    4242        if ( !defined( 'ABSPATH' ) ) {
    43             die( __( "Access Denied", 'auto-install-free-ssl' ) );
     43            die( __( "Access denied", 'auto-install-free-ssl' ) );
    4444        }
    4545        $this->logger = new Logger();
     
    6262                $domains_array[] = $domain;
    6363            } else {
     64                /* translators: %s: A domain name, e.g., example.com */
    6465                $this->logger->log( sprintf( __( "%s is in your exclusion list; skip it.", 'auto-install-free-ssl' ), $domain ) );
    6566            }
     
    9091                        } else {
    9192                            $this->logger->log( sprintf(
    92                                 __( "This server's IP is %s. But %s points to different IP (%s). So, skipping it.", 'auto-install-free-ssl' ),
     93                                /* translators: %1$s: A IP address, e.g., 192.168.1.1, %2$s: A domain name, e.g., example.com, %3$s: Another IP address, e.g., 10.0.0.1 */
     94                                __( 'The IP of this server is %1$s. But %2$s points to different IP (%3$s). So, skipping it.', 'auto-install-free-ssl' ),
    9395                                $_SERVER['SERVER_ADDR'],
    9496                                $domain,
     
    103105                } else {
    104106                    //domain offline
     107                    /* translators: %s: A domain name, e.g., example.com */
    105108                    $this->logger->log( sprintf( __( "%s is offline. Skipping it.", 'auto-install-free-ssl' ), $domain ) );
    106109                }
  • auto-install-free-ssl/trunk/FreeSSLAuto/src/Email.php

    r2886132 r2905766  
    3939    {
    4040        if ( !defined( 'ABSPATH' ) ) {
    41             die( __( "Access Denied", 'auto-install-free-ssl' ) );
     41            die( __( "Access denied", 'auto-install-free-ssl' ) );
    4242        }
    4343        $this->logger = new Logger();
     
    5858    public function add_review_request_in_email( $admin_first_name = null )
    5959    {
     60        $this->factory->add_display_review();
    6061        $display_review = get_option( 'aifs_display_review' );
    6162       
    6263        if ( $display_review != false && $display_review != 0 ) {
    6364            //If aifs_display_review is set to 1, add the review request
    64             $html = "<div style='background-color: #000000; padding: 15px; margin-bottom: 18px;'>\n                            <div style='color: #FFFF00; font-size: 1.25em; margin-bottom: 16px;'>\n                                " . __( "Hey", 'auto-install-free-ssl' ) . " " . (( is_null( $admin_first_name ) ? aifs_admin_first_name() : $admin_first_name )) . ", " . sprintf( __( "%s has saved you \$90 by providing Free SSL Certificates and will save more. Please share your experience with us on WordPress (probably with a five-star rating). That will help spread the word and boost our motivation.", 'auto-install-free-ssl' ), '<strong>' . AIFS_NAME . '</strong>' ) . " <br />~Anindya\n                            </div>\n                            <a style='background: #399642; color: #ffffff; text-decoration: none; padding: 7px 15px; border-radius: 5px;' href='https://wordpress.org/support/plugin/auto-install-free-ssl/reviews/#new-post' target='_blank'>" . __( "Sure! You Deserve It.", 'auto-install-free-ssl' ) . "</a>\n                      </div>";
     65            $html = "<div style='background-color: #000000; padding: 15px; margin-bottom: 18px;'>\n                            <div style='color: #FFFF00; font-size: 1.25em; margin-bottom: 16px;'>\n                                " . __( "Hey", 'auto-install-free-ssl' ) . " " . (( is_null( $admin_first_name ) ? aifs_admin_first_name() : $admin_first_name )) . ", ";
     66            /* translators: %s: Name of this plugin, i.e., 'Auto-Install Free SSL' */
     67            $html .= sprintf( __( "%s has saved you \$90 by providing Free SSL Certificates and will save more. Please share your experience with us on WordPress (probably with a five-star rating). That will help boost our motivation and spread the word.", 'auto-install-free-ssl' ), '<strong>' . AIFS_NAME . '</strong>' );
     68            $html .= " <br />\n                            </div>\n                            <a style='background: #399642; color: #ffffff; text-decoration: none; padding: 7px 15px; border-radius: 5px;' href='https://wordpress.org/support/plugin/auto-install-free-ssl/reviews/?filter=5#new-post' target='_blank'>" . __( "Sure! You Deserve It.", 'auto-install-free-ssl' ) . "</a>\n                      </div>";
    6569        } else {
    6670            $html = "";
     
    128132               
    129133                if ( $interval > 0 ) {
    130                     $subject = sprintf( __( "Your SSL certificate, for %s, is expiring in %s days", 'auto-install-free-ssl' ), $cert_array['subject']['CN'], $interval );
    131                 } else {
    132                     $subject = sprintf( __( "Your SSL certificate, for %s, is EXPIRED! Renew urgently.", 'auto-install-free-ssl' ), $cert_array['subject']['CN'] );
     134                    /* translators: %1$s: A domain name, e.g., example.com, %2$s: Number of days */
     135                    $subject = sprintf( __( 'Your SSL certificate, for %1$s, is expiring in %2$s days', 'auto-install-free-ssl' ), $cert_array['subject']['CN'], $interval );
     136                } else {
     137                    /* translators: %s: A domain name, e.g., example.com */
     138                    $subject = sprintf( __( "Your SSL certificate, for %s, is EXPIRED!", 'auto-install-free-ssl' ), $cert_array['subject']['CN'] ) . " ";
     139                    $subject .= __( "Renew urgently.", 'auto-install-free-ssl' );
    133140                }
    134141               
     
    137144               
    138145                if ( $interval > 0 ) {
    139                     $body .= "<p>" . sprintf( __( "Your SSL certificate, for %s, will expire in %s days.", 'auto-install-free-ssl' ), str_replace( 'DNS:', '', $cert_array['extensions']['subjectAltName'] ), $interval );
    140                 } else {
     146                    /* translators: %1$s: A domain name, e.g., example.com, %2$s: Number of days */
     147                    $body .= "<p>" . sprintf( __( 'Your SSL certificate, for %1$s, will expire in %2$s days.', 'auto-install-free-ssl' ), str_replace( 'DNS:', '', $cert_array['extensions']['subjectAltName'] ), $interval );
     148                } else {
     149                    /* translators: %s: A domain name, e.g., example.com */
    141150                    $body .= "<p>" . sprintf( __( "Your SSL certificate, for %s, is EXPIRED!", 'auto-install-free-ssl' ), str_replace( 'DNS:', '', $cert_array['extensions']['subjectAltName'] ) );
    142151                }
    143152               
     153                /* translators: %s: A date, e.g., December 30, 2023. */
    144154                $body .= " " . sprintf( __( "The expiry date is %s.", 'auto-install-free-ssl' ), $expiry_date ) . "</p>";
    145                 $body .= "<p style='color: red; font-size: 1.3em;'>" . sprintf( __( "If you don't renew the SSL certificate %s, your visitors will see a security warning in red and leave your website.", 'auto-install-free-ssl' ), ( $interval > 0 ? __( "before the expiry date", 'auto-install-free-ssl' ) : __( "URGENTLY", 'auto-install-free-ssl' ) ) ) . "</p>";
     155                $before_expiry = __( "before the expiry date", 'auto-install-free-ssl' );
     156                $urgently = __( "URGENTLY", 'auto-install-free-ssl' );
     157                /* translators: %s: Words, either 'before the expiry date' or 'URGENTLY' based on a predefined condition.  */
     158                $body .= "<p style='color: red; font-size: 1.3em;'>" . sprintf( __( "If you don't renew the SSL certificate %s, your visitors will see a security warning in red and leave your website.", 'auto-install-free-ssl' ), ( $interval > 0 ? $before_expiry : $urgently ) ) . "</p>";
     159                /* translators: %s: Name of the SSL certificate authority, e.g., Let's Encrypt */
    146160                $body .= "<p>" . sprintf( __( "The validity of %s free SSL is 90 days. They recommend renewing 30 days before expiry.", 'auto-install-free-ssl' ), $issuerShort ) . "</p>";
     161                /* translators: %s: HTML code to create a hyperlink with the text 'click here'. */
    147162                $body .= "<p>" . sprintf( __( "%sClick here%s to Renew your SSL today.", 'auto-install-free-ssl' ), '<a href="' . $renew_url . '">', '</a>' ) . "</p>";
    148                 //$body .= "<p>" . sprintf(__( "%sDo you want automatic renewal every 60 days?%s %sClick here%s to upgrade to the Premium Version using this %s discount code: %s The offer expires soon.%s", 'auto-install-free-ssl' ), '<strong>', '</strong>', '<a href="'. $this->factory->upgrade_url() .'">', '</a>', $discount_percentage, ('<span style="color: green; font-weight: bold; text-transform: uppercase;">' . $coupon_code . '</span><br /><span style="font-style: italic;">'), '</span>') . "</p>";
    149                 $body .= "<p>" . sprintf(
    150                     __( "%sTired of renewing & installing SSL certificates manually every 60 days?%s %sClick here%s to try Premium Version; the plugin will do everything automatically! %s discount code: %s The offer expires soon.%s", 'auto-install-free-ssl' ),
    151                     '<strong>',
    152                     '</strong>',
    153                     '<a href="' . $this->factory->upgrade_url() . '">',
    154                     '</a>',
    155                     $discount_percentage,
    156                     '<span style="color: green; font-weight: bold; text-transform: uppercase;">' . $coupon_code . '</span><br /><span style="font-style: italic;">',
    157                     '</span>'
    158                 ) . "</p>";
     163                //$body .= "<p>" . sprintf(__( '%1$sDo you want automatic renewal every 60 days?%2$s %3$sClick here%4$s to upgrade to the Premium Version using this %5$s discount code: %6$s The offer expires soon.%7$s', 'auto-install-free-ssl' ), '<strong>', '</strong>', '<a href="'. $this->factory->upgrade_url() .'">', '</a>', $discount_percentage, ('<span style="color: green; font-weight: bold; text-transform: uppercase;">' . $coupon_code . '</span><br /><span style="font-style: italic;">'), '</span>') . "</p>";
     164                //$body .= "<p>" . sprintf(__( '%1$sTired of renewing & installing SSL certificates manually every 60 days?%2$s %3$sClick here%4$s to try Premium Version; the plugin will do everything automatically! %5$s discount code: %6$s The offer expires soon.%7$s', 'auto-install-free-ssl' ), '<strong>', '</strong>', '<a href="'. $this->factory->upgrade_url() .'">', '</a>', $discount_percentage, ('<span style="color: green; font-weight: bold; text-transform: uppercase;">' . $coupon_code . '</span><br /><span style="font-style: italic;">'), '</span>') . "</p>";
     165                $body .= "<p><strong>" . __( "Tired of renewing & installing SSL certificates manually every 60 days?", 'auto-install-free-ssl' ) . "</strong> ";
     166                /* translators: %s: placeholders for HTML code to create a hyperlink with the text 'Click here'. */
     167                $body .= sprintf( __( '%sClick here%s to try Premium Version; the plugin will do everything automatically!', 'auto-install-free-ssl' ), '<a href="' . $this->factory->upgrade_url() . '">', '</a>' ) . " ";
     168                /* translators: %1$s: Discount percentage (includes % sign), %2$s: Coupon code for the discount */
     169                $body .= sprintf( __( '%1$s discount code: %2$s', 'auto-install-free-ssl' ), $discount_percentage, '<span style="color: green; font-weight: bold; text-transform: uppercase;">' . $coupon_code . '</span>' );
     170                $body .= '<br /><span style="font-style: italic;">' . __( "The offer expires soon.", 'auto-install-free-ssl' ) . '</span>';
     171                $body .= "</p>";
    159172                $body .= "<p>" . __( "Please ignore this email if you have renewed the SSL certificate already.", 'auto-install-free-ssl' ) . "</p>";
    160173                $body .= $this->add_email_signature();
  • auto-install-free-ssl/trunk/FreeSSLAuto/src/Logger.php

    r2868890 r2905766  
    8989            //throw new \RuntimeException("Can't create directory '$log_directory'. Please manually create this directory, set permission 0755 and try again.");
    9090            $this->exception_sse_friendly(
     91                /* translators: %s: A directory path */
    9192                sprintf( __( "Can't create directory '%s'. Please manually create this directory, set permission 0755, and try again.", 'auto-install-free-ssl' ), $log_directory ),
    9293                __FILE__,
  • auto-install-free-ssl/trunk/assets/css/aifs-admin.css

    r2886132 r2905766  
    476476    background: white;
    477477    color: black;
    478     margin: 2% 0;
     478    margin: 2% 0 2% 8%;
    479479    padding: 1% 1.5%;
    480480    border-style: solid;
     
    482482    border-color: green;
    483483    text-align: center;
     484    max-width: 80%;
    484485}
    485486
     
    493494    font-weight: bold;
    494495}
     496
     497.aifs-welcome{
     498
     499}
  • auto-install-free-ssl/trunk/auto-install-free-ssl.php

    r2892748 r2905766  
    77 * Plugin URI:  https://freessl.tech
    88 * Description: Generate & install Free SSL Certificates, activate force HTTPS redirect with one click to fix insecure links & mixed content warnings, and get automatic Renewal Reminders.
    9  * Version:     3.4.1
     9 * Version:     3.4.2
    1010 * Requires at least: 4.1
    1111 * Requires PHP:      5.6
     
    4242/* Deny direct access */
    4343if ( !defined( 'ABSPATH' ) ) {
    44     die( __( 'Oops! Access denied.', 'auto-install-free-ssl' ) );
     44    die( __( "Access denied", 'auto-install-free-ssl' ) );
    4545}
    4646
     
    8989
    9090if ( !defined( 'PHP_VERSION_ID' ) || PHP_VERSION_ID < 50400 ) {
    91     wp_die( __( "You need at least PHP 5.4.0\n", 'auto-install-free-ssl' ) );
     91    wp_die( __( "You need at least PHP 5.4.0", 'auto-install-free-ssl' ) );
    9292}
    9393if ( !extension_loaded( 'openssl' ) ) {
    94     wp_die( __( "You need OpenSSL extension enabled with PHP\n", 'auto-install-free-ssl' ) );
     94    wp_die( __( "You need OpenSSL extension enabled with PHP", 'auto-install-free-ssl' ) );
    9595}
    9696if ( !extension_loaded( 'curl' ) ) {
    97     wp_die( __( "You need Curl extension enabled with PHP\n", 'auto-install-free-ssl' ) );
     97    wp_die( __( "You need Curl extension enabled with PHP", 'auto-install-free-ssl' ) );
    9898}
    9999if ( !ini_get( 'allow_url_fopen' ) ) {
     
    522522    }
    523523    wp_register_script( 'aifs_script_1', AIFS_URL . 'assets/js/script.js', array( 'jquery' ) );
     524    /* translators: "Let's Encrypt" is a nonprofit SSL certificate authority. */
     525    $agree_to_le_terms = __( "Please read and agree to the Let's Encrypt™ Subscriber Agreement", 'auto-install-free-ssl' );
    524526    // Localize the script with new data
    525527    $translation_array = array(
    526528        'password_or_api_token' => __( "Please provide either a Password or an API Token", 'auto-install-free-ssl' ),
    527529        'admin_email'           => __( "Please provide the Admin Email id", 'auto-install-free-ssl' ),
    528         'le_terms'              => __( "Please read and agree to the Let's Encrypt Subscriber Agreement", 'auto-install-free-ssl' ),
     530        'le_terms'              => $agree_to_le_terms,
    529531        'freessl_tech_tos_pp'   => __( "Please read and agree to FreeSSL.tech Terms of Service and Privacy Policy", 'auto-install-free-ssl' ),
    530532    );
     
    704706    if ( isset( $_GET['aifsdownloadssl'] ) ) {
    705707        if ( !wp_verify_nonce( $_GET['aifsdownloadssl'], 'aifs_download_ssl' ) ) {
    706             wp_die( __( 'Access denied', 'auto-install-free-ssl' ) );
     708            wp_die( __( "Access denied", 'auto-install-free-ssl' ) );
    707709        }
    708710        $app_settings = aifs_get_app_settings();
     
    890892        $link = $factory->upgrade_url( "AUTOMATION", "hide_coupon=true&checkout=true" );
    891893        // AUTOMATION
    892         $html = '<a href="' . $link . '" style="text-decoration: none;"><div class="card block-body" style="width: 100%; padding-left: 2%; margin-left: -1%; margin-top: -3.5%;">
    893              <p>' . sprintf( __( "WAIT, HOW ABOUT %s OFF?", 'auto-install-free-ssl' ), "25%" ) . '<img src="' . AIFS_URL . 'assets/img/fire.webp" style="margin-left: 4%; width 20px; height: 20px;"></p>
     894        $html = '<a href="' . $link . '" style="text-decoration: none;"><div class="card block-body" style="width: 100%; padding-left: 2%; margin-left: -1%; margin-top: -3.5%;">';
     895        /* translators: %s: Discount percentage (includes % sign)  */
     896        $html .= '<p>' . sprintf( __( "WAIT, HOW ABOUT %s OFF?", 'auto-install-free-ssl' ), "25%" ) . '<img src="' . AIFS_URL . 'assets/img/fire.webp" style="margin-left: 4%; width 20px; height: 20px;"></p>
    894897             <p>' . __( "Facing difficulties? Our Premium Plugin automatically generates free SSL certificates and installs & renews them.", 'auto-install-free-ssl' ) . '</p>
    895898             <p><i>' . __( "BONUS: we'll do the one-time setup for you.", 'auto-install-free-ssl' ) . '</i> <a class="aifs-review-now aifs-review-button" style="margin-left: 5%;" href="' . $link . '">' . __( "Grab the deal now!", 'auto-install-free-ssl' ) . '</a></p>
     
    906909    aifssl_fs()->add_filter( 'uninstall_reasons', 'aifs_deactivation_promo' );
    907910    //add_filter( 'fs_uninstall_reasons_auto-install-free-ssl', 'aifs_deactivation_promo', 1 );
    908 }
     911    /*
     912             * // https://mail.google.com/mail/u/0/#inbox/FMfcgzGrcrtWVHmRdMXDqsxZvKGDBDnD
     913             * function aifs_uninstall_confirmation_message() {
     914                //return '<div><p>25% discount code for you: <strong>AUTOMATION</strong></p><p></p><p>Facing difficulties?</p></div>';
     915                $factory = new Factory();
     916                $link    = $factory->upgrade_url( "AUTOMATION", "hide_coupon=true&checkout=true" ); // AUTOMATION
     917                return '<div><a href="' . $link . '" style="text-decoration: none;"><div class="card block-body" style="width: 100%; padding-left: 2%; margin-left: -1%; margin-top: -3.5%;">
     918                 <p>' . sprintf( __( "WAIT, HOW ABOUT %s OFF?", 'auto-install-free-ssl' ), "25%" ) . '<img src="' . AIFS_URL . 'assets/img/fire.webp" style="margin-left: 4%; width 20px; height: 20px;"></p>
     919                 <p>' . __( "Facing difficulties? Our Premium Plugin automatically generates free SSL certificates and installs & renews them.", 'auto-install-free-ssl' ) . '</p>
     920                 <p><i>' . __( "BONUS: we'll do the one-time setup for you.", 'auto-install-free-ssl' ) . '</i> <a class="aifs-review-now aifs-review-button" style="margin-left: 5%;" href="' . $link . '">' . __( "Grab the deal now!", 'auto-install-free-ssl' ) . '</a></p>
     921                </div></a></div>';
     922            }
     923   
     924            aifssl_fs()->add_filter( 'uninstall_confirmation_message', 'aifs_uninstall_confirmation_message' );*/
     925}
  • auto-install-free-ssl/trunk/freemius/start.php

    r2892748 r2905766  
    1616     * @var string
    1717     */
    18     $this_sdk_version = '2.5.6';
     18    $this_sdk_version = '2.5.7';
    1919
    2020    #region SDK Selection Logic --------------------------------------------------------------------
  • auto-install-free-ssl/trunk/readme.txt

    r2892748 r2905766  
    77Requires at least: 4.1
    88Tested up to: 6.2
    9 Stable tag: 3.4.1
     9Stable tag: 3.4.2
    1010Requires PHP: 5.6
    1111Development location: https://freessl.tech
     
    1818### Auto-Install Free SSL
    1919
    20 **'Auto Install Free SSL' is the first WordPress Plugin that Automatically issues and installs Free SSL Certificates.**
     20**With over [350 five-star reviews ⭐⭐⭐⭐⭐](https://wordpress.org/support/plugin/auto-install-free-ssl/reviews/?filter=5), 'Auto Install Free SSL' is the FIRST WordPress Plugin that helps you effortlessly generate Free SSL Certificates in your WordPress dashboard.**
    2121
    2222Let's Encrypt™ SSL Certificate is FREE. But they provide it through their API. If you are not a programmer, you need to study and practice programming for years to be able to use the API of Let's Encrypt™ to generate a single Free SSL Certificate for your WordPress website.
     
    2727
    2828
    29 `    305,500+ DOWNLOADS!!`
     29`    312,500+ DOWNLOADS!!`
    3030
    3131
     
    169169
    1701701. After the previous step, you'll be redirected to the Generate SSL page (in most cases). Otherwise, navigate to the 'Auto-Install Free SSL' menu in the sidebar, and click the 'Generate SSL' option. [Screenshot here.](https://ps.w.org/auto-install-free-ssl/assets/screenshot-1.png?rev=2750244)
    171 1. On the next page, i.e., the 'Generate Free SSL Certificate' page, read & agree to the Let's Encrypt Subscriber Agreement and FreeSSL.tech Terms of Service & Privacy Policy by clicking the relevant checkboxes. Then click the 'Generate Free SSL' button and 'OK' in the confirmation dialog box. [Screenshot here.](https://ps.w.org/auto-install-free-ssl/assets/screenshot-2.png?rev=2750244)
     1711. On the next page, i.e., the 'Generate Free SSL Certificate' page, read & agree to the Let's Encrypt Subscriber Agreement and FreeSSL.tech Terms of Service & Privacy Policy by clicking the relevant checkboxes. Then click the 'Generate Free SSL' button and 'OK' in the confirmation dialog box. [Screenshot here.](https://ps.w.org/auto-install-free-ssl/assets/screenshot-2.png?rev=2750244)
    1721721. Wait a few seconds. Then you see the second step: 'Verify Domain'. Please check the [screenshot](https://ps.w.org/auto-install-free-ssl/assets/screenshot-3.png?rev=2750244). You have two methods, HTTP-01 and DNS-01, to verify your domain ownership. You need to complete any one method. We are discussing only the HTTP-01 method, the most popular, easiest, and time-saving method.
    173173
     
    230230The options will differ if your web hosting control panel is anything other than cPanel and Plesk, but the concept is similar.
    231231
    232 **NOTE:** The free SSL certificate issued by Let's Encrypt expires in 90 days. So you need to spend time repeating the process of generating and installing an SSL certificate every 60 days. They recommend renewing 30 days before expiry.
     232**NOTE:** The free SSL certificate issued by Let's Encrypt expires in 90 days. So you need to spend time repeating the process of generating and installing an SSL certificate every 60 days. They recommend renewing 30 days before expiry.
    233233
    234234Click the 'Re-generate (renew) SSL' button to start renewing.
     
    285285` urn:ietf:params:acme:error:invalidEmail `
    286286
    287 Let's Encrypt API throws this error if an invalid email was set as the admin email of your WordPress website, for example, "[email protected]" or "[email protected]". Let's Encrypt expects we should register an account with a working email.
     287Let's Encrypt™ API throws this error if an invalid email was set as the admin email of your WordPress website, for example, "[email protected]" or "[email protected]". Let's Encrypt™ expects we should register an account with a working email.
    288288
    289289To fix this, please update this plugin to the latest version and try generating the SSL again. Then you'll get a text field to update the admin email address.
     
    340340== Changelog ==
    341341
    342 = 3.4.1 =
    343 * Updated the Freemius WordPress SDK to version 2.5.6.
    344 * Removed the function request_free_premium_license(), unused since January 1, 2023.
    345 
    346 = 3.4.0 =
    347 * Improved the layout of all the steps to generate free SSL certificate and the free vs. premium comparison page.
    348 * Refactored and created a few functions.
    349 * Updated the Freemius WordPress SDK to version 2.5.5.
    350 * Tested up to WordPress 6.2
    351 
    352 = 3.3.2 =
    353 * Fixed the issue with upgrade URL for the users who used the free premium license but now downgraded to free version.
    354 * [Pro] Added cPanel username check to prevent using email id as cPanel username - display an error text if email id found.
    355 
    356 = 3.3.1 =
    357 * Fixed the issues with translation compatibility and made all the texts translation ready.
    358 
    359 = 3.3.0 =
    360 * Refactored to fix a bug where a fatal error would be thrown in combination with plugin that uses usrflo/registered-domain-libs library.
    361 * Fixed CSS conflict in combination with Enable Media Replace plugin.
    362 
    363 = 3.2.15 =
    364 * Updated the signature of the automated emails.
    365 * Updated display announcement.
    366 * [Pro] New function to detect if the user can use wildcard SSL.
    367 * [Pro] Improvement in code to smooth transition from free premium license (if the user was using wildcard SSL or multi-domain mode) to single or 5-site license.
    368 
    369 = 3.2.14 =
    370 * Added a new function to fetch the admin user's last name.
    371 * Added a new function to return the upgrade link for aifs_is_existing_user().
    372 * Changed upgrade link for aifs_is_existing_user(). Previous link didn't work in some installations.
    373 
    374 = 3.2.13 =
    375 * Improved the function for better detecting cPanel host.
    376 * Fixed a bug that unexpectedly calls Generate SSL Manually Page (available for free version only) in some premium installations, which results in error of type E_ERROR.
    377 * Updated the Freemius WordPress SDK to version 2.5.3.
    378 * Updated display announcement.
    379 
    380 = 3.2.12 =
    381 * Improved the error handling at Step 1 of generating Free SSL Certificates.
    382 * Updated the Freemius WordPress SDK to version 2.5.2.
    383 * Changed the icon.
    384 * Improved the function that returns first name of the WordPress admin.
    385 
    386 = 3.2.11 =
    387 * Improved the Let's Encrypt ACME account key registration code.
    388 * Fixed a bug with error handling at the Domain Ownership verification step.
    389 
    390 = 3.2.10 =
    391 * [Pro] Fixed issue with SSL generation where the license is not for unlimited sites and the 'domain' key returned by cPanel is other than the WordPress website's domain.
    392 * Added Force HTTPS override. If a valid SSL is installed but there is any issue activating Force HTTPS with the default option, it can be activated by accessing such URL (login required): http://www.example.com/wp-admin/admin.php?page=aifs_force_https&aifsaction=aifs_force_https_override&checked_ssl_manually=done&valid_ssl_installed=yes    (Replace 'www.example.com' with your domain.)
    393 
    394 = 3.2.9 =
    395 * Fixed a bug: duplicate display in admin notice (caused since version 3.2.7).
    396 
    397 = 3.2.8 =
    398 * Fixed backward compatibility for older versions of WordPress for wp_date() function.
    399 
    400 = 3.2.7 =
    401 * Fixed the issue with renewal link in the SSL renewal reminder email.
    402 * Fixed an issue with type casting in SSL renewal reminder with admin notice.
    403 * Added an option to keep or delete plugin data on deactivation.
    404 * Unschedule cron job event on deactivation.
    405 
    406 = 3.2.6 =
    407 * Improved the function that registers new ACME account.
    408 * Added a feature to send SSL renewal reminder by email before the SSL expiry date.
    409 
    410 = 3.2.5 =
    411 * Updated LET'S ENCRYPT SUBSCRIBER AGREEMENT.
    412 * Fixed an issue with the 'Remind me later' button of display review request admin notice.
    413 * Added a feature to display SSL renewal reminder with admin notice.
    414 
    415 = 3.2.4 =
    416 * Improved footer links by using separate links for free and premium version.
    417 * Improved logic of the submit button at manually generate SSL step 1 (free version) - now it does not display confirmation dialog if both checkboxes are selected.
    418 * Improved the comparison table which will be displayed on the non-cPanel websites.
    419 * Improved admin notice - if premium version, display review request only if the control panel is cPanel.
    420 * Improved the instructions which will be displayed on the main page of the free version, after purchasing the premium.
    421 
    422 = 3.2.3 =
    423 * Added a new function to detect the document root of the WP installation instead of using $_SERVER['DOCUMENT_ROOT'].
    424 * Improved the function getcPanelHost() that detects the cPanel host.
    425 * [Pro] Display the video tutorial 'How to Configure this Plugin and Set Up Automation in cPanel' only on cPanel hosting (to avoid confusion on non-cPanel hosting).
    426 
    427 = 3.2.2 =
    428 * Added a new function to detect Plesk.
    429 * Improved the logic of the documentation at SSL generation step 3 so that it can display the appropriate video with the specific control panel.
    430 * Improved the comparison table.
    431 * [Pro] Added (and replaced) 'What's next?' information if the control panel is not cPanel so that users contact us for complete automation with an alternative method. Updated the same text in the log and automated email.
    432 
    433 = 3.2.1 =
    434 * Fixed the slow loading issue of the Generate SSL (manually) page on Windows and on non-cPanel Linux hosting if the open_basedir restriction is in effect.
    435 * Improved text of the comparison table.
    436 
    437 = 3.2.0 =
    438 * Improved: Windows hosting is now supported for both free and Pro version.
    439 * [Pro] Improved text of the starting page for the users who don't have cPanel.
    440 * [Pro] Fixed the double redirect issue after clicking the button in the starting page to generate SSL certificate (for the users who don't have cPanel).
    441 
    442 = 3.1.3 =
    443 * Fixed an issue with manual SSL generation where the initial Let's Encrypt server response expiry date has been passed but SSL generation steps were not completed.
    444 * Updated video tutorials with vimeo-hosted videos.
    445 * [Pro] Improved automated email text, log text and main page text for the users, who don't have cPanel.
    446 * [Pro] Moved Activate Force HTTPS option at bottom of the main page and added video tutorial (How to Install SSL Certificate) in that place for the users, who don't have cPanel.
    447 * [Pro] Automated SSL installation now possible with an add-on shell script for the users who don't have cPanel, but have root access to the server. Premium users need to contact us to get the script.
    448 * [Pro] Added 'Single/Multi Domain' button in the main page.
    449 
    450 = 3.1.2 =
    451 * Improved comparison table and page.
    452 * Replaced the link of comparison table (in admin notice) with the improved comparison page.
    453 
    454 = 3.1.1 =
    455 * Improved the layout of step 2 (Verify Domain).
    456 * Replaced written tutorial with Video Tutorial (1) 'Plesk: How to upload HTTP-01 challenge files' (step 2). (2) 'Plesk: How to Install SSL Certificate' (step 3).
    457 * [Pro] Fixed a PHP Warning.
    458 * [Pro] Fixed issue with accessing the cPanel settings if the existing SSL expired, but the website forced to load over HTTPS.
    459 
    460 = 3.1.0 =
    461 * Added a new page and menu for 'Activate Force HTTPS'.
    462 * Added a button in the header 'Force HTTPS' to easily access the option.
    463 * Improved Generate SSL (manually) page: (1) At step 3, changed the position of the Video Tutorial 'cPanel: How to Install SSL Certificate', so that users can access it easily. (2) Moved 'Activate Force HTTPS' option at the bottom of this page (step 3). (3) Show 'Activate Force HTTPS' option only if an SSL certificate has been generated but Force HTTPS is not activated (step 3).
    464 * Added Tutorial content with Generate SSL (manually) page: (1) Video Tutorial 'cPanel: How to upload HTTP-01 challenge files' (step two). (2) Written Tutorial 'Plesk: How to upload HTTP-01 challenge files' (step 2). (3) Written Tutorial 'Plesk: How to Install SSL Certificate' (step 3).
    465 * [Pro] Improved cPanel Settings: (1) Added clear information that users need to use either an API Token or Password. Not both. (If the license is not for unlimited websites). (2) Changed the position of the Short Video Tutorial 'How to Create API Tokens in cPanel', so that users can access it easily. (3) Removed 'Activate Force HTTPS' option from the cPanel settings page. (4) Fixed the issue with checking whether password is filled in, if the user opted to generate wildcard SSL certificate.
    466 * [Pro] Added separate Support Forum URL for the premium version users, so that they don't post at the WordPress.org Support Forum.
    467 * [Pro] Added filter to show the contact submenu item only when the user have a valid non-expired license.
    468 
    469 = 3.0.7 =
    470 * Updated the Freemius WordPress SDK to version 2.4.5.
    471 * [Pro] Improved Exclude Domains settings.
    472 * [Pro] Fixed an issue with the function sslRequiredForFirstTime() that detects whether the plugin is generating SSL certificate for the first time.
    473 
    474 = 3.0.6 =
    475 * Advanced detection of the users who were using the plugin since free only version (v2).
    476 * Changed menu icon and menu position.
    477 * Improvement in header styling.
    478 * [Pro] Added new function to check cPanel connectivity.
    479 * Added new comparison table to help understand the difference between free and pro version better.
    480 
    481 = 3.0.5 =
    482 * Affiliate program launched - any one can join.
    483 * Fixed an issue with PHP 8.
    484 * [Pro] Added cPanel authentication with API Token. Users can provide API Token instead of Password.
    485 * [Pro] Improved cPanel Settings logging.
    486 
    487 = 3.0.4 =
    488 * Updated the freemius WP SDK to version 2.4.4.
    489 * Updated: keep SSL log for 90 days.
    490 * Fixed issue with admin alerts.
    491 * Improved the content of readme.txt.
    492 
    493 = 3.0.3 =
    494 * Fixed some issues for smooth upgrade from version 2 to Free version 3.
    495 * Improved a few text.
    496 
    497 = 3.0.2 =
    498 * Fixed a function name conflict with Form Maker Pro plugin.
    499 * Improved auto-detection [Pro] whether the plugin was used for multi-domain. This helps smooth upgrading to the Pro version 3 from version 2.
    500 
    501 = 3.0.1 =
    502 * Fixed an issue displaying the FREE Premium License offer (with admin notice) for the Existing users, who are upgrading from the free version 2.2.3 or earlier.
    503 
    504 = 3.0.0 =
    505 * Compatible with WordPress 6.0
    506 * Fixed an issue displaying the 'Activate Force HTTPS' button.
    507 * Improved 'Activate Force HTTPS' feature.
    508 * Added a new feature to save the log for 45 days and easy access from the menu.
    509 * Improvement in the layout.
    510 * Fixed an issue with the parameter of function getDomainPath(), which returns the domain path.
    511 * As per the announcement dated November 3, 2020, we are releasing the premium/pro version, which is fully automated and this free version doesn't have any automation feature. We are offering a 6-month FREE premium license to all existing users (who are upgrading from the free version 2.2.3 or earlier). This FREE premium license is valid until December 31, 2022.
    512   Existing users need to upgrade the free plugin to version 3.0.0, then they’ll get the option to request the Premium License for FREE.
    513 * Improved setup process [Pro] Users can set it up within one minute in the single domain mode.
    514 * Improved cPanel Settings [Pro]
    515 * Improved Cron job [Pro] No need to manually configure the cron job. It is activated by default with WP cron.
    516 * Improved ‘Issue and install Free SSL certificate’ option [Pro] Now users can view the server-generated event messages in real-time with a terminal-like interface, with SSE.
    517 * Improved data entry [Pro] A few essential data are prefilled automatically.
    518 
    519 = 2.2.2 =
    520 * Fixed conflict with 'Post SMTP Mailer/Email Log' plugin.
    521 * Fixed an issue to make it translation ready.
    522 * Announcement to restructure the features.
    523 
    524 = 2.2.1 =
    525 * Removes parameter type declaration of the function connect_over_ssl() to make the plugin compatible with PHP 5.6. This function has been added in the version 2.2.0.
    526 
    527 = 2.2.0 =
    528 * Adds validation with the 'Activate Force HTTPS' option. Now it works only if a valid SSL installed on the website.
    529 * Changed the support link that appears in the footer of the admin pages.
    530 
    531 = 2.1.7 =
    532 * Fixed a bug with 'Issue and install Free SSL certificate' option
    533 * Improved the layout of 'Issue and install Free SSL certificate' option
    534 
    535 = 2.1.6 =
    536 * Adds video guide: How to Configure this Plugin and set up Automation
    537 
    538 = 2.1.5 =
    539 * Fixed minor error in the file DnsServiceProvidersSettings.php that throws PHP Notice: Undefined index: use_wildcard
    540 
    541 = 2.1.4 =
    542 * Improves 'Add Cron Job' option.
    543 * Adds two video guides: 'How to add a Cron Job in a minute on cPanel shared hosting' and 'How to Install Free SSL Certificate on cPanel Shared Hosting'.
    544 * Adds FAQ.
    545 
    546 = 2.1.3 =
    547 * Improves Force HTTPS feature. Regenerating dynamic CSS with premium themes will include HTTPS and remove the not secure warning in browsers.
    548 
    549 = 2.1.2 =
    550 * Fixed a bug with the dashboard of Auto-Install Free SSL.
    551 
    552 = 2.1.1 =
    553 * Fixed issue with the encryption key.
    554 * Adds admin notification and sends an email to admin in case the encryption key was changed due to a previous update.
    555 
    556 = 2.1.0 =
    557 * Improves internal validation (HTTP-01 challenge) - Before the domain ownership validation with Let's Encrypt, if the payload content doesn't match with content of the challenge URI (in internal check), attempt for automatic fix with .htaccess rules in two different ways.
    558 * Improves cPanel Settings option.
    559 * Improves Temporary SSL option.
    560 
    561 = 2.0.1 =
    562 * Fixed issues with PHP 5.6, 7.0 and 7.2
    563 
    564 = 2.0.0 =
    565 * Adds the option to Activate Force HTTPS and remove mixed content warning with a single click. This feature will make the padlock visible in the browser's address bar.
    566 * Removes the option to choose Let's Encrypt ACME version. The plugin now uses ACME V2 only. Because V1 is reaching the end of life soon.
    567 
    568 = 1.1.0 =
    569 * Fixed issue with cron job
    570 
    571 = 1.0.0 =
    572 * Initial release
     342Please click the following URL for the changelog:
     343[https://freessl.tech/aifs_changelog.txt](https://freessl.tech/aifs_changelog.txt)
Note: See TracChangeset for help on using the changeset viewer.