PluginProbe ʕ •ᴥ•ʔ
WP Popular Posts / 7.3.5
WP Popular Posts v7.3.5
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 8 months ago Admin 8 months ago Block 8 months ago Compatibility 8 months ago Container 8 months ago Front 8 months ago Rest 8 months ago Shortcode 8 months ago Traits 8 months ago Widget 8 months ago Bootstrap.php 8 months ago Cache.php 8 months ago Helper.php 8 months ago Image.php 8 months ago Output.php 8 months ago Query.php 8 months ago Settings.php 8 months ago Themer.php 8 months ago Translate.php 8 months ago Upgrader.php 8 months ago WordPressPopularPosts.php 8 months ago deprecated.php 8 months ago template-tags.php 8 months 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