HEX
Server: LiteSpeed
System: Linux server490.bertina.biz 5.14.0-687.31.1.el9_8.x86_64 #1 SMP PREEMPT_DYNAMIC Sat Aug 1 05:38:01 EDT 2026 x86_64
User: parskavirpaya (1252)
PHP: 8.1.34
Disabled: mail, show_source, system, shell_exec, passthru, exec, popen
Upload Files
File: /home/parskavirpaya/public_html/wp-content/plugins/wp-parsidate/inc/Helper/Assets.php
<?php

namespace WPParsidate\Helper;

defined( 'ABSPATH' ) || exit;

class Assets {
  /**
   * Get assets version, if plugin or WP debug mode activated add timestamp to version string.
   *
   * @return string Assets Version string
   */
  public static function getVersion(): string {
    return WP_PARSI_VER . ( Debug::check() || SCRIPT_DEBUG ? time() : '' );
  }

  /**
   * Get asset url
   *
   * @param string $path Assets path
   *
   * @return string Asset url
   */
  public static function url( string $path ): string {
    return WP_PARSI_URL . 'assets/' . $path;
  }

  /**
   * Determines whether the string is HTML image string
   *
   * @param string $string HTML image string
   *
   * @return bool
   */
  public static function isImageString( string $string ): bool {
    return str_starts_with( trim( $string ), '<img' ) !== false;
  }

  /**
   * Determines whether the string is HTML image string
   *
   * @param string $string HTML image string
   * @param bool $clean Clean HTML string before check
   *
   * @return bool
   */
  public static function isSvgImageString( string $string, bool $clean = true ): bool {
    if ( $clean ) {
      $string = self::cleanSvgImageString( $string );
    }

    return str_starts_with( trim( $string ), '<svg' ) !== false;
  }

  /**
   * Clean HTML SVG string
   *
   * @param string $svg HTML SVG string
   *
   * @return string
   */
  public static function cleanSvgImageString( string $svg ): string {
    $svg = Sanitizing::svg( $svg );
    $svg = Strip::removeHtmlComments( $svg );
    $svg = Strip::removeHtmlDoctype( $svg );

    $svg = trim( $svg );
    $svg = str_replace( "\n", '', $svg );

    return trim( $svg );
  }

  /**
   * Set HTML SVG image string width and height
   *
   * @param string $svg
   * @param int $width SVG width
   * @param int|null $height SVG height, If not set equal to width
   * @param bool $clean Clean HTML string before check
   *
   * @return string HTML SVG string
   */
  public static function setSvgDimensions( string $svg, int $width, ?int $height = null, bool $clean = true ): string {
    if ( is_null( $height ) ) {
      $height = $width;
    }

    if ( $clean ) {
      $svg = self::cleanSvgImageString( $svg );
    }

    if ( ! empty( $svg ) && self::isSvgImageString( $svg ) ) {
      $openingTag = $openTag = substr( $svg, 0, mb_strpos( $svg, '>' ) + 1 );
      $svgWidth   = $svgHeight = null;
      if ( $openingTag ) {
        preg_match( '/width="(.+?)"/', $openingTag, $matches );
        if ( ! empty( $matches ) ) {
          $svgWidth = $matches[0];
        }

        preg_match( '/height="(.+?)"/', $openingTag, $matches );
        if ( ! empty( $matches ) ) {
          $svgHeight = $matches[0];
        }

        if ( is_null( $svgWidth ) ) {
          $openTag = substr_replace( $openTag, ' width="' . $width . '"', mb_strlen( $openTag ) - 1, 0 );
        } else {
          $openTag = str_replace( $svgWidth, 'width="' . $width . '"', $openTag );
        }

        if ( is_null( $svgHeight ) ) {
          $openTag = substr_replace( $openTag, ' height="' . $height . '"', mb_strlen( $openTag ) - 1, 0 );
        } else {
          $openTag = str_replace( $svgHeight, 'height="' . $height . '"', $openTag );
        }

        $svg = str_replace( $openingTag, $openTag, $svg );
      }
    }

    return $svg;
  }
}