function subscribe($param) { global $sender; if (preg_match('/\\@hebcal.com$/', $param["em"])) { form($param, "Sorry, can't use a <strong>hebcal.com</strong> email address."); } if ($param["geo"] == "zip") { if (!$param["zip"]) { form($param, "Please enter your zip code for candle lighting times."); } if (!preg_match('/^\\d{5}$/', $param["zip"])) { form($param, "Sorry, <strong>" . htmlspecialchars($param["zip"]) . "</strong> does\n" . "not appear to be a 5-digit zip code."); } list($city, $state, $tzid, $latitude, $longitude, $lat_deg, $lat_min, $long_deg, $long_min) = hebcal_get_zipcode_fields($param["zip"]); if (!$state) { form($param, "Sorry, can't find\n" . "<strong>" . htmlspecialchars($param["zip"]) . "</strong> in the zip code database.\n", "<ul><li>Please try a nearby zip code</li></ul>"); } $city_descr = "{$city}, {$state} " . $param["zip"]; unset($param["city"]); unset($param["geonameid"]); } elseif ($param["geo"] == "geoname") { if (!$param["geonameid"]) { form($param, "Please search for your city for candle lighting times."); } if (!preg_match('/^\\d+$/', $param["geonameid"])) { form($param, "Sorry, <strong>" . htmlspecialchars($param["geonameid"]) . "</strong> does\n" . "not appear to be a valid geonameid."); } list($name, $asciiname, $country, $admin1, $latitude, $longitude, $tzid) = hebcal_get_geoname($param["geonameid"]); if (!isset($tzid)) { form($param, "Sorry, <strong>" . htmlspecialchars($param["geonameid"]) . "</strong> is\n" . "not a recoginized geonameid."); } $city_descr = geoname_city_descr($name, $admin1, $country); unset($param["zip"]); unset($param["city"]); } else { $param["geo"] = "geoname"; form($param, "Sorry, missing location (zip, geonameid) field."); } // check for old sub if (isset($param["prev"]) && $param["prev"] != $param["em"]) { $info = get_sub_info($param["prev"], false); if (isset($info["status"]) && $info["status"] == "active") { sql_unsub($param["prev"]); } } // check if email address already verified $info = get_sub_info($param["em"], false); if (isset($info["status"]) && $info["status"] == "active") { write_sub_info($param); $from_name = "Hebcal"; $from_addr = "*****@*****.**"; $reply_to = "*****@*****.**"; $subject = "Your subscription is updated"; global $remoteAddr; $ip = $remoteAddr; $unsub_addr = "shabbat-unsubscribe+" . $info["id"] . "@hebcal.com"; $headers = array("From" => "\"{$from_name}\" <{$from_addr}>", "To" => $param["em"], "Reply-To" => $reply_to, "List-Unsubscribe" => "<mailto:{$unsub_addr}>", "MIME-Version" => "1.0", "Content-Type" => "text/html; charset=UTF-8", "X-Sender" => $sender, "X-Mailer" => "hebcal web", "Message-ID" => "<Hebcal.Web." . time() . "." . posix_getpid() . "@hebcal.com>", "X-Originating-IP" => "[{$ip}]", "Subject" => $subject); $body = <<<EOD <div dir="ltr"> <div>Hello,</div> <div><br></div> <div>We have updated your weekly Shabbat candle lighting time subscription for {$city_descr}.</div> <div><br></div> <div>Regards, <br>hebcal.com</div> <div><br></div> <div>To unsubscribe from this list, send an email to: <br><a href="mailto:shabbat-unsubscribe@hebcal.com">shabbat-unsubscribe@hebcal.com</a></div> </div> EOD; $err = smtp_send(get_return_path($param["em"]), $param["em"], $headers, $body); $html_email = htmlentities($param["em"]); $html = <<<EOD <div class="alert alert-success"> <strong>Success!</strong> Your subsciption information has been updated. <p>Email: <strong>{$html_email}</strong> <br>Location: {$city_descr}</p> </div> EOD; echo $html; return true; } if (isset($info["status"]) && $info["status"] == "pending" && isset($info["id"])) { $old_encoded = $info["id"]; } else { $old_encoded = null; } $encoded = write_staging_info($param, $old_encoded); $from_name = "Hebcal"; $from_addr = "*****@*****.**"; $subject = "Please confirm your request to subscribe to hebcal"; global $remoteAddr; $ip = $remoteAddr; $headers = array("From" => "\"{$from_name}\" <{$from_addr}>", "To" => $param["em"], "MIME-Version" => "1.0", "Content-Type" => "text/html; charset=UTF-8", "X-Sender" => $sender, "X-Mailer" => "hebcal web", "Message-ID" => "<Hebcal.Web." . time() . "." . posix_getpid() . "@hebcal.com>", "X-Originating-IP" => "[{$ip}]", "Subject" => $subject); $url_prefix = "https://" . $_SERVER["HTTP_HOST"]; $body = <<<EOD <div dir="ltr"> <div>Hello,</div> <div><br></div> <div>We have received your request to receive weekly Shabbat candle lighting time information from hebcal.com for {$city_descr}.</div> <div><br></div> <div>Please confirm your request by clicking on this link:</div> <div><br></div> <div><a href="{$url_prefix}/email/verify.php?{$encoded}">{$url_prefix}/email/verify.php?{$encoded}</a></div> <div><br></div> <div>If you did not request (or do not want) weekly Shabbat candle lighting time information, please accept our apologies and ignore this message.</div> <div><br></div> <div>Regards, <br>hebcal.com</div> <div><br></div> <div>[{$remoteAddr}]</div> </div> EOD; $err = smtp_send(get_return_path($param["em"]), $param["em"], $headers, $body); $html_email = htmlentities($param["em"]); if ($err === true) { $html = <<<EOD <div class="alert alert-success"> <strong>Thank you!</strong> A confirmation message has been sent to <strong>{$html_email}</strong> for {$city_descr}.<br> Click the link within that message to confirm your subscription. </div> <p>If you do not receive this acknowledgment message within an hour or two, then the most likely problem is that you made a typo in your email address. If you do not get the confirmation message, please return to the subscription page and try again, taking care to avoid typos.</p> EOD; } else { $html = <<<EOD <div class="alert alert-danger"> <h4>Server Error</h4> Sorry, we are temporarily unable to send email to <strong>{$html_email}</strong>. </div> <p>Please try again in a few minutes.</p> <p>If the problem persists, please send email to <a href="mailto:webmaster@hebcal.com">webmaster@hebcal.com</a>.</p> EOD; } echo $html; }
function my_geoname_city_descr($geonameid) { list($name, $asciiname, $country, $admin1, $latitude, $longitude, $tzid) = hebcal_get_geoname($geonameid); return geoname_city_descr($name, $admin1, $country); }
} else { if (isset($info["zip"]) && preg_match('/^\\d{5}$/', $info["zip"])) { list($city, $state, $tzid, $latitude, $longitude, $lat_deg, $lat_min, $long_deg, $long_min) = hebcal_get_zipcode_fields($info["zip"]); $city_descr = "{$city}, {$state} " . $info["zip"]; unset($info["city"]); unset($info["geonameid"]); } elseif (isset($info["geonameid"]) && preg_match('/^\\d+$/', $info["geonameid"])) { list($name, $asciiname, $country, $admin1, $latitude, $longitude, $tzid) = hebcal_get_geoname($info["geonameid"]); $city_descr = geoname_city_descr($name, $admin1, $country); unset($info["zip"]); unset($info["city"]); } elseif (isset($info["city"])) { $geonameid = hebcal_city_to_geoname($info["city"]); if ($geonameid !== false) { list($name, $asciiname, $country, $admin1, $latitude, $longitude, $tzid) = hebcal_get_geoname($geonameid); $city_descr = geoname_city_descr($name, $admin1, $country); $info["geonameid"] = $geonameid; unset($info["zip"]); unset($info["city"]); } } echo html_header_bootstrap3("Confirm Email Subscription"); ?> <div class="row"> <div class="col-sm-12"> <p class="lead">Confirm your subscription to weekly Shabbat candle lighting times and Torah portion by email.</p> <p>Email: <strong><?php echo $info["em"]; ?> </strong>