PluginProbe ʕ •ᴥ•ʔ
Presto Player / 4.3.1
Presto Player v4.3.1
4.3.1 4.3.0 4.2.4 4.2.3 4.2.2 4.2.0 4.2.1 trunk 1.10.0 1.10.1 1.10.2 1.11.0 1.12.0 1.13.0 1.14.0 1.14.1 1.5.10 1.5.11 1.5.12 1.5.13 1.5.14 1.5.15 1.5.5 1.5.6 1.5.7 1.5.8 1.5.9 1.6.0 1.6.1 1.6.10 1.6.11 1.6.12 1.6.13 1.6.2 1.6.3 1.6.4 1.6.5 1.6.6 1.6.7 1.6.8 1.6.9 1.7.0 1.7.1 1.7.2 1.8.0 1.8.1 1.8.2 1.8.3 1.8.4 1.8.5 1.8.6 1.9.0 1.9.1 1.9.10 1.9.11 1.9.12 1.9.13 1.9.14 1.9.2 1.9.3 1.9.4 1.9.5 1.9.6 1.9.7 1.9.8 1.9.9 2.0.0 2.0.1 2.0.10 2.0.11 2.0.12 2.0.13 2.0.14 2.0.15 2.0.16 2.0.2 2.0.3 2.0.4 2.0.5 2.0.6 2.0.7 2.0.8 2.0.9 2.1.0 2.2.0 2.2.1 2.2.2 2.2.3 2.2.3-beta1 2.3.0 2.3.1 2.3.2 2.3.3 3.0.0 3.0.0-beta1 3.0.1 3.0.2 3.0.3 3.0.4 3.0.5 3.0.6 3.0.7 3.0.8 3.1.0 3.1.1 3.1.2 3.1.3 4.0.0 4.0.1 4.0.2 4.0.3 4.0.4 4.0.5 4.0.6 4.0.7 4.0.8 4.1.0 4.1.1 4.1.2 4.1.3 4.1.4
presto-player / inc / Support / DynamicData.php
presto-player / inc / Support Last commit date
Block.php 1 month ago BlockFinder.php 1 year ago DynamicData.php 3 weeks ago HasOneRelationship.php 1 year ago Integration.php 1 year ago Utility.php 3 weeks ago
DynamicData.php
83 lines
1 <?php
2 /**
3 * Dynamic data token replacement helper.
4 *
5 * @package PrestoPlayer
6 */
7
8 namespace PrestoPlayer\Support;
9
10 /**
11 * Replaces dynamic data tokens (user, site, IP) with their actual values.
12 */
13 class DynamicData {
14
15 /**
16 * Get values to replace.
17 *
18 * @return array
19 */
20 public static function getValues() {
21 $current_user = wp_get_current_user();
22
23 return apply_filters(
24 'presto-player/dynamic-data',
25 array(
26 '{user.user_login}' => $current_user->user_login ?? '',
27 '{user.user_nicename}' => $current_user->user_nicename ?? '',
28 '{user.user_email}' => $current_user->user_email ?? '',
29 '{user.user_url}' => $current_user->user_url ?? '',
30 '{user.user_registered}' => $current_user->user_registered ?? '',
31 '{user.display_name}' => $current_user->display_name ?? '',
32 '{site.url}' => get_home_url(),
33 '{site.name}' => get_bloginfo(),
34 '{ip_address}' => self::getIP(),
35 )
36 );
37 }
38
39 /**
40 * Replace dynamic data with actual data.
41 *
42 * @param array $items Array of items, each containing the given key.
43 * @param string $key Key within each item whose value should be replaced.
44 * @return array
45 */
46 public static function replaceItems( $items, $key ) {
47 foreach ( $items as $k => $item ) {
48 $items[ $k ][ $key ] = self::replaceText( $item[ $key ] );
49 }
50
51 return $items;
52 }
53
54 /**
55 * Replace value in string with dynamic data.
56 *
57 * @param string $text String with dynamic data.
58 * @return string
59 */
60 public static function replaceText( $text ) {
61 return wp_kses_post( strtr( $text, self::getValues() ) );
62 }
63
64 /**
65 * Get the person's IP.
66 *
67 * @return string
68 */
69 public static function getIP() {
70 foreach ( array( 'HTTP_CF_CONNECTING_IP', 'HTTP_CLIENT_IP', 'HTTP_X_FORWARDED_FOR', 'HTTP_X_FORWARDED', 'HTTP_X_CLUSTER_CLIENT_IP', 'HTTP_FORWARDED_FOR', 'HTTP_FORWARDED', 'REMOTE_ADDR' ) as $key ) {
71 if ( array_key_exists( $key, $_SERVER ) === true ) {
72 foreach ( explode( ',', sanitize_text_field( wp_unslash( $_SERVER[ $key ] ) ) ) as $ip ) {
73 $ip = trim( $ip ); // Just to be safe.
74
75 if ( filter_var( $ip, FILTER_VALIDATE_IP, FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE ) !== false ) {
76 return $ip;
77 }
78 }
79 }
80 }
81 }
82 }
83