page_header( __( 'Settings', 'ai-siteark' ), __( 'What to back up, schedules, off-site destinations and your license — grouped in one place.', 'ai-siteark' ) ); ?>
array( 'success', __( 'Settings saved.', 'ai-siteark' ) ),
'test_sent' => array( 'success', __( 'Test email sent.', 'ai-siteark' ) ),
'test_failed' => array( 'error', __( 'Could not send the test email — check the address and your site mail setup.', 'ai-siteark' ) ),
'cloud_connected' => array( 'success', __( 'Cloud destination connected. New backups will upload there automatically.', 'ai-siteark' ) ),
'cloud_disconnected' => array( 'success', __( 'Cloud destination disconnected.', 'ai-siteark' ) ),
'cloud_error' => array( 'error', __( 'Could not connect that cloud destination. Please try again.', 'ai-siteark' ) ),
'cloud_pro' => array( 'error', __( 'Off-site destinations are a Pro feature. Upgrade to connect cloud storage.', 'ai-siteark' ) ),
'license_active' => array( 'success', __( 'License activated.', 'ai-siteark' ) ),
'license_inactive' => array( 'info', __( 'License deactivated.', 'ai-siteark' ) ),
'code_sent' => array( 'success', __( 'We emailed you a 6-digit verification code. Enter it below to finish activation.', 'ai-siteark' ) ),
'code_invalid' => array( 'error', __( 'That code is invalid or expired. Please try again or resend a new code.', 'ai-siteark' ) ),
'license_email' => array( 'error', __( 'Please enter a valid email address.', 'ai-siteark' ) ),
'license_terms' => array( 'error', __( 'You must accept the Terms and Privacy Policy to activate.', 'ai-siteark' ) ),
'license_seats' => array( 'error', __( 'This key has reached its site limit. Deactivate it on another site or upgrade your plan to add more sites.', 'ai-siteark' ) ),
'license_checked' => array( 'info', __( 'Checked for updates.', 'ai-siteark' ) ),
'license_error' => array( 'error', __( 'Activation failed. Please check your details (and that the site can reach the license server) and try again.', 'ai-siteark' ) ),
);
if ( isset( $aisiteark_notices[ $aisiteark_msg ] ) ) :
$aisiteark_notice_text = $aisiteark_notices[ $aisiteark_msg ][1];
// Append the provider's own error (from the OAuth broker) when present, so a
// failed cloud connect says *why* — see docs/CLOUD-OAUTH-TROUBLESHOOTING.md.
if ( 'cloud_error' === $aisiteark_msg ) {
$aisiteark_detail = get_transient( 'aisiteark_cloud_error_detail' );
delete_transient( 'aisiteark_cloud_error_detail' );
if ( $aisiteark_detail ) {
/* translators: %s: error message reported by the storage provider. */
$aisiteark_notice_text .= ' ' . sprintf( __( 'Provider said: “%s”.', 'ai-siteark' ), $aisiteark_detail );
}
}
?>
pro_lock_card(
'dashicons-clock',
__( 'Automatic backups & retention', 'ai-siteark' ),
__( 'Schedule daily or weekly backups that run automatically, with count- and age-based retention that prunes old copies so storage never runs away. Optional AES-256 encryption for unattended backups. This is a Pro feature.', 'ai-siteark' ),
$aisiteark_checkout
);
?>
pro_lock_card(
'dashicons-cloud',
__( 'Off-site destinations', 'ai-siteark' ),
__( 'Upload every backup off-site to Google Drive, OneDrive, Dropbox, Amazon S3 or FTP/SFTP, so your data survives even if this server is lost. Connecting a destination is a Pro feature.', 'ai-siteark' ),
$aisiteark_checkout
);
?>