PluginProbe ʕ •ᴥ•ʔ
Daily Prayer Time / 2024.09.12
Daily Prayer Time v2024.09.12
2026.05.20 2026.05.11 2026.05.09 2026.05.05 2026.05.04 2026.05.03 2026.04.28 2026.04.28.1 trunk 2019.10.16 2019.11.19 2019.2.16 2019.3.1 2019.4.1 2019.4.5 2019.5.12 2019.5.13 2019.5.14 2019.5.19 2019.5.19.1 2019.5.21 2019.5.30 2019.5.5 2019.5.6 2019.5.7 2019.5.8 2019.5.9 2019.6.10 2019.6.2 2019.6.22 2019.7.10 2019.7.25 2019.8.1 2019.8.4 2019.9.16 2020.04.25 2020.04.26 2020.05.01 2020.05.04 2020.05.08 2020.05.17 2020.07.03 2021.01.10 2021.03.28 2021.07.20 2021.07.23 2021.07.24 2021.07.28 2021.08.01 2021.08.06 2021.08.07 2021.08.10 2021.09.12 2021.09.18 2021.09.23 2021.09.24 2021.10.01 2021.10.02 2021.10.10 2021.10.11 2021.10.15 2021.10.21 2021.10.27 2021.10.29 2022.03.24 2022.04.04 2022.04.14 2022.04.15 2022.04.21 2022.04.22 2022.05.04 2022.09.19 2022.11.14 2022.11.16 2022.12.18 2022.12.20 2023.01.27 2023.02.04 2023.02.09 2023.02.21 2023.03.08 2023.03.17 2023.03.18 2023.03.20 2023.05.04 2023.08.03 2023.08.08.16 2023.08.19 2023.08.19.1 2023.10.13 2023.10.21 2023.11.26 2023.12.28 2023.12.31 2024.03.28 2024.03.29 2024.03.30 2024.04.18 2024.04.20 2024.04.22 2024.04.26 2024.08.26 2024.09.12 2024.09.14 2024.09.17 2024.12.29 2024.12.30 2025.01.02 2025.01.17 2025.02.02 2025.03.04 2025.03.06 2025.03.08 2025.03.15 2025.03.20 2025.03.26 2025.03.27 2025.04.03 2025.06.16 2025.06.29 2025.07.15 2025.08.09 2025.10.26 2026.04.26
daily-prayer-time-for-mosques / Models / HijriDate.php
daily-prayer-time-for-mosques / Models Last commit date
Hijri 3 years ago Processors 1 year ago QuranADay 2 years ago StartTime 4 years ago design 1 year ago AdminMenu.php 2 years ago AssetsLoader.php 1 year ago CustomPluginSettings.php 4 years ago DPTAjaxHandler.php 4 years ago DPTHelper.php 2 years ago DSTemplateLoader.php 2 years ago DailyShortCode.php 2 years ago DigitalScreen.php 1 year ago HijriDate.php 3 years ago Init.php 4 years ago MonthlyShortCode.php 2 years ago MonthlyTimeTable.php 3 years ago Shortcodes.php 2 years ago Translator.php 4 years ago UpdateStyles.php 2 years ago Validator.php 3 years ago db.php 3 years ago dptWidget.php 4 years ago
HijriDate.php
189 lines
1 <?php
2 require_once "Hijri/hijri.class.php";
3
4 class HijriDate
5 {
6 private $isRamadan = false;
7
8 private $hijriMonth = array ("Muharram", "Safar", "Rabī al-Awwal", "Rabī ath-Thānī", "Jumādā al-Ula", "Jumādā ath-Thāniya", "Rajab", "Sha'ban", "Ramadan", "Shawwal", "Dhū al-Qa'da", "Dhū al-Hijjah");
9
10 private $arabicMonth = array (
11 "Muharram" => "ٱلْ�
12 ُحَرَّ�
13 ",
14 "Safar" => "صَفَر",
15 "Rabī al-Awwal" => "رَبِيع ٱلْأَوَّل",
16 "Rabī ath-Thānī" => "رَبِيع ٱلثَّانِي",
17 "Jumādā al-Ula" => "جُ�
18 َادَىٰ ٱلْأُولَىٰ",
19 "Jumādā ath-Thāniya" => "جُ�
20 َادَىٰ ٱلثَّانِيَة",
21 "Rajab" => "رَجَب",
22 "Sha'ban" => "شَعْبَان",
23 "Ramadan" => "رَ�
24 َضَان",
25 "Shawwal" => "شَوَّال",
26 "Dhū al-Qa'da" => "ذُو ٱلْقَعْدَة",
27 "Dhū al-Hijja" => "ذُو ٱلْحِجَّة"
28 );
29
30 private $arabicNumbers = [
31 0 => '٠',
32 1 => '١',
33 2 => '٢',
34 3 => '٣',
35 4 => '٤',
36 5 => '٥',
37 6 => '٦',
38 7 => '٧',
39 8 => '٨',
40 9 => '٩'
41 ];
42
43 /**
44 * @param $day
45 * @param $month
46 * @param $year
47 * @param bool $stringDate
48 * @param bool $sunset
49 *
50 * @return array|string
51 */
52 public function getDate($day, $month, $year, $stringDate=false, $sunset=false)
53 {
54 if ($sunset == true) {
55 $dt = new DateTime('tomorrow');
56 $tomorrow = $dt->format('d/m/Y');
57 $parts = explode('/', $tomorrow);
58 $day = $parts[0];
59 $month = $parts[1];
60 $year = $parts[2];
61 }
62
63 $isUmmulQura = get_option('hijri-ummul-qura');
64 $date = $this->greg2Hijri($day, $month, $year);
65 if ($isUmmulQura) {
66 $date = $this->getUmmulQuraDate($day, $month, $year);
67 }
68
69 $day = $date['day'];
70 $month = $this->hijriMonth[(int) $date['month'] - 1];
71 $year = $date['year'];
72
73 $this->isRamadan = strpos($month, 'Ramadan');
74
75 if ( get_option('hijri-arabic-chbox') ) {
76 $day = $this->getArabicNumber($day);
77 $month = $this->getArabicMonth($month);
78 $year = $this->getArabicNumber($year);
79 }
80
81 if ($stringDate) {
82 return "{$day} {$month} {$year}";
83 }
84
85 return array(
86 'day' => $day,
87 'month' => $month,
88 'year' => $year
89 );
90 }
91
92 public function getToday() {
93 return $this->getDate(date("d"), date("m"), date("Y"), true, false);
94 }
95
96 public function isRamadan()
97 {
98 return $this->isRamadan OR get_option('ramadan_chbox');
99 }
100
101 /**
102 * @param int $day
103 * @param int $month
104 * @param int $year
105 *
106 * @return array|string
107 */
108 private function greg2Hijri($day, $month, $year)
109 {
110 $day = (int) $day + (int) get_option('hijri-adjust');
111 $month = (int) $month;
112 $year = (int) $year;
113
114
115 if (($year > 1582) or (($year == 1582) and ($month > 10)) or (($year == 1582) and ($month == 10) and ($day > 14)))
116 {
117 $jd = $this->intPart((1461*($year+4800+$this->intPart(($month-14)/12)))/4)+$this->intPart((367*($month-2-12*($this->intPart(($month-14)/12))))/12)-
118 $this->intPart( (3* ($this->intPart( ($year+4900+ $this->intPart( ($month-14)/12) )/100) ) ) /4)+$day-32075;
119 }
120 else
121 {
122 $jd = 367*$year-$this->intPart((7*($year+5001+$this->intPart(($month-9)/7)))/4)+$this->intPart((275*$month)/9)+$day+1729777;
123 }
124
125
126 $l = $jd-1948440+10632;
127 $n = $this->intPart(($l-1)/10631);
128 $l = $l-10631*$n+354;
129 $j = ($this->intPart((10985-$l)/5316))*($this->intPart((50*$l)/17719))+($this->intPart($l/5670))*($this->intPart((43*$l)/15238));
130 $l = $l-($this->intPart((30-$j)/15))*($this->intPart((17719*$j)/50))-($this->intPart($j/16))*($this->intPart((15238*$j)/43))+29;
131
132 $month = $this->intPart((24*$l)/709);
133 $day = $l-$this->intPart((709*$month)/24);
134 $year = 30*$n+$j-30;
135
136 return array(
137 'day' => $day,
138 'month' => $month,
139 'year' => $year
140 );
141 }
142
143 /**
144 * @param float $float
145 *
146 * @return float
147 */
148 private function intPart($float)
149 {
150 if ($float < -0.0000001)
151 return ceil($float - 0.0000001);
152 else
153 return floor($float + 0.0000001);
154
155 }
156
157 private function getArabicNumber($number)
158 {
159 $arabicNumber = '';
160 $numbers = str_split($number);
161 foreach($numbers as $key) {
162 $arabicNumber .= $this->arabicNumbers[$key];
163 }
164
165 return $arabicNumber;
166 }
167
168 private function getArabicMonth($month)
169 {
170 return $this->arabicMonth[$month];
171 }
172
173 private function getUmmulQuraDate(int $day, int $month, int $year)
174 {
175 $day = $day + (int) get_option('hijri-adjust');
176
177 $settings['umalqura'] = false; //get from settings
178 $d = new dpt\Calendar($settings);
179
180 $hijri = $d->GregorianToHijri($year, $month,$day);
181
182 return array(
183 'day' => $hijri["d"],
184 'month' => $hijri["m"],
185 'year' => $hijri['y']
186 );
187 }
188 }
189