| Current File : /home/eticmes/www/wp-content/themes/oceanwp/inc/themepanel/includes/classes/class-helpers.php |
<?php
if ( ! class_exists( 'OceanWP_Theme_Panel_Helpers' ) ) {
/**
* Helper functions class.
*
* @since 1.7.0
*/
class OceanWP_Theme_Panel_Helpers {
/**
* You can create a directory using this helper , it will check the dest directory for if its writable or not then
* try to create new one
*
* @since 1.0.0
* @author Artbees <info@artbees.net>
*
* @param str $path path of directory that need to be created.
* @param int $perm permission of new directory , default is : 0775.
*
* @return bool will return boolean status of action , all message is setted to $this->message()
*/
// public static function check_perm_and_create( $path, $perm = 0775 ) {
// $oceanwp_filesystem = new OceanWP_Filesystem(
// array(
// 'context' => $path,
// )
// );
// if ( $oceanwp_filesystem->get_error_code() ) {
// throw new Exception( $oceanwp_filesystem->get_error_message() );
// return false;
// }
// if ( $oceanwp_filesystem->exists( $path ) ) {
// if ( ! $oceanwp_filesystem->is_writable( $path ) ) {
// throw new Exception( sprintf( __( '%s directory is not writable', 'jupiterx-core' ), $path ) );
// return false;
// }
// return true;
// } else {
// if ( ! $oceanwp_filesystem->mkdir( $path, $perm ) ) {
// throw new Exception( sprintf( __( 'Can\'t create directory %s', 'jupiterx-core' ), $path ) );
// return false;
// }
// return true;
// }
// }
/**
* This method is resposible to download file from url and save it on server.
* it will check if curl is available or not and then decide to use curl or file_get_content
*
* @since 1.0.0
* @author Artbees <info@artbees.net>
*
* @param string $url url of file (http://yahoo.com/test-plugin.zip).
* @param string $file_name name of the fire that should be create at destination directory.
* @param string $dest_directory absolute path of directory that file save on it.
*
* @return bool will return action status
*/
// public static function upload_from_url( $url, $file_name, $dest_directory, $remote_args = [] ) {
// set_time_limit( 0 );
// try {
// self::check_perm_and_create( $dest_directory );
// } catch ( Exception $e ) {
// throw new Exception( sprintf( __( 'Destination directory is not ready for upload . {%s}', 'jupiterx-core' ), $dest_directory ) );
// return false;
// }
// $response = wp_remote_get( $url, array_merge( [ 'timeout' => 120 ], $remote_args ) );
// if ( is_wp_error( $response ) ) {
// throw new Exception( $response->get_error_message() );
// return false;
// }
// $response_body = wp_remote_retrieve_body( $response );
// if ( is_wp_error( $response_body ) ) {
// throw new Exception( $response_body->get_error_message() );
// return false;
// }
// $oceanwp_filesystem = new OceanWP_Filesystem(
// array(
// 'context' => $dest_directory,
// )
// );
// if ( $oceanwp_filesystem->get_error_code() ) {
// throw new Exception( $oceanwp_filesystem->get_error_message() );
// return false;
// }
// if ( ! $oceanwp_filesystem->put_contents( $dest_directory . $file_name, $response_body ) ) {
// throw new Exception( sprintf( __( "Can't write file to {%s}", 'jupiterx-core' ), $dest_directory . $file_name ) );
// return false;
// }
// return $dest_directory . $file_name;
// }
/**
* This method is resposible to delete a directory or file.
* if the path is pointing to a directory it will remove all the includes file recursivly and then remove directory at last step
* if the path is pointing to a file it will remove it
*
* @since 1.0.0
* @author Artbees <info@artbees.net>
*
* @param str $dir for example (/var/www/jupiter/wp-content/plugins).
*
* @return bool true or false
*/
// public static function delete_file_and_dir( $dir ) {
// if ( empty( $dir ) == true || strlen( $dir ) < 2 ) {
// return false;
// }
// $dir = realpath( $dir );
// $oceanwp_filesystem = new OceanWP_Filesystem(
// array(
// 'context' => $dir,
// )
// );
// if ( $oceanwp_filesystem->get_error_code() ) {
// return false;
// }
// if ( ! $oceanwp_filesystem->exists( $dir ) ) {
// return true;
// }
// if ( $oceanwp_filesystem->is_dir( $dir ) ) {
// return $oceanwp_filesystem->rmdir( $dir, true );
// } else {
// return $oceanwp_filesystem->delete( $dir );
// }
// }
/**
* Prevents cache.
* Deletes cache files and transients.
*
* @since 1.0.0
*/
// public static function prevent_cache_plugins() {
// if ( function_exists( 'w3tc_pgcache_flush' ) ) {
// w3tc_pgcache_flush();
// // W3 Total Cache: Page cache flushed.
// } elseif ( function_exists( 'wp_cache_clear_cache' ) ) {
// wp_cache_clear_cache();
// // WP Super Cache: Page cache cleared.
// } elseif ( function_exists( 'rocket_clean_domain' ) ) {
// rocket_clean_domain();
// // WP Rocket: Domain cache purged.
// }
// if ( ! defined( 'DONOTCACHEPAGE' ) ) {
// define( 'DONOTCACHEPAGE', true );
// }
// if ( ! defined( 'DONOTCACHCEOBJECT' ) ) {
// define( 'DONOTCACHCEOBJECT', true );
// }
// if ( ! defined( 'DONOTMINIFY' ) ) {
// define( 'DONOTMINIFY', true );
// }
// if ( ! defined( 'DONOTCACHEDB' ) ) {
// define( 'DONOTCACHEDB', true );
// }
// if ( ! defined( 'DONOTCDN' ) ) {
// define( 'DONOTCDN', true );
// }
// }
/**
* Safely and securely get file from server.
* It attempts to read file using WordPress native file read functions
* If it fails, we use wp_remote_get. if the site is ssl enabled, we try to convert it http as some servers may fail to get file
*
* @author Artbees <info@artbees.net>
*
* @param $file_url string its directory URL.
* @param $file_dir string its directory Path.
*
* @return $wp_file_body string
*/
// public static function getFileBody( $file_uri, $file_dir ) {
// $wp_remote_get_file_body = '';
// $file_dir = realpath( $file_dir );
// $oceanwp_filesystem = new OceanWP_Filesystem(
// array(
// 'context' => $file_dir,
// )
// );
// if ( $oceanwp_filesystem->get_error_code() ) {
// throw new Exception( $oceanwp_filesystem->get_error_message() );
// return false;
// }
// $wp_get_file_body = $oceanwp_filesystem->get_contents( $file_dir );
// if ( false == $wp_get_file_body ) {
// $wp_remote_get_file = wp_remote_get( $file_uri );
// if ( is_array( $wp_remote_get_file ) && array_key_exists( 'body', $wp_remote_get_file ) ) {
// $wp_remote_get_file_body = $wp_remote_get_file['body'];
// } elseif ( is_numeric( strpos( $file_uri, 'https://' ) ) ) {
// $file_uri = str_replace( 'https://', 'http://', $file_uri );
// $wp_remote_get_file = wp_remote_get( $file_uri );
// if ( ! is_array( $wp_remote_get_file ) || ! array_key_exists( 'body', $wp_remote_get_file ) ) {
// throw new Exception( __( 'SSL connection error. Code: template-assets-get', 'jupiterx-core' ) );
// return false;
// }
// $wp_remote_get_file_body = $wp_remote_get_file['body'];
// }
// $wp_file_body = $wp_remote_get_file_body;
// } else {
// $wp_file_body = $wp_get_file_body;
// }
// return $wp_file_body;
// }
/**
* Check if the request is done through a localhost.
*
* @author Artbees <info@artbees.net>
*
* @return boolean
*/
public static function is_localhost() {
return ('127.0.0.1' == $_SERVER['REMOTE_ADDR'] || 'localhost' == $_SERVER['REMOTE_ADDR'] || '::1' == $_SERVER['REMOTE_ADDR']) ? 1 : 0;
}
/**
* Convert alphabetical bit size to numericals
*
* @author Artbees <info@artbees.net>
*
* @return number
*/
public static function let_to_num( $size ) {
$l = substr( $size, -1 );
$ret = substr( $size, 0, -1 );
switch ( strtoupper( $l ) ) {
case 'P':
$ret *= 1024;
case 'T':
$ret *= 1024;
case 'G':
$ret *= 1024;
case 'M':
$ret *= 1024;
case 'K':
$ret *= 1024;
}
return $ret;
}
/**
* Convert boolean value to a string value (e.g. from true to 'true')
*
* @author Artbees <info@artbees.net>
*
* @return String
*/
public static function make_bool_string( $var ) {
if ( false == $var || 'false' == $var || 0 == $var || '0' == $var || '' == $var || empty( $var ) ) {
return 'false';
}
return 'true';
}
/**
* It will create a compress file from list of files
*
* @author Artbees <info@artbees.net>
*
* @param array $files for example : array('preload-images/5.jpg','kwicks/ringo.gif','rod.jpg','reddit.gif');.
* @param string $destination name of the file or full address of destination for example : my-archive.zip.
* @param boolean $overwrite if destionation exist , should it overwrite the compress file ?.
*
* @return boolean true if completed and false if something goes wrong
*/
// public static function zip( $files = array(), $destination = '', $overwrite = false ) {
// $oceanwp_filesystem = new OceanWP_Filesystem(
// array(
// 'context' => $destination,
// )
// );
// if ( $oceanwp_filesystem->get_error_code() ) {
// return false;
// }
// // if the zip file already exists and overwrite is false, return false.
// if ( $oceanwp_filesystem->exists( $destination ) && ! $overwrite ) {
// return false;
// }
// $valid_files = array();
// // if files were passed in...
// if ( is_array( $files ) ) {
// // cycle through each file.
// foreach ( $files as $file_name => $file_path ) {
// // make sure the file exists.
// if ( $oceanwp_filesystem->exists( $file_path ) ) {
// $valid_files[ $file_name ] = $file_path;
// }
// }
// }
// // if we have good files...
// if ( count( $valid_files ) ) {
// $temp_file = tempnam( sys_get_temp_dir(), 'zip' );
// if ( class_exists( 'ZipArchive', false ) ) {
// $zip = new ZipArchive();
// // Try open the temp file.
// $zip->open( $temp_file );
// // add the files to archive.
// foreach ( $valid_files as $file_name => $file_path ) {
// $zip->addFile( $file_path, $file_name );
// }
// // close the zip -- done!
// $zip->close();
// } else {
// mbstring_binary_safe_encoding();
// require_once ABSPATH . 'wp-admin/includes/class-pclzip.php';
// $zip = new PclZip( $temp_file );
// foreach ( $valid_files as $file_name => $file_path ) {
// $zip->create( $file_path, $file_name );
// }
// reset_mbstring_encoding();
// }
// // add the files to archive.
// foreach ( $valid_files as $file_name => $file_path ) {
// $zip->addFile( $file_path, $file_name );
// }
// // debug
// // echo 'The zip archive contains ',$zip->numFiles,' files with a status of ',$zip->status;
// // close the zip -- done!
// $zip->close();
// // Copy the temp file to destination.
// $oceanwp_filesystem->copy( $temp_file, $destination, true, 0644 );
// // Try delete the temp file.
// $oceanwp_filesystem->delete( $temp_file );
// // check to make sure the file exists.
// return $oceanwp_filesystem->exists( $destination );
// }
// return false;
// }
// public static function search_multdim( $array, $key, $value ) {
// return (array_search( $value, array_column( $array, $key ) ));
// }
/**
* It will check wether wordpress-importer plugin is exist in plugin directory or not.
* if exist it will return the WordPress importer file
* if not it will use jupiter version
*
* @author Artbees <info@artbees.net>
* @copyright Artbees LTD (c)
* @link https://artbees.net
* @since Version 5.5
*/
// public static function include_wordpress_importer() {
// if ( ! class_exists( 'WP_Importer' ) ) {
// defined( 'WP_LOAD_IMPORTERS' ) || define( 'WP_LOAD_IMPORTERS', true );
// include ABSPATH . '/wp-admin/includes/class-wp-importer.php';
// }
// if ( ! class_exists( 'OceanWP_WXR_Importer' ) ) {
// oceanwp_core()->load_files( [
// 'control-panel/includes/importer/class-logger',
// 'control-panel/includes/importer/class-logger-serversentevents',
// 'control-panel/includes/importer/class-wxr-import-info',
// 'control-panel/includes/importer/class-wxr-importer',
// ] );
// }
// if ( ! class_exists( 'OceanWP_Importer' ) ) {
// oceanwp_core()->load_files( [
// 'control-panel/includes/importer/class-jupiterx-importer',
// ] );
// }
// return true;
// }
/**
* It will return permission of directory
*
* @author Artbees <info@artbees.net>
*
* @param string $path Full path of directory.
*
* @return int
*/
// public static function get_perm( $path ) {
// return substr( sprintf( '%o', fileperms( ABSPATH . $path ) ), -4 );
// }
/**
* Convert Bytes to MegaBytes.
*
* @access public
* @static
* @since 1.10.0
*
* @param [type] $bytes
* @return void
*/
public static function bytes_to_mb( $bytes ) {
return round( $bytes / ( 1024 * 1024 ), 2 );
}
}
}