/** * Returns the appropriate header value of authorization depending on the available credentials. * * @return mixed string of the header value if successful, false otherwise. */ private static function get_auth_header_value() { if ("false" == Sendgrid_Tools::get_mc_opt_use_transactional()) { $mc_api_key = Sendgrid_Tools::get_mc_api_key(); if (false != $mc_api_key) { return 'Bearer ' . $mc_api_key; } } $auth_method = Sendgrid_Tools::get_auth_method(); if ('credentials' == $auth_method) { $creds = base64_encode(Sendgrid_Tools::get_username() . ':' . Sendgrid_Tools::get_password()); return 'Basic ' . $creds; } else { $api_key = Sendgrid_Tools::get_api_key(); if (false == $api_key) { return false; } return 'Bearer ' . $api_key; } }
/** * Display SendGrid settings page content * * @return void */ public static function show_settings_page() { $response = null; $error_from_update = false; if ('POST' == $_SERVER['REQUEST_METHOD'] and !isset($_POST['sg_dismiss_widget_notice'])) { $response = self::do_post($_POST); if (isset($response['status']) and $response['status'] == 'error') { $error_from_update = true; } } $status = ''; $message = ''; $user = Sendgrid_Tools::get_username(); $password = Sendgrid_Tools::get_password(); $api_key = Sendgrid_Tools::get_api_key(); $send_method = Sendgrid_Tools::get_send_method(); $auth_method = Sendgrid_Tools::get_auth_method(); $name = stripslashes(Sendgrid_Tools::get_from_name()); $email = Sendgrid_Tools::get_from_email(); $reply_to = Sendgrid_Tools::get_reply_to(); $categories = stripslashes(Sendgrid_Tools::get_categories()); $template = stripslashes(Sendgrid_Tools::get_template()); $port = Sendgrid_Tools::get_port(); $content_type = Sendgrid_Tools::get_content_type(); $unsubscribe_group_id = Sendgrid_Tools::get_unsubscribe_group(); $stats_categories = stripslashes(Sendgrid_Tools::get_stats_categories()); $mc_api_key = Sendgrid_Tools::get_mc_api_key(); $mc_list_id = Sendgrid_Tools::get_mc_list_id(); $mc_opt_use_transactional = Sendgrid_Tools::get_mc_opt_use_transactional(); $mc_opt_incl_fname_lname = Sendgrid_Tools::get_mc_opt_incl_fname_lname(); $mc_opt_req_fname_lname = Sendgrid_Tools::get_mc_opt_req_fname_lname(); $mc_signup_confirmation_page = Sendgrid_Tools::get_mc_signup_confirmation_page(); $mc_signup_email_subject = Sendgrid_Tools::get_mc_signup_email_subject(); if (false == $mc_signup_email_subject) { $mc_signup_email_subject = self::DEFAULT_SIGNUP_EMAIL_SUBJECT . get_bloginfo('name'); } $mc_signup_email_content = Sendgrid_Tools::get_mc_signup_email_content(); if (false == $mc_signup_email_content) { $mc_signup_email_content = self::DEFAULT_SIGNUP_EMAIL_CONTENT . get_bloginfo('name') . '</p>'; } $mc_signup_email_content = stripslashes($mc_signup_email_content); $mc_signup_email_content_text = Sendgrid_Tools::get_mc_signup_email_content_text(); if (false == $mc_signup_email_content_text) { $mc_signup_email_content_text = self::DEFAULT_SIGNUP_EMAIL_CONTENT_TEXT . get_bloginfo('name'); } $mc_signup_email_content_text = stripslashes($mc_signup_email_content_text); $confirmation_pages = get_pages(array('parent' => 0)); $checked_use_transactional = ''; if ('true' == $mc_opt_use_transactional) { $checked_use_transactional = 'checked'; } $checked_incl_fname_lname = ''; if ('true' == $mc_opt_incl_fname_lname) { $checked_incl_fname_lname = 'checked'; } $checked_req_fname_lname = ''; if ('true' == $mc_opt_req_fname_lname) { $checked_req_fname_lname = 'checked'; } $contact_lists = Sendgrid_NLVX::get_all_lists(); $contact_list_id_is_valid = false; if (false != $contact_lists) { foreach ($contact_lists as $key => $list) { if ($mc_list_id == $list['id']) { $contact_list_id_is_valid = true; break; } } } $allowed_send_methods = array('API'); if (class_exists('Swift')) { $allowed_send_methods[] = 'SMTP'; } $is_mc_api_key_valid = true; if ('true' == $mc_opt_use_transactional and 'apikey' == $auth_method and !empty($api_key)) { if (!Sendgrid_Tools::check_api_key_mc($api_key)) { $is_mc_api_key_valid = false; } } else { if ('true' != $mc_opt_use_transactional) { if (!Sendgrid_Tools::check_api_key_mc($mc_api_key)) { $is_mc_api_key_valid = false; } } } if ($is_mc_api_key_valid) { Sendgrid_Tools::set_mc_auth_valid('true'); } else { Sendgrid_Tools::set_mc_auth_valid('false'); } if (!$error_from_update) { if (!in_array(strtoupper($send_method), $allowed_send_methods)) { $message = 'Invalid send method configured in the config file, available methods are: ' . join(", ", $allowed_send_methods); $status = 'error'; } if ('apikey' == $auth_method and !empty($api_key)) { if (!Sendgrid_Tools::check_api_key($api_key, true)) { $message = 'API Key is invalid or without permissions.'; $status = 'error'; } elseif ('true' == $mc_opt_use_transactional and !$is_mc_api_key_valid) { $message = 'The configured API Key for subscription widget is invalid, empty or without permissions.'; $status = 'error'; } elseif ('error' != $status) { $status = 'valid_auth'; } } elseif ('credentials' == $auth_method and !empty($user) and !empty($password)) { if (!Sendgrid_Tools::check_username_password($user, $password, true)) { $message = 'Username and password are invalid.'; $status = 'error'; } elseif ('error' != $status) { $status = 'valid_auth'; } } if ($template and !Sendgrid_Tools::check_template($template)) { $message = 'Template not found.'; $status = 'error'; } if (!in_array($port, Sendgrid_Tools::$allowed_ports)) { $message = 'Invalid port configured in the config file, available ports are: ' . join(",", Sendgrid_Tools::$allowed_ports); $status = 'error'; } if (!in_array($auth_method, Sendgrid_Tools::$allowed_auth_methods)) { $message = 'Invalid authentication method configured in the config file, available options are: ' . join(", ", Sendgrid_Tools::$allowed_auth_methods); $status = 'error'; } if (defined('SENDGRID_CONTENT_TYPE')) { if (!in_array(SENDGRID_CONTENT_TYPE, Sendgrid_Tools::$allowed_content_type)) { $message = 'Invalid content type, available content types are: "plaintext" or "html".'; $status = 'error'; } } if (defined('SENDGRID_FROM_EMAIL')) { if (!Sendgrid_Tools::is_valid_email(SENDGRID_FROM_EMAIL)) { $message = 'Sending email address is not valid in config file.'; $status = 'error'; } } if (defined('SENDGRID_REPLY_TO')) { if (!Sendgrid_Tools::is_valid_email(SENDGRID_REPLY_TO)) { $message = 'Reply email address is not valid in config file.'; $status = 'error'; } } } // get unsubscribe groups $unsubscribe_groups = Sendgrid_Tools::get_all_unsubscribe_groups(); $no_permission_on_unsubscribe_groups = false; if ('apikey' == $auth_method and 'true' != Sendgrid_Tools::get_asm_permission()) { $no_permission_on_unsubscribe_groups = true; } $is_env_auth_method = defined('SENDGRID_AUTH_METHOD'); $is_env_send_method = defined('SENDGRID_SEND_METHOD'); $is_env_username = defined('SENDGRID_USERNAME'); $is_env_password = defined('SENDGRID_PASSWORD'); $is_env_api_key = defined('SENDGRID_API_KEY'); $is_env_port = defined('SENDGRID_PORT'); $is_env_content_type = defined('SENDGRID_CONTENT_TYPE'); $is_env_unsubscribe_group = defined('SENDGRID_UNSUBSCRIBE_GROUP'); $is_env_mc_api_key = defined('SENDGRID_MC_API_KEY'); $is_env_mc_list_id = defined('SENDGRID_MC_LIST_ID'); $is_env_mc_opt_use_transactional = defined('SENDGRID_MC_OPT_USE_TRANSACTIONAL'); $is_env_mc_opt_incl_fname_lname = defined('SENDGRID_MC_OPT_INCL_FNAME_LNAME'); $is_env_mc_opt_req_fname_lname = defined('SENDGRID_MC_OPT_REQ_FNAME_LNAME'); $is_env_mc_signup_email_subject = defined('SENDGRID_MC_SIGNUP_EMAIL_SUBJECT'); $is_env_mc_signup_email_content = defined('SENDGRID_MC_SIGNUP_EMAIL_CONTENT'); $is_env_mc_signup_email_content_text = defined('SENDGRID_MC_SIGNUP_EMAIL_CONTENT_TEXT'); $is_env_mc_signup_confirmation_page = defined('SENDGRID_MC_SIGNUP_CONFIRMATION_PAGE'); if ($response and $status != 'error') { $message = $response['message']; $status = $response['status']; if (array_key_exists('error_type', $response)) { $error_type = $response['error_type']; } } require_once dirname(__FILE__) . '/../view/sendgrid_settings.php'; }