Files
roi-theme/wp-content/plugins/advanced-ads/includes/utilities/class-testing.php
root a22573bf0b Commit inicial - WordPress Análisis de Precios Unitarios
- WordPress core y plugins
- Tema Twenty Twenty-Four configurado
- Plugin allow-unfiltered-html.php simplificado
- .gitignore configurado para excluir wp-config.php y uploads

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-03 21:04:30 -06:00

97 lines
2.3 KiB
PHP
Executable File

<?php
/**
* The class is responsible to allow split testing websites based on their URL.
*
* @package AdvancedAds
* @author Advanced Ads <info@wpadvancedads.com>
* @since 1.50.0
*/
namespace AdvancedAds\Utilities;
use Advanced_Ads;
use AdvancedAds\Framework\Utilities\Params;
defined( 'ABSPATH' ) || exit;
/**
* Utilities Testing.
*/
class Testing {
/**
* Show stuff to new users only.
*
* @param integer $timestamp time after which to show whatever.
* @param string $group optional group.
*
* @return bool true if user enabled after given timestamp.
*/
public static function show_to_new_users( $timestamp, $group = 'a' ) {
return self::get_group_by_url( null, $group ) && self::is_new_user( $timestamp );
}
/**
* Check if user started after a given date
*
* @param integer $timestamp time stamp.
*
* @return bool true if user is added after timestamp.
*/
public static function is_new_user( $timestamp = 0 ) {
// Allow admins to see version for new users in any case.
if ( Conditional::user_can( 'advanced_ads_manage_options' ) && Params::request( 'advads-ignore-timestamp' ) ) {
return true;
}
$timestamp = absint( $timestamp );
$options = Advanced_Ads::get_instance()->internal_options();
$installed = isset( $options['installed'] ) ? $options['installed'] : 0;
return $installed >= $timestamp;
}
/**
* Create a random group
*
* @param string $url optional parameter.
* @param string $ex group.
*
* @return bool
*/
public static function get_group_by_url( $url = '', $ex = 'a' ) {
$url = self::get_short_url( $url );
$code = (int) substr( md5( $url ), - 1 );
switch ( $ex ) {
case 'b':
return ( $code & 2 ) >> 1; // returns 1 or 0.
case 'c':
return ( $code & 4 ) >> 2; // returns 1 or 0.
case 'd':
return ( $code & 8 ) >> 3; // returns 1 or 0.
default:
return $code & 1; // returns 1 or 0.
}
}
/**
* Get short version of home_url() by removing protocol, www and slash
*
* @param string $url URL to be shortened.
*
* @return string
*/
public static function get_short_url( $url = '' ) {
$url = empty( $url ) ? home_url() : $url;
// Strip protocols.
if ( preg_match( '/^(\w[\w\d]*:\/\/)?(www\.)?(.*)$/', trim( $url ), $matches ) ) {
$url = $matches[3];
}
// Strip slashes.
return trim( $url, '/' );
}
}