עכשיו היה לי צורך לעשות כזו בדיקה ב php אם לשלוח צינתוק אוטומטי, או האם אסור כעת.
לא מצאתי משהו קל לשילוב בקוד שלי, לכת כתבתי משהו לבד.
השתמשתי עם ה API של Hebcal,
הפונקציה בודקת אם היום שבת או חג, ואם כן האם עבר זמן הבדלה או לא.
אם היום לא שבת או חג, יש בדיקה אם עבר זמן הדלקת הנרות (אם יש) או לא עבר.
עקב כך שבמערכת שלי יש אנשים בכל הארץ, הגדרתי זמנים לפי ירושלים, עם הגדרת הדלקת הנרות 59 דקות לפני השקיעה, והבדלה 90 דקות אחרי השקיעה, כך זה יכסה לי את כל הארץ.
להלן הקוד:
echo IsPermissibleSendTsintok();
function IsPermissibleSendTsintok(){
//בדיקת זמני היום, האם מותר הלכתית לשלוח צינתוק
$YYYY = date('Y');
$MM = date('m');
$DD = date('d');
/*
* לבדיקות
$YYYY = $_REQUEST['YYYY'];
$MM = $_REQUEST['MM'];
$DD = $_REQUEST['DD'];
*/
$json = file_get_contents('https://www.hebcal.com/hebcal?v=1&cfg=json&geo=geoname&geonameid=281184&start='.$YYYY.'-'.$MM.'-'.$DD.'&end='.$YYYY.'-'.$MM.'-'.$DD.'&maj=on&s=on&leyning=off&b=59&m=90');
$json = json_decode($json, true);
/*
* לבדיקות
echo "<pre>";
print_r($json);
echo "</pre>";
*/
$items = $json['items'];
//אם יש ערך במערך
if(count($items) > 0){
foreach ($items as $item) {
if ($item['category'] == 'candles') {
$candles = explode( "T", $item['date']);
$candlesDate = $candles[0];
$candlesTime = explode( "+", $candles[1])[0];
}
if ($item['category'] == 'havdalah') {
$havdalah = explode( "T", $item['date']);
$havdalahDate = $havdalah[0];
$havdalahTime = explode( "+", $havdalah[1])[0];
}
}
if($items[0]['category'] == 'parashat'){
//בדוק אם כבר עבר זמן havdalah
if(strtotime($havdalahDate." ".$havdalahTime) < strtotime(date('Y-m-d H:i:s'))){
return "מותר לשלוח צינתוק";
}else{
exit('אסור לשלוח צינתוק');
}
}elseif ($items[0]['yomtov'] == '1'){
if(strtotime($havdalahDate." ".$havdalahTime) < strtotime(date('Y-m-d H:i:s'))){
return "מותר לשלוח צינתוק";
}else{
exit('אסור לשלוח צינתוק');
}
}else{
//בדוק אם כבר עבר זמן נרות
if(strtotime($candlesDate." ".$candlesTime) < strtotime(date('Y-m-d H:i:s'))){
exit('אסור לשלוח צינתוק');
}else{
return "מותר לשלוח צינתוק";
}
}
}
return "מותר לשלוח צינתוק";
}