Changeset 3776120
- Timestamp:
- 10/30/2026 10:31:55 PM (44 hours ago)
- Location:
- jetprayer
- Files:
-
- 14 edited
- 1 copied
-
tags/1.0.4 (copied) (copied from jetprayer/trunk )
-
tags/1.0.4/admin/js/admin.js (modified) (1 diff)
-
tags/1.0.4/admin/partials/admin-page.php (modified) (4 diffs)
-
tags/1.0.4/includes/class-jetprayer-api.php (modified) (1 diff)
-
tags/1.0.4/includes/class-jetprayer-rest.php (modified) (2 diffs)
-
tags/1.0.4/jetprayer.php (modified) (3 diffs)
-
tags/1.0.4/readme.txt (modified) (2 diffs)
-
tags/1.0.4/uninstall.php (modified) (1 diff)
-
trunk/admin/js/admin.js (modified) (1 diff)
-
trunk/admin/partials/admin-page.php (modified) (4 diffs)
-
trunk/includes/class-jetprayer-api.php (modified) (1 diff)
-
trunk/includes/class-jetprayer-rest.php (modified) (2 diffs)
-
trunk/jetprayer.php (modified) (3 diffs)
-
trunk/readme.txt (modified) (2 diffs)
-
trunk/uninstall.php (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
jetprayer/tags/1.0.4/admin/js/admin.js
r3583236 r3776120 929 929 year 930 930 ) 931 : ` ${ monthName } ${ year } içindeki seçilen ${ activeDatesToDelete.length } günü siler.`;931 : `Deletes the selected ${ activeDatesToDelete.length } days inside ${ monthName } ${ year }.`; 932 932 const descYear = i18n.deleteYearDesc 933 933 ? sprintf( i18n.deleteYearDesc, year, city, country ) 934 : ` ${ city }, ${ country } için ${ year } yılına ait tüm verileri (365 günü) temizler.`;934 : `Clears all timings (365 days) for the year ${ year } for ${ city }, ${ country }.`; 935 935 $( '#jp-delete-selected-desc' ).text( descSelected ); 936 936 $( '#jp-delete-year-desc' ).text( descYear ); -
jetprayer/tags/1.0.4/admin/partials/admin-page.php
r3584599 r3776120 986 986 <h2><?php esc_html_e( 'Unlock the Full Power of JetPrayer Pro', 'jetprayer' ); ?></h2> 987 987 <p> 988 <?php esc_html_e( 'Upgrade to the Pro edition today to unlock advanced location detection, complete visual style controls, bulk data maintenance tools, custom prayer labels, and direct priority emailsupport.', 'jetprayer' ); ?>988 <?php esc_html_e( 'Upgrade to the Pro edition today to unlock advanced location detection, complete visual style controls, bulk data maintenance tools, custom prayer labels, and priority support.', 'jetprayer' ); ?> 989 989 </p> 990 <a href="https:// jetreader.lemonsqueezy.com/" target="_blank" class="jp-pro-cta-btn">990 <a href="https://rikny.lemonsqueezy.com/checkout/buy/f89fbc67-21c7-44fc-ad60-7b1d4df95b2b" target="_blank" class="jp-pro-cta-btn"> 991 991 <span class="dashicons dashicons-cart jp-vertical-align-middle"></span> 992 992 <?php esc_html_e( 'Upgrade to Pro Now', 'jetprayer' ); ?> … … 1058 1058 <h3><?php esc_html_e( 'Premium Customer Support', 'jetprayer' ); ?></h3> 1059 1059 <p> 1060 <?php esc_html_e( 'Receive direct priority emailsupport from the plugin developers to help with any layout customization questions, technical queries, or configuration issues.', 'jetprayer' ); ?>1060 <?php esc_html_e( 'Receive priority support from the plugin developers to help with any layout customization questions, technical queries, or configuration issues.', 'jetprayer' ); ?> 1061 1061 </p> 1062 1062 </div> … … 1109 1109 <td class="jp-pro-feature-col"><?php esc_html_e( 'Technical Support', 'jetprayer' ); ?></td> 1110 1110 <td class="jp-pro-free-col"><?php esc_html_e( 'Community forums', 'jetprayer' ); ?></td> 1111 <td class="jp-pro-val-col"><span class="jp-pro-check-icon">✔</span> <?php esc_html_e( ' Direct priority emailsupport', 'jetprayer' ); ?></td>1111 <td class="jp-pro-val-col"><span class="jp-pro-check-icon">✔</span> <?php esc_html_e( 'Priority support', 'jetprayer' ); ?></td> 1112 1112 </tr> 1113 1113 </tbody> … … 1118 1118 <div class="jp-pro-footer-cta"> 1119 1119 <h3><?php esc_html_e( 'Ready to Supercharge Your Website?', 'jetprayer' ); ?></h3> 1120 <p><?php esc_html_e( ' Get lifetime access to JetPrayer Pro with all advanced features and direct premiumsupport.', 'jetprayer' ); ?></p>1121 <a href="https:// jetreader.lemonsqueezy.com/" target="_blank" class="jp-pro-footer-btn">1120 <p><?php esc_html_e( 'Subscribe monthly or yearly to unlock every JetPrayer Pro feature, new releases and priority support.', 'jetprayer' ); ?></p> 1121 <a href="https://rikny.lemonsqueezy.com/checkout/buy/f89fbc67-21c7-44fc-ad60-7b1d4df95b2b" target="_blank" class="jp-pro-footer-btn"> 1122 1122 <span class="dashicons dashicons-star-filled jp-vertical-align-middle" style="color: #f59e0b;"></span> 1123 1123 <?php esc_html_e( 'Get JetPrayer Pro Now', 'jetprayer' ); ?> -
jetprayer/tags/1.0.4/includes/class-jetprayer-api.php
r3582982 r3776120 64 64 $method = isset( $settings['method'] ) && '' !== $settings['method'] ? intval( $settings['method'] ) : null; 65 65 if ( null === $method ) { 66 return new WP_Error( 'invalid_method', __( ' Lütfen geçerli bir hesaplama yöntemi seçin. /Please select a valid calculation method.', 'jetprayer' ) );66 return new WP_Error( 'invalid_method', __( 'Please select a valid calculation method.', 'jetprayer' ) ); 67 67 } 68 68 $school = isset( $settings['school'] ) ? intval( $settings['school'] ) : 0; -
jetprayer/tags/1.0.4/includes/class-jetprayer-rest.php
r3583236 r3776120 329 329 return new WP_REST_Response( array( 330 330 'success' => false, 331 'message' => __( ' Senkronizasyon limiti aşıldı. Lütfen tekrar senkronize etmeden önce 1 dakika bekleyin. /Rate limit exceeded. Please wait 1 minute before syncing again.', 'jetprayer' ),331 'message' => __( 'Rate limit exceeded. Please wait 1 minute before syncing again.', 'jetprayer' ), 332 332 ), 429 ); 333 333 } … … 651 651 while ( true ) { 652 652 // phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching 653 $rows = $wpdb->get_results( $wpdb->prepare( "SELECT * FROM {$table_name} LIMIT %d OFFSET %d", $chunk_size, $offset ), ARRAY_A );653 $rows = $wpdb->get_results( $wpdb->prepare( "SELECT * FROM {$table_name} ORDER BY id ASC LIMIT %d OFFSET %d", $chunk_size, $offset ), ARRAY_A ); 654 654 if ( empty( $rows ) ) { 655 655 break; -
jetprayer/tags/1.0.4/jetprayer.php
r3592293 r3776120 4 4 * Plugin URI: https://rikny.com 5 5 * Description: A performance-optimized, secure, and robust WordPress plugin that displays Islamic prayer times using local caching to avoid external API calls. Features gorgeous grids, sliders, tickers, and modals. 6 * Version: 1.0. 36 * Version: 1.0.4 7 7 * Author: Mehdi Turan 8 8 * Author URI: https://www.linkedin.com/in/mehdituran/ … … 25 25 // file was already include()'d in this request. We also catch the edge case 26 26 // where Pro is listed in active_plugins but its file hasn't been loaded yet. 27 if ( class_exists( 'JetPrayer_License' ) || in_array( 'jetprayer-pro/jetprayer-pro.php', (array) get_option( 'active_plugins', array() ), true ) ) { 27 // Pro is matched by its main file name rather than a fixed folder, because a 28 // zip uploaded under another name (e.g. jetprayer-pro_v1.0.1/) installs into 29 // a folder named after the zip. 30 $jetprayer_pro_basename = ''; 31 foreach ( (array) get_option( 'active_plugins', array() ) as $jetprayer_active_plugin ) { 32 if ( 'jetprayer-pro.php' === basename( $jetprayer_active_plugin ) ) { 33 $jetprayer_pro_basename = $jetprayer_active_plugin; 34 break; 35 } 36 } 37 if ( class_exists( 'JetPrayer_License' ) || '' !== $jetprayer_pro_basename ) { 28 38 require_once ABSPATH . 'wp-admin/includes/plugin.php'; 29 if ( is_plugin_active( 'jetprayer-pro/jetprayer-pro.php') ) {39 if ( '' !== $jetprayer_pro_basename && is_plugin_active( $jetprayer_pro_basename ) ) { 30 40 deactivate_plugins( plugin_basename( __FILE__ ) ); 31 41 set_transient( 'jetprayer_free_activation_blocked_pro_active', true, 30 ); … … 38 48 39 49 // Define plugin constants 40 define( 'JETPRAYER_VERSION', '1.0. 3' );50 define( 'JETPRAYER_VERSION', '1.0.4' ); 41 51 define( 'JETPRAYER_PATH', plugin_dir_path( __FILE__ ) ); 42 52 define( 'JETPRAYER_URL', plugin_dir_url( __FILE__ ) ); -
jetprayer/tags/1.0.4/readme.txt
r3592293 r3776120 4 4 Requires at least: 6.2 5 5 Tested up to: 7.0 6 Stable tag: 1.0. 36 Stable tag: 1.0.4 7 7 Requires PHP: 7.4 8 8 License: GPLv2 or later … … 100 100 == Changelog == 101 101 102 = 1.0.4 = 103 * Fixed the "Upgrade to Pro" buttons, which pointed to a store page that no longer exists. 104 * Corrected the Pro upgrade text: Pro is a monthly or yearly subscription, not lifetime access. 105 * JetPrayer Pro is now detected by its main file even when it is installed in a differently named folder, so the free/Pro coexistence and uninstall data-safety guards always work. 106 * Full backups now export rows in a stable order, so no rows are skipped or duplicated. 107 * Remaining Turkish admin messages are now in English. 108 102 109 = 1.0.3 = 103 110 * Fixed critical compatibility bug: activating JetPrayer (free) while JetPrayer Pro is active no longer causes a PHP fatal error — the free version now auto-deactivates itself and shows a clear admin notice via Pro. -
jetprayer/tags/1.0.4/uninstall.php
r3592293 r3776120 21 21 // is not active; otherwise leave the DB alone — the folder is removed by 22 22 // WordPress regardless, which is all that is needed to hide it from the list. 23 $jetprayer_pro_active = in_array( 24 'jetprayer-pro/jetprayer-pro.php', 25 (array) get_option( 'active_plugins', array() ), 26 true 27 ); 23 // Matched by main file name, not folder: Pro may live in a folder named 24 // after its zip (e.g. jetprayer-pro_v1.0.1/). 25 $jetprayer_pro_active = false; 26 foreach ( (array) get_option( 'active_plugins', array() ) as $jetprayer_active_plugin ) { 27 if ( 'jetprayer-pro.php' === basename( $jetprayer_active_plugin ) ) { 28 $jetprayer_pro_active = true; 29 break; 30 } 31 } 28 32 29 33 $jetprayer_options = array( -
jetprayer/trunk/admin/js/admin.js
r3583236 r3776120 929 929 year 930 930 ) 931 : ` ${ monthName } ${ year } içindeki seçilen ${ activeDatesToDelete.length } günü siler.`;931 : `Deletes the selected ${ activeDatesToDelete.length } days inside ${ monthName } ${ year }.`; 932 932 const descYear = i18n.deleteYearDesc 933 933 ? sprintf( i18n.deleteYearDesc, year, city, country ) 934 : ` ${ city }, ${ country } için ${ year } yılına ait tüm verileri (365 günü) temizler.`;934 : `Clears all timings (365 days) for the year ${ year } for ${ city }, ${ country }.`; 935 935 $( '#jp-delete-selected-desc' ).text( descSelected ); 936 936 $( '#jp-delete-year-desc' ).text( descYear ); -
jetprayer/trunk/admin/partials/admin-page.php
r3584599 r3776120 986 986 <h2><?php esc_html_e( 'Unlock the Full Power of JetPrayer Pro', 'jetprayer' ); ?></h2> 987 987 <p> 988 <?php esc_html_e( 'Upgrade to the Pro edition today to unlock advanced location detection, complete visual style controls, bulk data maintenance tools, custom prayer labels, and direct priority emailsupport.', 'jetprayer' ); ?>988 <?php esc_html_e( 'Upgrade to the Pro edition today to unlock advanced location detection, complete visual style controls, bulk data maintenance tools, custom prayer labels, and priority support.', 'jetprayer' ); ?> 989 989 </p> 990 <a href="https:// jetreader.lemonsqueezy.com/" target="_blank" class="jp-pro-cta-btn">990 <a href="https://rikny.lemonsqueezy.com/checkout/buy/f89fbc67-21c7-44fc-ad60-7b1d4df95b2b" target="_blank" class="jp-pro-cta-btn"> 991 991 <span class="dashicons dashicons-cart jp-vertical-align-middle"></span> 992 992 <?php esc_html_e( 'Upgrade to Pro Now', 'jetprayer' ); ?> … … 1058 1058 <h3><?php esc_html_e( 'Premium Customer Support', 'jetprayer' ); ?></h3> 1059 1059 <p> 1060 <?php esc_html_e( 'Receive direct priority emailsupport from the plugin developers to help with any layout customization questions, technical queries, or configuration issues.', 'jetprayer' ); ?>1060 <?php esc_html_e( 'Receive priority support from the plugin developers to help with any layout customization questions, technical queries, or configuration issues.', 'jetprayer' ); ?> 1061 1061 </p> 1062 1062 </div> … … 1109 1109 <td class="jp-pro-feature-col"><?php esc_html_e( 'Technical Support', 'jetprayer' ); ?></td> 1110 1110 <td class="jp-pro-free-col"><?php esc_html_e( 'Community forums', 'jetprayer' ); ?></td> 1111 <td class="jp-pro-val-col"><span class="jp-pro-check-icon">✔</span> <?php esc_html_e( ' Direct priority emailsupport', 'jetprayer' ); ?></td>1111 <td class="jp-pro-val-col"><span class="jp-pro-check-icon">✔</span> <?php esc_html_e( 'Priority support', 'jetprayer' ); ?></td> 1112 1112 </tr> 1113 1113 </tbody> … … 1118 1118 <div class="jp-pro-footer-cta"> 1119 1119 <h3><?php esc_html_e( 'Ready to Supercharge Your Website?', 'jetprayer' ); ?></h3> 1120 <p><?php esc_html_e( ' Get lifetime access to JetPrayer Pro with all advanced features and direct premiumsupport.', 'jetprayer' ); ?></p>1121 <a href="https:// jetreader.lemonsqueezy.com/" target="_blank" class="jp-pro-footer-btn">1120 <p><?php esc_html_e( 'Subscribe monthly or yearly to unlock every JetPrayer Pro feature, new releases and priority support.', 'jetprayer' ); ?></p> 1121 <a href="https://rikny.lemonsqueezy.com/checkout/buy/f89fbc67-21c7-44fc-ad60-7b1d4df95b2b" target="_blank" class="jp-pro-footer-btn"> 1122 1122 <span class="dashicons dashicons-star-filled jp-vertical-align-middle" style="color: #f59e0b;"></span> 1123 1123 <?php esc_html_e( 'Get JetPrayer Pro Now', 'jetprayer' ); ?> -
jetprayer/trunk/includes/class-jetprayer-api.php
r3582982 r3776120 64 64 $method = isset( $settings['method'] ) && '' !== $settings['method'] ? intval( $settings['method'] ) : null; 65 65 if ( null === $method ) { 66 return new WP_Error( 'invalid_method', __( ' Lütfen geçerli bir hesaplama yöntemi seçin. /Please select a valid calculation method.', 'jetprayer' ) );66 return new WP_Error( 'invalid_method', __( 'Please select a valid calculation method.', 'jetprayer' ) ); 67 67 } 68 68 $school = isset( $settings['school'] ) ? intval( $settings['school'] ) : 0; -
jetprayer/trunk/includes/class-jetprayer-rest.php
r3583236 r3776120 329 329 return new WP_REST_Response( array( 330 330 'success' => false, 331 'message' => __( ' Senkronizasyon limiti aşıldı. Lütfen tekrar senkronize etmeden önce 1 dakika bekleyin. /Rate limit exceeded. Please wait 1 minute before syncing again.', 'jetprayer' ),331 'message' => __( 'Rate limit exceeded. Please wait 1 minute before syncing again.', 'jetprayer' ), 332 332 ), 429 ); 333 333 } … … 651 651 while ( true ) { 652 652 // phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching 653 $rows = $wpdb->get_results( $wpdb->prepare( "SELECT * FROM {$table_name} LIMIT %d OFFSET %d", $chunk_size, $offset ), ARRAY_A );653 $rows = $wpdb->get_results( $wpdb->prepare( "SELECT * FROM {$table_name} ORDER BY id ASC LIMIT %d OFFSET %d", $chunk_size, $offset ), ARRAY_A ); 654 654 if ( empty( $rows ) ) { 655 655 break; -
jetprayer/trunk/jetprayer.php
r3592293 r3776120 4 4 * Plugin URI: https://rikny.com 5 5 * Description: A performance-optimized, secure, and robust WordPress plugin that displays Islamic prayer times using local caching to avoid external API calls. Features gorgeous grids, sliders, tickers, and modals. 6 * Version: 1.0. 36 * Version: 1.0.4 7 7 * Author: Mehdi Turan 8 8 * Author URI: https://www.linkedin.com/in/mehdituran/ … … 25 25 // file was already include()'d in this request. We also catch the edge case 26 26 // where Pro is listed in active_plugins but its file hasn't been loaded yet. 27 if ( class_exists( 'JetPrayer_License' ) || in_array( 'jetprayer-pro/jetprayer-pro.php', (array) get_option( 'active_plugins', array() ), true ) ) { 27 // Pro is matched by its main file name rather than a fixed folder, because a 28 // zip uploaded under another name (e.g. jetprayer-pro_v1.0.1/) installs into 29 // a folder named after the zip. 30 $jetprayer_pro_basename = ''; 31 foreach ( (array) get_option( 'active_plugins', array() ) as $jetprayer_active_plugin ) { 32 if ( 'jetprayer-pro.php' === basename( $jetprayer_active_plugin ) ) { 33 $jetprayer_pro_basename = $jetprayer_active_plugin; 34 break; 35 } 36 } 37 if ( class_exists( 'JetPrayer_License' ) || '' !== $jetprayer_pro_basename ) { 28 38 require_once ABSPATH . 'wp-admin/includes/plugin.php'; 29 if ( is_plugin_active( 'jetprayer-pro/jetprayer-pro.php') ) {39 if ( '' !== $jetprayer_pro_basename && is_plugin_active( $jetprayer_pro_basename ) ) { 30 40 deactivate_plugins( plugin_basename( __FILE__ ) ); 31 41 set_transient( 'jetprayer_free_activation_blocked_pro_active', true, 30 ); … … 38 48 39 49 // Define plugin constants 40 define( 'JETPRAYER_VERSION', '1.0. 3' );50 define( 'JETPRAYER_VERSION', '1.0.4' ); 41 51 define( 'JETPRAYER_PATH', plugin_dir_path( __FILE__ ) ); 42 52 define( 'JETPRAYER_URL', plugin_dir_url( __FILE__ ) ); -
jetprayer/trunk/readme.txt
r3592293 r3776120 4 4 Requires at least: 6.2 5 5 Tested up to: 7.0 6 Stable tag: 1.0. 36 Stable tag: 1.0.4 7 7 Requires PHP: 7.4 8 8 License: GPLv2 or later … … 100 100 == Changelog == 101 101 102 = 1.0.4 = 103 * Fixed the "Upgrade to Pro" buttons, which pointed to a store page that no longer exists. 104 * Corrected the Pro upgrade text: Pro is a monthly or yearly subscription, not lifetime access. 105 * JetPrayer Pro is now detected by its main file even when it is installed in a differently named folder, so the free/Pro coexistence and uninstall data-safety guards always work. 106 * Full backups now export rows in a stable order, so no rows are skipped or duplicated. 107 * Remaining Turkish admin messages are now in English. 108 102 109 = 1.0.3 = 103 110 * Fixed critical compatibility bug: activating JetPrayer (free) while JetPrayer Pro is active no longer causes a PHP fatal error — the free version now auto-deactivates itself and shows a clear admin notice via Pro. -
jetprayer/trunk/uninstall.php
r3592293 r3776120 21 21 // is not active; otherwise leave the DB alone — the folder is removed by 22 22 // WordPress regardless, which is all that is needed to hide it from the list. 23 $jetprayer_pro_active = in_array( 24 'jetprayer-pro/jetprayer-pro.php', 25 (array) get_option( 'active_plugins', array() ), 26 true 27 ); 23 // Matched by main file name, not folder: Pro may live in a folder named 24 // after its zip (e.g. jetprayer-pro_v1.0.1/). 25 $jetprayer_pro_active = false; 26 foreach ( (array) get_option( 'active_plugins', array() ) as $jetprayer_active_plugin ) { 27 if ( 'jetprayer-pro.php' === basename( $jetprayer_active_plugin ) ) { 28 $jetprayer_pro_active = true; 29 break; 30 } 31 } 28 32 29 33 $jetprayer_options = array(
Note:
See TracChangeset
for help on using the changeset viewer.
![(please configure the [header_logo] section in trac.ini)](/chrome/site/your_project_logo.png)