HEX
Server: Apache
System: Linux uyu7574470001-7d78c9ff74-xfpwm 4.19.91-21.al7.x86_64 #1 SMP Wed Sep 2 19:47:49 CST 2020 x86_64
User: ()
PHP: 7.4.16
Disabled: chmod,exec,system,passthru,shell_exec,escapeshellarg,escapeshellcmd,proc_close,proc_open,ini_alter,dl,popen,pcntl_exec,socket_accept,socket_bind,socket_clear_error,socket_close,socket_connect,socket_create_listen,socket_create_pair,socket_create,socket_get_option,socket_getpeername,socket_getsockname,socket_last_error,socket_listen,socket_read,socket_recv,socket_recvfrom,socket_select,socket_send,socket_sendto,socket_set_block,socket_set_nonblock,socket_set_option,socket_shutdown,socket_strerror,socket_write,stream_socket_client,stream_socket_server,pfsockopen,disk_total_space,disk_free_space,chown,diskfreespace,getrusage,get_current_user,getmyuid,getmypid,dl,leak,listen,chgrp,link,symlink,dlopen,proc_nice,proc_get_stats,proc_terminate,shell_exec,sh2_exec,posix_getpwuid,posix_getgrgid,posix_kill,ini_restore,mkfifo,dbmopen,dbase_open,filepro,filepro_rowcount,posix_mkfifo,putenv,sleep,fsockopen
Upload Files
File: /usr/home/uyu7574470001/htdocs/wp-content/plugins/tiny-compress-images/src/class-tiny-helpers.php
<?php
/*
* Tiny Compress Images - WordPress plugin.
* Copyright (C) 2015-2018 Tinify B.V.
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the Free
* Software Foundation; either version 2 of the License, or (at your option)
* any later version.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*
* You should have received a copy of the GNU General Public License along
* with this program; if not, write to the Free Software Foundation, Inc., 51
* Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/

class Tiny_Helpers {


	/**
	 * truncate_text will truncate a string to a given length.
	 * When text is longer than the given length, the string will be truncated and
	 * the last characters will be replaced with an ellipsis.
	 *
	 * We can use mb_strlen & mb_substr as WordPress provides a compat function for
	 * it if mbstring php module is not installed.
	 *
	 * @param string $text the text
	 * @param integer $length the maximum length of the string
	 * @return string the truncated string
	 */
	public static function truncate_text( $text, $length ) {
		if ( mb_strlen( $text ) > $length ) {
			return mb_substr( $text, 0, $length - 3 ) . '...';
		}
		return $text;
	}

	/**
	 * Will replace the file extension with the specified mimetype.
	 *
	 * @param string $mimetype The format to replace the extension with.
	 * Currently supports 'image/avif' or 'image/webp'
	 * @param string $filepath The full path to replace the extension in, ex /home/user/image.png
	 *
	 * @return string The full path to the file with the new extension, ex /home/user/image.avif
	 */
	public static function replace_file_extension( $mimetype, $filepath ) {
		$parts = pathinfo( $filepath );

		if ( ! isset( $parts['extension'] ) ) {
			return $filepath;
		}

		$extension_new = self::mimetype_to_extension( $mimetype );
		if ( null === $extension_new ) {
			return $filepath;
		}

		$dir  = $parts['dirname'];
		$name = $parts['filename'];
		$sep  = DIRECTORY_SEPARATOR;

		if ( '.' === $dir ) {
			return $name . '.' . $extension_new;
		}

		if ( $dir === $sep ) {
			return $sep . $name . '.' . $extension_new;
		}

		$dir = rtrim( $dir, '/\\' );
		return $dir . $sep . $name . '.' . $extension_new;
	}

	private static function mimetype_to_extension( $mimetype ) {
		switch ( $mimetype ) {
			case 'image/jpeg':
				return 'jpg';
			case 'image/png':
				return 'png';
			case 'image/webp':
				return 'webp';
			case 'image/avif':
				return 'avif';
			default:
				return null;
		}
	}

	/**
	 * Will return the mimetype of the file
	 *
	 * ref: https://www.php.net/manual/en/class.finfo.php
	 *
	 * @param string $input The file contents
	 * @return string The mimetype of the file
	 */
	public static function get_mimetype( $input ) {
		if ( class_exists( 'finfo' ) ) {
			$finfo = new finfo( FILEINFO_MIME_TYPE );
			$mime  = $finfo->buffer( $input );
			return $mime;
		} else {
			throw new Exception( 'finfo extension is not available.' );
		}
	}


	/**
	 * Checks wether a user is viewing from a page builder
	 *
	 * @since 3.6.5
	 */
	public static function is_pagebuilder_request() {
		$pagebuilder_keys = array(
			'fl_builder', // Beaver Builder
			'et_fb', // Divi Builder
			'bricks', // Bricks Builder
			'breakdance', // Breakdance Builder
			'breakdance_browser', // Breakdance Builder
			'ct_builder', // Oxygen Builder
			'fb-edit', // Avada Live Builder
			'builder', // Avada Live Builder
			'spio_no_cdn', // Site Origin
			'tatsu', // Tatsu Builder
			'tve', // Thrive Architect
			'tcbf', // Thrive Architect
		);

		foreach ( $pagebuilder_keys as $key ) {
			if ( isset( $_GET[ $key ] ) ) {
				return true;
			}
		}

		return false;
	}

	/**
	 * Gets or initializes the WordPress filesystem instance.
	 *
	 * Returns the global WP_Filesystem instance, initializing it if necessary.
	 * This helper prevents repeated initialization code throughout the plugin.
	 *
	 * @since 3.7.0
	 *
	 * @return WP_Filesystem_Base The WP_Filesystem instance.
	 * @throws Exception If the filesystem cannot be initialized.
	 */
	public static function get_wp_filesystem() {
		global $wp_filesystem;

		if ( $wp_filesystem instanceof WP_Filesystem_Base ) {
			return $wp_filesystem;
		}

		// Initialize the filesystem only if the function isn't available yet.
		if ( ! function_exists( 'WP_Filesystem' ) ) {
			require_once ABSPATH . 'wp-admin/includes/file.php';
		}
		WP_Filesystem();

		if ( ! ( $wp_filesystem instanceof WP_Filesystem_Base ) ) {
			throw new Exception( 'Unable to initialize WordPress filesystem.' );
		}

		return $wp_filesystem;
	}
}