PluginProbe ʕ •ᴥ•ʔ
WP Popular Posts / 7.4.1
WP Popular Posts v7.4.1
7.4.1 4.0.8 4.0.9 4.1.0 4.1.1 4.1.2 4.2.0 4.2.1 4.2.2 5.0.0 5.0.1 5.0.2 5.1.0 5.2.0 5.2.1 5.2.2 5.2.3 5.2.4 5.3.0 5.3.1 5.3.2 5.3.3 5.3.4 5.3.5 5.3.6 5.4.0 5.4.1 5.4.2 5.5.0 5.5.1 6.0.0 6.0.1 6.0.2 6.0.3 6.0.4 6.0.5 6.1.0 6.1.1 6.1.2 6.1.3 6.1.4 6.2.0 6.2.1 6.3.0 6.3.1 6.3.2 6.3.3 6.3.4 6.4.0 6.4.1 6.4.2 7.0.0 7.0.1 7.1.0 7.2.0 7.3.0 7.3.1 7.3.2 7.3.3 7.3.4 7.3.5 7.3.6 7.3.7 7.3.8 7.4.0 trunk 2.3.7 3.0.0 3.0.1 3.0.2 3.0.3 3.1.0 3.1.1 3.2.0 3.2.1 3.2.2 3.2.3 3.3.0 3.3.1 3.3.2 3.3.3 3.3.4 4.0.0 4.0.1 4.0.10 4.0.11 4.0.12 4.0.13 4.0.2 4.0.3 4.0.5 4.0.6
wordpress-popular-posts / src / Cache.php
wordpress-popular-posts / src Last commit date
Activation 10 months ago Admin 5 days ago Block 5 days ago Compatibility 10 months ago Container 10 months ago Front 5 days ago Rest 10 months ago Shortcode 1 year ago Traits 4 years ago Widget 5 days ago Bootstrap.php 5 years ago Cache.php 10 months ago Helper.php 5 days ago I18N.php 5 years ago Image.php 10 months ago Output.php 5 days ago Query.php 5 days ago Settings.php 5 days ago Themer.php 10 months ago Translate.php 3 years ago Upgrader.php 10 months ago WordPressPopularPosts.php 10 months ago deprecated.php 4 years ago template-tags.php 5 days ago
Cache.php
113 lines
1 <?php
2
3 /**
4 * Helper class to store data in cache for a fixed amount of time.
5 *
6 * @link https://cabrerahector.com
7 * @since 4.1.2
8 *
9 * @package WordPressPopularPosts
10 * @subpackage WordPressPopularPosts/includes
11 */
12
13 /**
14 * Helper class to store data in cache for a fixed amount of time.
15 *
16 * Stores data in cache via WordPress Transients (or any other available
17 * method in the future) for a fixed amount of time to reduce the number
18 * of database calls.
19 *
20 * @package WordPressPopularPosts
21 * @subpackage WordPressPopularPosts/includes
22 * @author Hector Cabrera <me@cabrerahector.com>
23 */
24
25 namespace WordPressPopularPosts;
26
27 class Cache {
28
29 /**
30 * Retrieves cached data.
31 *
32 * @since 4.1.2
33 * @access public
34 * @param string $key The name of the cached data.
35 * @return mixed
36 */
37 public static function get(string $key)
38 {
39 return get_transient($key);
40 }
41
42 /**
43 * Retrieves cached data.
44 *
45 * @since 4.1.2
46 * @access public
47 * @param string $key The name of the cached data.
48 * @param mixed $data The data being stored.
49 */
50 public static function set(string $key = null, $data = [], int $time_value = 1, string $time_unit = 'minute') /** @TODO: starting PHP 8.0 $data can be declared as mixed $data */
51 {
52 if ( ! $key ) {
53 return false;
54 }
55
56 if (
57 false === filter_var($time_value, FILTER_VALIDATE_INT)
58 || $time_value <= 0
59 ) {
60 $time_value = 1;
61 }
62
63 switch( $time_unit ){
64 case 'minute':
65 $time = 60;
66 break;
67 case 'hour':
68 $time = 60 * 60;
69 break;
70 case 'day':
71 $time = 60 * 60 * 24;
72 break;
73 case 'week':
74 $time = 60 * 60 * 24 * 7;
75 break;
76 case 'month':
77 $time = 60 * 60 * 24 * 30;
78 break;
79 case 'year':
80 $time = 60 * 60 * 24 * 365;
81 break;
82 default:
83 $time = 60;
84 break;
85 }
86
87 $expiration = $time * $time_value;
88
89 // Store transient
90 set_transient($key, $data, $expiration);
91
92 // Store transient keys in WPP's transients table for garbage collection
93 global $wpdb;
94
95 $now = Helper::now();
96 $transients_table = "{$wpdb->prefix}popularpoststransients";
97
98 //phpcs:disable WordPress.DB.DirectDatabaseQuery.DirectQuery
99 $wpdb->query(
100 $wpdb->prepare(
101 "INSERT INTO %i (tkey, tkey_date) VALUES (%s, %s) ON DUPLICATE KEY UPDATE tkey_date = %s;",
102 [
103 $transients_table,
104 $key,
105 $now,
106 $now
107 ]
108 )
109 );
110 //phpcs:disable
111 }
112 }
113