OwlCyberSecurity - MANAGER
Edit File: Custom_Dimensions_Data_Available.php
<?php /** * Class Google\Site_Kit\Modules\Analytics_4\Custom_Dimensions_Data_Available * * @package Google\Site_Kit\Modules\Analytics_4 * @copyright 2023 Google LLC * @license https://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 * @link https://sitekit.withgoogle.com */ namespace Google\Site_Kit\Modules\Analytics_4; use Google\Site_Kit\Core\Storage\Transients; /** * Class for updating Analytics 4 custom dimension data availability state. * * @since 1.113.0 * @access private * @ignore */ class Custom_Dimensions_Data_Available { /** * List of valid custom dimension slugs. * * @since 1.113.0 * @var array */ const CUSTOM_DIMENSION_SLUGS = array( 'googlesitekit_post_date', 'googlesitekit_post_author', 'googlesitekit_post_categories', 'googlesitekit_post_type', ); /** * Transients instance. * * @since 1.113.0 * @var Transients */ protected $transients; /** * Constructor. * * @since 1.113.0 * * @param Transients $transients Transients instance. */ public function __construct( Transients $transients ) { $this->transients = $transients; } /** * Gets data available transient name for the custom dimension. * * @since 1.113.0 * * @param string $custom_dimension Custom dimension slug. * @return string Data available transient name. */ protected function get_data_available_transient_name( $custom_dimension ) { return "googlesitekit_custom_dimension_{$custom_dimension}_data_available"; } /** * Gets data availability for all custom dimensions. * * @since 1.113.0 * * @return array Associative array of custom dimension names and their data availability state. */ public function get_data_availability() { return array_reduce( self::CUSTOM_DIMENSION_SLUGS, function ( $data_availability, $custom_dimension ) { $data_availability[ $custom_dimension ] = $this->is_data_available( $custom_dimension ); return $data_availability; }, array() ); } /** * Checks whether the data is available for the custom dimension. * * @since 1.113.0 * * @param string $custom_dimension Custom dimension slug. * @return bool True if data is available, false otherwise. */ protected function is_data_available( $custom_dimension ) { return (bool) $this->transients->get( $this->get_data_available_transient_name( $custom_dimension ) ); } /** * Sets the data available state for the custom dimension. * * @since 1.113.0 * * @param string $custom_dimension Custom dimension slug. * @return bool True on success, false otherwise. */ public function set_data_available( $custom_dimension ) { return $this->transients->set( $this->get_data_available_transient_name( $custom_dimension ), true ); } /** * Resets the data available state for all custom dimensions. * * @since 1.113.0 * @since 1.114.0 Added optional $custom_dimensions parameter. * * @param array $custom_dimensions Optional. List of custom dimension slugs to reset. */ public function reset_data_available( $custom_dimensions = self::CUSTOM_DIMENSION_SLUGS ) { foreach ( $custom_dimensions as $custom_dimension ) { $this->transients->delete( $this->get_data_available_transient_name( $custom_dimension ) ); } } /** * Checks whether the custom dimension is valid. * * @since 1.113.0 * * @param string $custom_dimension Custom dimension slug. * @return bool True if valid, false otherwise. */ public function is_valid_custom_dimension( $custom_dimension ) { return in_array( $custom_dimension, self::CUSTOM_DIMENSION_SLUGS, true ); } }