Example #1
0
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&#64;hebcal.com">webmaster&#64;hebcal.com</a>.</p>
EOD;
    }
    echo $html;
}
Example #2
0
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);
}
Example #3
0
    exit;
} 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"];
    ?>