|
From: Florin C B. <ory...@us...> - 2013-04-03 11:24:27
|
Update of /cvsroot/mxbb/mx_calsnails/includes In directory sfp-cvs-1.v30.ch3.sourceforge.com:/tmp/cvs-serv16508 Modified Files: cal_functions.php Log Message: Module Upgraded to oO Index: cal_functions.php =================================================================== RCS file: /cvsroot/mxbb/mx_calsnails/includes/cal_functions.php,v retrieving revision 1.20 retrieving revision 1.21 diff -C2 -d -r1.20 -r1.21 *** cal_functions.php 3 Apr 2013 10:56:51 -0000 1.20 --- cal_functions.php 3 Apr 2013 11:24:25 -0000 1.21 *************** *** 10,18 **** */ ! if ( !defined('IN_PORTAL') ) { die("Hacking attempt"); } //class AdvanceCalendar class AdvanceCalendar extends JewishCalendar --- 10,60 ---- */ ! /** ! * @ignore ! */ ! if (!defined('IN_PORTAL')) { die("Hacking attempt"); } + @define('JEWISH_SDN_OFFSET', 347997); + @define('HALAKIM_PER_HOUR', 1080); + @define('HALAKIM_PER_DAY', 25920); + @define('HALAKIM_PER_LUNAR_CYCLE', ((29*HALAKIM_PER_DAY)+13753)); + @define('HALAKIM_PER_METONIC_CYCLE', (HALAKIM_PER_LUNAR_CYCLE * (12*19+7))); + @define('NEW_MOON_OF_CREATION', 31524); + @define('SUNDAY', 0); + @define('MONDAY', 1); + @define('TUESDAY', 2); + @define('WEDNESDAY', 3); + @define('THURSDAY', 4); + @define('FRIDAY', 5); + @define('SATURDAY', 6); + @define('NOON', (18*HALAKIM_PER_HOUR)); + @define('AM3_11_20', ((9*HALAKIM_PER_HOUR)+204)); + @define('AM9_32_43', ((15*HALAKIM_PER_HOUR)+589)); + @define('ALAFIM', " ××פ×× "); + + if(!defined('CAL_JEWISH_ADD_ALAFIM')) + { + define('CAL_JEWISH_ADD_ALAFIM', 4); + } + + if(!defined('CAL_JEWISH_ADD_ALAFIM_GERESH')) + { + define('CAL_JEWISH_ADD_ALAFIM_GERESH', 2); + } + + if(!defined('CAL_JEWISH_ADD_GERESHAYIM')) + { + define('CAL_JEWISH_ADD_GERESHAYIM', 8); + } + + $alef_bet = array('0','×','×','×','×','×','×','×','×','×','×','×','×','×','× ','ס','×¢','פ','צ','×§','ר','ש','ת'); + $monthsPerYear = array(12, 12, 13, 12, 12, 13, 12, 13, 12, 12, 13, 12, 12, 13, 12, 12, 13, 12, 13 ); + $yearOffset = array(0, 12, 24, 37, 49, 61, 74, 86, 99, 111, 123, 136, 148, 160, 173, 185, 197, 210, 222 ); + $jewishMonthHebName = array('', 'TISHREI', 'CHESHVAN', 'KISLEV', 'TEVET', 'SHVAT', 'ADAR', 'ADAR_B', 'NISAN', 'IYYAR', 'SIVAN', 'TAMUZ', 'AV', 'ELUL'); + + //class AdvanceCalendar class AdvanceCalendar extends JewishCalendar *************** *** 1849,1852 **** --- 1891,2171 ---- } return $mode == CAL_LANG_NATIVE ? $hebrew[$month] : $foreign[$month]; + } + + /** + * + * @package MXP Cal. Module + * @version $Id$ + * Copyright 1993-1995, Scott E. Lee, all rights reserved. + * Permission granted to use, copy, modify, distribute and sell so long as + * the above copyright and this permission statement are retained in all + * copies. THERE IS NO WARRANTY - USE AT YOUR OWN RISK. + * + */ + function MoladOfMetonicCycle($metonicCycle) + { + $r1 = NEW_MOON_OF_CREATION; + $r1 += $metonicCycle * (HALAKIM_PER_METONIC_CYCLE & 0xffff ); + $r2 = $r1 >> 16; + $r2 += $metonicCycle * ((HALAKIM_PER_METONIC_CYCLE >> 16)&0xffff); + $d2 = intval($r2 / HALAKIM_PER_DAY); + $r2 -= $d2 * HALAKIM_PER_DAY; + $r1 = ($r2 << 16) | ($r1 &0xffff); + $d1 = intval($r1 / HALAKIM_PER_DAY); + $r1 -= $d1 * HALAKIM_PER_DAY; + + return array(($d2<<16)|$d1, $r1); + } + + function Tishri1($metonicYear, $moladDay, $moladHalakim) + { + $tishri1 = $moladDay; + $dow = $tishri1 % 7; + $leapYear = $metonicYear == 2 || $metonicYear == 5 || $metonicYear == 7 || $metonicYear == 10 || $metonicYear == 13 || $metonicYear == 16 || $metonicYear == 18; + $lastWasLeapYear = $metonicYear == 3 || $metonicYear == 6 || $metonicYear == 8 || $metonicYear == 11 || $metonicYear == 14 || $metonicYear == 17 || $metonicYear == 0; + + if (($moladHalakim >= NOON) || ((!$leapYear) && $dow == TUESDAY && $moladHalakim >= AM3_11_20) || ($lastWasLeapYear && $dow == MONDAY && $moladHalakim >= AM9_32_43)) + { + $tishri1++; + $dow++; + + if ($dow == 7) + { + $dow = 0; + } + } + + if ($dow == WEDNESDAY || $dow == FRIDAY || $dow == SUNDAY) + { + $tishri1++; + } + + return $tishri1; + } + + function FindTishriMolad($inputDay) + { + global $monthsPerYear; + + $metonicCycle = intval(($inputDay + 310)/6940); + $mDay = $this->MoladOfMetonicCycle($metonicCycle); + + while ($mDay[0] < ($inputDay - 6940 + 310)) + { + $metonicCycle += 1; + $mDay[1] += HALAKIM_PER_METONIC_CYCLE; + $mDay[0] += intval($mDay[1] / HALAKIM_PER_DAY); + $mDay[1] %= HALAKIM_PER_DAY; + } + + for ($metonicYear = 0; $metonicYear < 18; $metonicYear++) + { + if ( $mDay[0] > ($inputDay - 74) ) break; + + $mDay[1] += HALAKIM_PER_LUNAR_CYCLE * $monthsPerYear[$metonicYear]; + $mDay[0] += intval($mDay[1] / HALAKIM_PER_DAY); + $mDay[1] %= HALAKIM_PER_DAY; + } + + return array($metonicCycle, $metonicYear, $mDay[0], $mDay[1]); + } + + function SdnToJewish($sdn) + { + global $monthsPerYear; + + $rYear = $rMonth = $rDay = 0; + + if ($sdn <= JEWISH_SDN_OFFSET) return array(0, 0, 0); + + $inputDay = $sdn - JEWISH_SDN_OFFSET; + $mCycle = $this->FindTishriMolad($inputDay); + + $tishri1 = $this->Tishri1($mCycle[1], $mCycle[2], $mCycle[3]); + + if ($inputDay >= $tishri1) + { + $rYear = $mCycle[0] * 19 + $mCycle[1] + 1; + + if ($inputDay < $tishri1 + 59) + { + if ($inputDay < $tishri1 + 30) + { + return array($rYear, 1, $inputDay - $tishri1 + 1); // Year , Month , Day + } + else + { + return array($rYear, 2, $inputDay - $tishri1 - 29); // Year , Month , Day + } + } + + $mCycle[3] += HALAKIM_PER_LUNAR_CYCLE * $monthsPerYear[$mCycle[1]]; + $mCycle[2] += intval($mCycle[3] / HALAKIM_PER_DAY); + $mCycle[3] %= HALAKIM_PER_DAY; + $tishri1After = Tishri1(($mCycle[1]+1)%19, $mCycle[2], $mCycle[3]); + } + else + { + $rYear = $mCycle[0] * 19 + $mCycle[1]; + + if ($inputDay >= $tishri1 - 177) + { + if ($inputDay > $tishri1 - 30) + { + return array($rYear, 13, $inputDay - $tishri1 + 30); + } + else if ($inputDay > $tishri1 - 60) + { + return array($rYear, 12, $inputDay - $tishri1 + 60); + } + else if ($inputDay > $tishri1 - 89) + { + return array($rYear, 11, $inputDay - $tishri1 + 89); + } + else if ($inputDay > $tishri1 - 119) + { + return array($rYear, 10, $inputDay - $tishri1 + 119); + } + else if ($inputDay > $tishri1 - 148) + { + return array($rYear, 9, $inputDay - $tishri1 + 148); + } + + return array($rYear, 8, $inputDay - $tishri1 + 178); + } + else + { + $rDay = $inputDay - $tishri1 + 207; + + if ($monthsPerYear[($rYear-1)%19] == 13) + { + $rMonth = 7; + + if ($rDay > 0) return array($rYear, $rMonth, $rDay); + + $rMonth -= 1; + $rDay += 30; + + if ($rDay > 0) return array($rYear, $rMonth, $rDay); + + $rMonth -= 1; + $rDay += 30; + } + else + { + $rMonth = 6; + + if ($rDay > 0) return array($rYear, $rMonth, $rDay); + + $rMonth -= 1; + $rDay += 30; + } + + if ($rDay > 0) return array($rYear, $rMonth, $rDay); + + $rMonth -= 1; + $rDay += 29; + + if ($rDay > 0) return array($rYear, $rMonth, $rDay); + + $tishri1After = $tishri1; + $mCycle = $this->FindTishriMolad ( $mCycle[2] - 365 ); + $tishri1 = $this->Tishri1 ( $mCycle[1] , $mCycle[2] , $mCycle[3] ); + } + } + + $yearLength = $tishri1After - $tishri1; + $mCycle[2] = $inputDay - $tishri1 - 29; + + if ($yearLength == 355 || $yearLength == 385) + { + if ($mCycle[2] <= 30) return array($rYear, 2, $mCycle[2]); + + $mCycle[2] -= 30; + } + else + { + if ($mCycle[2] <= 29) return array ($rYear, 2, $mCycle[2]); + + $mCycle[2] -= 29; + } + + return array($rYear, 3, $mCycle[2]); + } + + function heb_number_to_chars($n, $fl) + { + global $alef_bet; + + $last_letter = ''; + $num_string = ''; + $let_count = 0; + + if ($n > 9999 || $n < 1) return false; + + if (intval($n / 1000)) + { + $num_string .= $alef_bet[$n/1000]; + + if (CAL_JEWISH_ADD_ALAFIM_GERESH & $fl) $num_string .= "'"; + if (CAL_JEWISH_ADD_ALAFIM & $fl) $num_string .= ALAFIM; + + $n = $n % 1000; + } + + while ($n >= 400) + { + $num_string .= ($last_letter=$alef_bet[22]); + $let_count += 1; + $n -= 400; + } + + if ($n >= 100) + { + $num_string .= ($last_letter=$alef_bet[18+$n/100]); + $let_count += 1; + $n %= 100; + } + + if ($n == 15 || $n == 16) + { + $num_string .= $alef_bet[9]; + $num_string .= ($last_letter=$alef_bet[$n-9]); + $let_count += 2; + } + else + { + if ($n >= 10) + { + $num_string .= ($last_letter=$alef_bet[9+$n/10]); + $let_count += 1; + $n %= 10; + } + + if ($n > 0) + { + $num_string .= ($last_letter=$alef_bet[$n]); + $let_count += 1; + } + } + + if (CAL_JEWISH_ADD_GERESHAYIM & $fl) + { + switch ($let_count) + { + case 0: + break; + + case 1: + $num_string .= "'"; + break; + + default: + $num_string = substr($num_string, 0, -strlen($last_letter)) . '"' . $last_letter; + break; + } + } + + return $num_string; } *************** *** 1857,1868 **** { global $jewishMonthHebName, $mx_user; ! $jwdate = SdnToJewish($juliandaycount); if ($jwdate[0] <= 0 || $jwdate[0] > 9999) { return $mx_user->lang['YEAR_OUT_OF_RANGE']; } ! $day = $hebrew ? heb_number_to_chars($jwdate[2], $fl) : $jwdate[2]; $month = $mx_user->lang['jewish_months'][$jewishMonthHebName[$jwdate[1]]]; ! $year = $hebrew ? heb_number_to_chars($jwdate[0], $fl) : $jwdate[0]; return sprintf("%s %s %s", $day, $month, $year); } --- 2176,2187 ---- { global $jewishMonthHebName, $mx_user; ! $jwdate = $this->SdnToJewish($juliandaycount); if ($jwdate[0] <= 0 || $jwdate[0] > 9999) { return $mx_user->lang['YEAR_OUT_OF_RANGE']; } ! $day = $hebrew ? $this->heb_number_to_chars($jwdate[2], $fl) : $jwdate[2]; $month = $mx_user->lang['jewish_months'][$jewishMonthHebName[$jwdate[1]]]; ! $year = $hebrew ? $this->heb_number_to_chars($jwdate[0], $fl) : $jwdate[0]; return sprintf("%s %s %s", $day, $month, $year); } *************** *** 1887,1891 **** $juliandaycount = unixtojd($timestemp); $data = array(); ! $jwdate = SdnToJewish($juliandaycount); if ($jwdate[0] <= 0 || $jwdate[0] > 9999) { --- 2206,2210 ---- $juliandaycount = unixtojd($timestemp); $data = array(); ! $jwdate = $this->SdnToJewish($juliandaycount); if ($jwdate[0] <= 0 || $jwdate[0] > 9999) { *************** *** 1895,1900 **** $data = array( 'day' => $jwdate[2], ! 'day_heb' => heb_number_to_chars($jwdate[2], CAL_JEWISH_ADD_GERESHAYIM), ! 'day_lang' => $user_hebrew ? heb_number_to_chars($jwdate[2], CAL_JEWISH_ADD_GERESHAYIM) : $jwdate[2], 'month' => $jwdate[1], --- 2214,2219 ---- $data = array( 'day' => $jwdate[2], ! 'day_heb' => $this->heb_number_to_chars($jwdate[2], CAL_JEWISH_ADD_GERESHAYIM), ! 'day_lang' => $user_hebrew ? $this->heb_number_to_chars($jwdate[2], CAL_JEWISH_ADD_GERESHAYIM) : $jwdate[2], 'month' => $jwdate[1], *************** *** 1904,1909 **** 'year' => $jwdate[0], ! 'year_heb' => heb_number_to_chars($jwdate[0], CAL_JEWISH_ADD_GERESHAYIM), ! 'year_lang' => $user_hebrew ? heb_number_to_chars($jwdate[0], CAL_JEWISH_ADD_GERESHAYIM) : $jwdate[0], ); --- 2223,2228 ---- 'year' => $jwdate[0], ! 'year_heb' => $this->heb_number_to_chars($jwdate[0], CAL_JEWISH_ADD_GERESHAYIM), ! 'year_lang' => $user_hebrew ? $this->heb_number_to_chars($jwdate[0], CAL_JEWISH_ADD_GERESHAYIM) : $jwdate[0], ); *************** *** 1988,1992 **** } } - return sizeof($date) ? implode(" ", $date) : $format; } --- 2307,2310 ---- |