PluginProbe ʕ •ᴥ•ʔ
Daily Prayer Time / 2026.05.04
Daily Prayer Time v2026.05.04
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 / StartTime / WorldCities.php
daily-prayer-time-for-mosques / Models / StartTime Last commit date
PrayTime.php 4 years ago WorldCities.php 1 year ago
WorldCities.php
93 lines
1 <?php
2 class WorldCities
3 {
4 private $citiesFile;
5
6 private $dbTable;
7
8 private $tableName;
9
10 public function __construct()
11 {
12 global $wpdb;
13
14 $this->citiesFile = plugin_dir_path(__FILE__) . '../../Assets/world-cities.csv';
15 $this->tableName = $wpdb->prefix . "timetable_cities";
16 $this->dbTable = "`".DB_NAME ."`.`" .$this->tableName."`";
17
18 $this->createTable();
19 }
20
21 public function importCities()
22 {
23 global $wpdb;
24
25 $file = fopen($this->citiesFile, "r");
26 $columns = $row = fgetcsv($file, 10000, ",");
27 $sqlInsert = "INSERT INTO " . $this->dbTable. " (" . implode(',', $columns) . ") VALUES ";
28 $values = "";
29 while (($row = fgetcsv($file, 10000, ",")) !== FALSE) {
30 $city = esc_sql($row[0]); // Assuming the city is the first column
31 $country = esc_sql($row[3]); // Assuming the country is the fourth column
32
33 // Check if the city already exists in the database
34 $exists = $wpdb->get_var($wpdb->prepare("SELECT COUNT(*) FROM " . $this->dbTable . " WHERE city = %s AND country = %s", $city, $country));
35 if ($exists == 0) {
36 $values .= "('". implode("','", $this->getEscapedRow($row)) . "'),";
37 }
38 }
39 $values = rtrim($values, ",");
40 if (!empty($values)) {
41 $sqlInsert .= $values . ';';
42 $wpdb->query($sqlInsert);
43 }
44
45 fclose($file);
46 }
47
48 private function getEscapedRow($row)
49 {
50 $escapedRow = [];
51 foreach ($row as $item) {
52 $escapedRow[] = esc_sql($item);
53
54 }
55 return $escapedRow;
56 }
57
58 private function createTable()
59 {
60 global $wpdb;
61 $charset_collate = $wpdb->get_charset_collate();
62
63 $sql = "CREATE TABLE IF NOT EXISTS " . $this->dbTable. " (
64 id INT NOT NULL AUTO_INCREMENT,
65 city VARCHAR(64) NULL,
66 lat VARCHAR(64) NULL,
67 lng VARCHAR(64) NULL,
68 country VARCHAR(64) NULL,
69 PRIMARY KEY (id),
70 INDEX (lat),
71 INDEX (lng)
72 ) $charset_collate;";
73
74 $wpdb->get_var("SHOW TABLES LIKE '". $this->tableName . "'");
75 if($wpdb->num_rows != 1) {
76 dbDelta( $sql );
77 }
78 }
79
80 public function getCities()
81 {
82 global $wpdb;
83 $sql = "SELECT * FROM " . $this->dbTable . " ORDER BY country, city ASC";
84 return $wpdb->get_results($sql, ARRAY_A);
85 }
86
87 public function getCityById($id)
88 {
89 global $wpdb;
90 $sql = $wpdb->prepare("SELECT city FROM " . $this->dbTable . " WHERE id = %d", $id);
91 return $wpdb->get_var($sql);
92 }
93 }