PluginProbe ʕ •ᴥ•ʔ
Daily Prayer Time / 2019.5.8
Daily Prayer Time v2019.5.8
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 / db.php
daily-prayer-time-for-mosques / Models Last commit date
Processors 7 years ago DSTemplateLoader.php 7 years ago DailyShortCode.php 7 years ago DailyTimeTable.php 8 years ago HijriDate.php 7 years ago Init.php 7 years ago MonthlyShortCode.php 7 years ago MonthlyTimeTable.php 10 years ago UpdateStyles.php 7 years ago Validator.php 7 years ago db.php 7 years ago dptWidget.php 7 years ago
db.php
229 lines
1 <?php
2
3 require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
4
5 class DatabaseConnection
6 {
7 /** @var string */
8 private $dbTable = "";
9
10 /** @var string */
11 private $tableName = "";
12
13 public function __construct()
14 {
15 global $wpdb;
16
17 $this->tableName = $wpdb->prefix . "timetable";
18 $this->dbTable = "`".DB_NAME ."`.`" .$this->tableName."`";
19
20 $this->createTableIfNotExist();
21 }
22
23 /**
24 * @return array
25 */
26 public function getPrayerTimeForToday()
27 {
28 global $wpdb;
29
30 $today = user_current_time( 'Y-m-d' );
31 $sql = "SELECT * FROM $this->dbTable WHERE d_date = '$today' LIMIT 1";
32 $result = $wpdb->get_row($sql, ARRAY_A);
33 $result['jamah_changes'] = $this->getJamahChanges();
34
35 return $result;
36 }
37
38 /**
39 * @return array
40 */
41 public function getFajrJamahForTomorrow()
42 {
43 global $wpdb;
44
45 $sql = "SELECT fajr_jamah FROM $this->dbTable WHERE d_date = CURDATE() + INTERVAL 1 DAY;";
46 $result = $wpdb->get_row($sql, ARRAY_A);
47
48 return $result['fajr_jamah'];
49 }
50
51 /**
52 * @param int $min
53 * @return array
54 */
55 public function getJamahChanges($min=null)
56 {
57 $xmin = get_option( 'jamah_changes' );
58 $xmin = empty($min) ? $xmin : $min;
59
60 if ( $xmin < 1) {
61 return;
62 }
63
64 global $wpdb;
65
66 $sql = "SELECT
67 abs(TIME_TO_SEC(TIMEDIFF(today.fajr_jamah, tomorrow.fajr_jamah)) / 60) as fajr_jamah,
68 abs(TIME_TO_SEC(TIMEDIFF(today.zuhr_jamah, tomorrow.zuhr_jamah)) /60) as zuhr_jamah,
69 abs(TIME_TO_SEC(TIMEDIFF(today.asr_jamah, tomorrow.asr_jamah)) /60) as asr_jamah,
70 abs(TIME_TO_SEC(TIMEDIFF(today.maghrib_jamah, tomorrow.maghrib_jamah)) /60) as maghrib_jamah,
71 abs(TIME_TO_SEC(TIMEDIFF(today.isha_jamah, tomorrow.isha_jamah)) /60) as isha_jamah
72 FROM $this->dbTable today
73 INNER JOIN $this->dbTable tomorrow
74 ON today.d_date = tomorrow.d_date + INTERVAL 1 DAY
75 WHERE today.d_date = CURDATE() + INTERVAL 1 DAY;";
76
77 $result = $wpdb->get_row($sql, ARRAY_A);
78
79 if ( empty($result) ) {
80 return null;
81 }
82
83 // get jamah name that has changes more than x min
84 $jamahNamesArray = array();
85 foreach($result as $key=>$time) {
86 if ((int)$time >= (int)$xmin) {
87 $diff = (int)$time - (int)$xmin;
88 $jamahNamesArray[$key] = $diff;
89 }
90 }
91
92 $jamahNamesString = implode(",", array_keys($jamahNamesArray));
93
94 if (empty($jamahNamesString)) {
95 return null;
96 }
97
98 $sql = "SELECT " . $jamahNamesString . "
99 FROM $this->dbTable
100 WHERE d_date = CURDATE() + INTERVAL 1 DAY;";
101
102 $result = $wpdb->get_row($sql, ARRAY_A);
103
104 return $result;
105 }
106
107 /**
108 * @param int $monthNumber
109 * @return array
110 */
111 public function getPrayerTimeForMonth($monthNumber)
112 {
113 global $wpdb;
114
115 $sql = "SELECT * FROM $this->dbTable WHERE month(d_date) = $monthNumber AND YEAR(d_date) = YEAR(CURDATE()) ORDER BY d_date ASC";
116 $result = $wpdb->get_results($sql, ARRAY_A);
117
118 return $result;
119 }
120
121 /**
122 * @return array
123 */
124 public function getPrayerTimeForRamadan()
125 {
126 global $wpdb;
127
128 $sql = "SELECT * FROM $this->dbTable WHERE is_ramadan = 1 AND YEAR(d_date) = YEAR(CURDATE()) ORDER BY d_date ASC";
129 $result = $wpdb->get_results($sql, ARRAY_A);
130
131 return $result;
132 }
133
134 /**
135 * @param array $row
136 * @return int|bool
137 */
138 public function insertRow($row)
139 {
140 global $wpdb;
141
142 $createIfNotUpdate = "INSERT INTO " .$this->dbTable. " VALUES (";
143
144 foreach ($row as $key => $value) {
145 $createIfNotUpdate .= "'" .$value. "',";
146 }
147 $createIfNotUpdate = rtrim($createIfNotUpdate, ', ');
148
149 $createIfNotUpdate .= " ) ON DUPLICATE KEY UPDATE ";
150 foreach ($row as $key => $value) {
151 $createIfNotUpdate .= $key. "='" .$value. "',";
152 }
153 $createIfNotUpdate = rtrim($createIfNotUpdate, ', ');
154 $createIfNotUpdate .= ';';
155
156 return $wpdb->query($createIfNotUpdate);
157 }
158
159 private function createTableIfNotExist()
160 {
161 global $wpdb;
162
163 $charset_collate = $wpdb->get_charset_collate();
164
165 $sql = "CREATE TABLE " . $this->dbTable. "(
166 d_date date NOT NULL,
167 fajr_begins time DEFAULT '00:00',
168 fajr_jamah time DEFAULT '00:00',
169 sunrise time DEFAULT '00:00',
170 zuhr_begins time DEFAULT '00:00',
171 zuhr_jamah time DEFAULT '00:00',
172 asr_mithl_1 time DEFAULT '00:00',
173 asr_mithl_2 time DEFAULT '00:00',
174 asr_jamah time DEFAULT '00:00',
175 maghrib_begins time DEFAULT '00:00',
176 maghrib_jamah time DEFAULT '00:00',
177 isha_begins time DEFAULT '00:00',
178 isha_jamah time DEFAULT '00:00',
179 is_ramadan SMALLINT DEFAULT NULL,
180 hijri_date VARCHAR(256) DEFAULT NULL,
181 PRIMARY KEY (d_date)
182 ) $charset_collate;";
183
184 $wpdb->get_var("SHOW TABLES LIKE '". $this->tableName . "'");
185 if($wpdb->num_rows != 1) {
186 dbDelta( $sql );
187 }
188 }
189
190 public function updateRow($monthData)
191 {
192 global $wpdb;
193
194 foreach ($monthData as $day) {
195 $wpdb->update(
196 $this->tableName,
197 array(
198 'fajr_jamah' => $day['fajr_jamah'],
199 'zuhr_jamah' => $day['zuhr_jamah'],
200 'asr_jamah' => $day['asr_jamah'],
201 'maghrib_jamah' => $day['maghrib_jamah'],
202 'isha_jamah' => $day['isha_jamah']
203 ),
204 array('d_date' => $day['d_date'])
205 );
206 }
207 }
208
209 public function getRows()
210 {
211 global $wpdb;
212 $sql = "SELECT * FROM " . $this->dbTable;
213 $result = $wpdb->get_results($sql, ARRAY_A);
214 return $result;
215 }
216 }
217
218
219 function user_current_time($format="")
220 {
221 $format = $format ? $format : 'mysql';
222 $result = current_time($format);
223 if (empty($result)) {
224 $result = date( $format, time() + ( get_option( 'gmt_offset' ) * 60 ) );
225 }
226
227 return $result;
228 }
229