/**
* Copyright (C) 2014-2020 ServMask Inc.
*
* 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 3 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, see .
*
* ███████╗███████╗██████╗ ██╗ ██╗███╗ ███╗ █████╗ ███████╗██╗ ██╗
* ██╔════╝██╔════╝██╔══██╗██║ ██║████╗ ████║██╔══██╗██╔════╝██║ ██╔╝
* ███████╗█████╗ ██████╔╝██║ ██║██╔████╔██║███████║███████╗█████╔╝
* ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██║╚██╔╝██║██╔══██║╚════██║██╔═██╗
* ███████║███████╗██║ ██║ ╚████╔╝ ██║ ╚═╝ ██║██║ ██║███████║██║ ██╗
* ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝
*/
if ( ! defined( 'ABSPATH' ) ) {
die( 'Kangaroos cannot jump here' );
}
/**
* Get storage absolute path
*
* @param array $params Request parameters
* @return string
*/
function ai1wm_storage_path( $params ) {
if ( empty( $params['storage'] ) ) {
throw new Ai1wm_Storage_Exception( __( 'Unable to locate storage path. Technical details', AI1WM_PLUGIN_NAME ) );
}
// Get storage path
$storage = AI1WM_STORAGE_PATH . DIRECTORY_SEPARATOR . basename( $params['storage'] );
if ( ! is_dir( $storage ) ) {
mkdir( $storage );
}
return $storage;
}
/**
* Get backup absolute path
*
* @param array $params Request parameters
* @return string
*/
function ai1wm_backup_path( $params ) {
if ( empty( $params['archive'] ) ) {
throw new Ai1wm_Archive_Exception( __( 'Unable to locate archive path. Technical details', AI1WM_PLUGIN_NAME ) );
}
// Validate archive path
if ( validate_file( $params['archive'] ) !== 0 ) {
throw new Ai1wm_Archive_Exception( __( 'Invalid archive path. Technical details', AI1WM_PLUGIN_NAME ) );
}
return AI1WM_BACKUPS_PATH . DIRECTORY_SEPARATOR . $params['archive'];
}
/**
* Get archive absolute path
*
* @param array $params Request parameters
* @return string
*/
function ai1wm_archive_path( $params ) {
if ( empty( $params['archive'] ) ) {
throw new Ai1wm_Archive_Exception( __( 'Unable to locate archive path. Technical details', AI1WM_PLUGIN_NAME ) );
}
// Validate archive path
if ( validate_file( $params['archive'] ) !== 0 ) {
throw new Ai1wm_Archive_Exception( __( 'Invalid archive path. Technical details', AI1WM_PLUGIN_NAME ) );
}
// Get archive path
if ( empty( $params['ai1wm_manual_restore'] ) ) {
return ai1wm_storage_path( $params ) . DIRECTORY_SEPARATOR . $params['archive'];
}
return ai1wm_backup_path( $params );
}
/**
* Get multipart.list absolute path
*
* @param array $params Request parameters
* @return string
*/
function ai1wm_multipart_path( $params ) {
return ai1wm_storage_path( $params ) . DIRECTORY_SEPARATOR . AI1WM_MULTIPART_NAME;
}
/**
* Get content.list absolute path
*
* @param array $params Request parameters
* @return string
*/
function ai1wm_content_list_path( $params ) {
return ai1wm_storage_path( $params ) . DIRECTORY_SEPARATOR . AI1WM_CONTENT_LIST_NAME;
}
/**
* Get media.list absolute path
*
* @param array $params Request parameters
* @return string
*/
function ai1wm_media_list_path( $params ) {
return ai1wm_storage_path( $params ) . DIRECTORY_SEPARATOR . AI1WM_MEDIA_LIST_NAME;
}
/**
* Get tables.list absolute path
*
* @param array $params Request parameters
* @return string
*/
function ai1wm_tables_list_path( $params ) {
return ai1wm_storage_path( $params ) . DIRECTORY_SEPARATOR . AI1WM_TABLES_LIST_NAME;
}
/**
* Get package.json absolute path
*
* @param array $params Request parameters
* @return string
*/
function ai1wm_package_path( $params ) {
return ai1wm_storage_path( $params ) . DIRECTORY_SEPARATOR . AI1WM_PACKAGE_NAME;
}
/**
* Get multisite.json absolute path
*
* @param array $params Request parameters
* @return string
*/
function ai1wm_multisite_path( $params ) {
return ai1wm_storage_path( $params ) . DIRECTORY_SEPARATOR . AI1WM_MULTISITE_NAME;
}
/**
* Get blogs.json absolute path
*
* @param array $params Request parameters
* @return string
*/
function ai1wm_blogs_path( $params ) {
return ai1wm_storage_path( $params ) . DIRECTORY_SEPARATOR . AI1WM_BLOGS_NAME;
}
/**
* Get settings.json absolute path
*
* @param array $params Request parameters
* @return string
*/
function ai1wm_settings_path( $params ) {
return ai1wm_storage_path( $params ) . DIRECTORY_SEPARATOR . AI1WM_SETTINGS_NAME;
}
/**
* Get database.sql absolute path
*
* @param array $params Request parameters
* @return string
*/
function ai1wm_database_path( $params ) {
return ai1wm_storage_path( $params ) . DIRECTORY_SEPARATOR . AI1WM_DATABASE_NAME;
}
/**
* Get error log absolute path
*
* @return string
*/
function ai1wm_error_path() {
return AI1WM_STORAGE_PATH . DIRECTORY_SEPARATOR . AI1WM_ERROR_NAME;
}
/**
* Get archive name
*
* @param array $params Request parameters
* @return string
*/
function ai1wm_archive_name( $params ) {
return basename( $params['archive'] );
}
/**
* Get backup URL address
*
* @param array $params Request parameters
* @return string
*/
function ai1wm_backup_url( $params ) {
return AI1WM_BACKUPS_URL . '/' . ai1wm_replace_directory_separator_with_forward_slash( $params['archive'] );
}
/**
* Get archive size in bytes
*
* @param array $params Request parameters
* @return integer
*/
function ai1wm_archive_bytes( $params ) {
return filesize( ai1wm_archive_path( $params ) );
}
/**
* Get backup size in bytes
*
* @param array $params Request parameters
* @return integer
*/
function ai1wm_backup_bytes( $params ) {
return filesize( ai1wm_backup_path( $params ) );
}
/**
* Get database size in bytes
*
* @param array $params Request parameters
* @return integer
*/
function ai1wm_database_bytes( $params ) {
return filesize( ai1wm_database_path( $params ) );
}
/**
* Get package size in bytes
*
* @param array $params Request parameters
* @return integer
*/
function ai1wm_package_bytes( $params ) {
return filesize( ai1wm_package_path( $params ) );
}
/**
* Get multisite size in bytes
*
* @param array $params Request parameters
* @return integer
*/
function ai1wm_multisite_bytes( $params ) {
return filesize( ai1wm_multisite_path( $params ) );
}
/**
* Get archive size as text
*
* @param array $params Request parameters
* @return string
*/
function ai1wm_archive_size( $params ) {
return ai1wm_size_format( filesize( ai1wm_archive_path( $params ) ) );
}
/**
* Get backup size as text
*
* @param array $params Request parameters
* @return string
*/
function ai1wm_backup_size( $params ) {
return ai1wm_size_format( filesize( ai1wm_backup_path( $params ) ) );
}
/**
* Parse file size
*
* @param string $size File size
* @param string $default Default size
* @return string
*/
function ai1wm_parse_size( $size, $default = null ) {
$suffixes = array(
'' => 1,
'k' => 1000,
'm' => 1000000,
'g' => 1000000000,
);
// Parse size format
if ( preg_match( '/([0-9]+)\s*(k|m|g)?(b?(ytes?)?)/i', $size, $match ) ) {
return $match[1] * $suffixes[ strtolower( $match[2] ) ];
}
return $default;
}
/**
* Format file size into human-readable string
*
* Fixes the WP size_format bug: size_format( '0' ) => false
*
* @param int|string $bytes Number of bytes. Note max integer size for integers.
* @param int $decimals Optional. Precision of number of decimal places. Default 0.
* @return string|false False on failure. Number string on success.
*/
function ai1wm_size_format( $bytes, $decimals = 0 ) {
if ( strval( $bytes ) === '0' ) {
return size_format( 0, $decimals );
}
return size_format( $bytes, $decimals );
}
/**
* Get current site name
*
* @param integer $blog_id Blog ID
* @return string
*/
function ai1wm_site_name( $blog_id = null ) {
return parse_url( get_site_url( $blog_id ), PHP_URL_HOST );
}
/**
* Get archive file name
*
* @param integer $blog_id Blog ID
* @return string
*/
function ai1wm_archive_file( $blog_id = null ) {
$name = array();
// Add domain
$name[] = parse_url( get_site_url( $blog_id ), PHP_URL_HOST );
// Add path
if ( ( $path = explode( '/', parse_url( get_site_url( $blog_id ), PHP_URL_PATH ) ) ) ) {
foreach ( $path as $directory ) {
if ( $directory ) {
$name[] = $directory;
}
}
}
// Add year, month and day
$name[] = date( 'Ymd' );
// Add hours, minutes and seconds
$name[] = date( 'His' );
// Add unique identifier
$name[] = ai1wm_generate_random_string( 6, false );
return sprintf( '%s.wpress', strtolower( implode( '-', $name ) ) );
}
/**
* Get archive folder name
*
* @param integer $blog_id Blog ID
* @return string
*/
function ai1wm_archive_folder( $blog_id = null ) {
$name = array();
// Add domain
$name[] = parse_url( get_site_url( $blog_id ), PHP_URL_HOST );
// Add path
if ( ( $path = explode( '/', parse_url( get_site_url( $blog_id ), PHP_URL_PATH ) ) ) ) {
foreach ( $path as $directory ) {
if ( $directory ) {
$name[] = $directory;
}
}
}
return strtolower( implode( '-', $name ) );
}
/**
* Get archive bucket name
*
* @param integer $blog_id Blog ID
* @return string
*/
function ai1wm_archive_bucket( $blog_id = null ) {
$name = array();
// Add domain
if ( ( $domain = explode( '.', parse_url( get_site_url( $blog_id ), PHP_URL_HOST ) ) ) ) {
foreach ( $domain as $subdomain ) {
if ( $subdomain = strtolower( preg_replace( '/[^A-Za-z0-9\-]/', '', $subdomain ) ) ) {
$name[] = $subdomain;
}
}
}
// Add path
if ( ( $path = explode( '/', parse_url( get_site_url( $blog_id ), PHP_URL_PATH ) ) ) ) {
foreach ( $path as $directory ) {
if ( $directory = strtolower( preg_replace( '/[^A-Za-z0-9\-]/', '', $directory ) ) ) {
$name[] = $directory;
}
}
}
return strtolower( implode( '-', $name ) );
}
/**
* Get archive vault name
*
* @param integer $blog_id Blog ID
* @return string
*/
function ai1wm_archive_vault( $blog_id = null ) {
$name = array();
// Add domain
if ( ( $domain = explode( '.', parse_url( get_site_url( $blog_id ), PHP_URL_HOST ) ) ) ) {
foreach ( $domain as $subdomain ) {
if ( $subdomain = strtolower( preg_replace( '/[^A-Za-z0-9\-]/', '', $subdomain ) ) ) {
$name[] = $subdomain;
}
}
}
// Add path
if ( ( $path = explode( '/', parse_url( get_site_url( $blog_id ), PHP_URL_PATH ) ) ) ) {
foreach ( $path as $directory ) {
if ( $directory = strtolower( preg_replace( '/[^A-Za-z0-9\-]/', '', $directory ) ) ) {
$name[] = $directory;
}
}
}
return strtolower( implode( '-', $name ) );
}
/**
* Get archive project name
*
* @param integer $blog_id Blog ID
* @return string
*/
function ai1wm_archive_project( $blog_id = null ) {
$name = array();
// Add domain
if ( ( $domain = explode( '.', parse_url( get_site_url( $blog_id ), PHP_URL_HOST ) ) ) ) {
foreach ( $domain as $subdomain ) {
if ( $subdomain ) {
$name[] = $subdomain;
}
}
}
// Add path
if ( ( $path = explode( '/', parse_url( get_site_url( $blog_id ), PHP_URL_PATH ) ) ) ) {
foreach ( $path as $directory ) {
if ( $directory ) {
$name[] = $directory;
}
}
}
return strtolower( implode( '-', $name ) );
}
/**
* Get archive share name
*
* @param integer $blog_id Blog ID
* @return string
*/
function ai1wm_archive_share( $blog_id = null ) {
$name = array();
// Add domain
if ( ( $domain = explode( '.', parse_url( get_site_url( $blog_id ), PHP_URL_HOST ) ) ) ) {
foreach ( $domain as $subdomain ) {
if ( $subdomain = strtolower( preg_replace( '/[^A-Za-z0-9\-]/', '', $subdomain ) ) ) {
$name[] = $subdomain;
}
}
}
// Add path
if ( ( $path = explode( '/', parse_url( get_site_url( $blog_id ), PHP_URL_PATH ) ) ) ) {
foreach ( $path as $directory ) {
if ( $directory = strtolower( preg_replace( '/[^A-Za-z0-9\-]/', '', $directory ) ) ) {
$name[] = $directory;
}
}
}
return strtolower( implode( '-', $name ) );
}
/**
* Generate random string
*
* @param integer $length String length
* @param boolean $mixed_chars Whether to include mixed characters
* @param boolean $special_chars Whether to include special characters
* @param boolean $extra_special_chars Whether to include extra special characters
* @return string
*/
function ai1wm_generate_random_string( $length = 12, $mixed_chars = true, $special_chars = false, $extra_special_chars = false ) {
$chars = 'abcdefghijklmnopqrstuvwxyz0123456789';
if ( $mixed_chars ) {
$chars .= 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
}
if ( $special_chars ) {
$chars .= '!@#$%^&*()';
}
if ( $extra_special_chars ) {
$chars .= '-_ []{}<>~`+=,.;:/?|';
}
$str = '';
for ( $i = 0; $i < $length; $i++ ) {
$str .= substr( $chars, wp_rand( 0, strlen( $chars ) - 1 ), 1 );
}
return $str;
}
/**
* Get storage folder name
*
* @return string
*/
function ai1wm_storage_folder() {
return uniqid();
}
/**
* Check whether blog ID is main site
*
* @param integer $blog_id Blog ID
* @return boolean
*/
function ai1wm_is_mainsite( $blog_id = null ) {
return $blog_id === null || $blog_id === 0 || $blog_id === 1;
}
/**
* Get files absolute path by blog ID
*
* @param integer $blog_id Blog ID
* @return string
*/
function ai1wm_blog_files_abspath( $blog_id = null ) {
if ( ai1wm_is_mainsite( $blog_id ) ) {
return ai1wm_get_uploads_dir();
}
return WP_CONTENT_DIR . DIRECTORY_SEPARATOR . 'blogs.dir' . DIRECTORY_SEPARATOR . $blog_id . DIRECTORY_SEPARATOR . 'files';
}
/**
* Get blogs.dir absolute path by blog ID
*
* @param integer $blog_id Blog ID
* @return string
*/
function ai1wm_blog_blogsdir_abspath( $blog_id = null ) {
if ( ai1wm_is_mainsite( $blog_id ) ) {
return ai1wm_get_uploads_dir();
}
return WP_CONTENT_DIR . DIRECTORY_SEPARATOR . 'blogs.dir' . DIRECTORY_SEPARATOR . $blog_id;
}
/**
* Get sites absolute path by blog ID
*
* @param integer $blog_id Blog ID
* @return string
*/
function ai1wm_blog_sites_abspath( $blog_id = null ) {
if ( ai1wm_is_mainsite( $blog_id ) ) {
return ai1wm_get_uploads_dir();
}
return ai1wm_get_uploads_dir() . DIRECTORY_SEPARATOR . 'sites' . DIRECTORY_SEPARATOR . $blog_id;
}
/**
* Get files relative path by blog ID
*
* @param integer $blog_id Blog ID
* @return string
*/
function ai1wm_blog_files_relpath( $blog_id = null ) {
if ( ai1wm_is_mainsite( $blog_id ) ) {
return 'uploads';
}
return 'blogs.dir' . DIRECTORY_SEPARATOR . $blog_id . DIRECTORY_SEPARATOR . 'files';
}
/**
* Get blogs.dir relative path by blog ID
*
* @param integer $blog_id Blog ID
* @return string
*/
function ai1wm_blog_blogsdir_relpath( $blog_id = null ) {
if ( ai1wm_is_mainsite( $blog_id ) ) {
return 'uploads';
}
return 'blogs.dir' . DIRECTORY_SEPARATOR . $blog_id;
}
/**
* Get sites relative path by blog ID
*
* @param integer $blog_id Blog ID
* @return string
*/
function ai1wm_blog_sites_relpath( $blog_id = null ) {
if ( ai1wm_is_mainsite( $blog_id ) ) {
return 'uploads';
}
return 'uploads' . DIRECTORY_SEPARATOR . 'sites' . DIRECTORY_SEPARATOR . $blog_id;
}
/**
* Get files URL by blog ID
*
* @param integer $blog_id Blog ID
* @return string
*/
function ai1wm_blog_files_url( $blog_id = null ) {
if ( ai1wm_is_mainsite( $blog_id ) ) {
return '/wp-content/uploads/';
}
return sprintf( '/wp-content/blogs.dir/%d/files/', $blog_id );
}
/**
* Get blogs.dir URL by blog ID
*
* @param integer $blog_id Blog ID
* @return string
*/
function ai1wm_blog_blogsdir_url( $blog_id = null ) {
if ( ai1wm_is_mainsite( $blog_id ) ) {
return '/wp-content/uploads/';
}
return sprintf( '/wp-content/blogs.dir/%d/', $blog_id );
}
/**
* Get sites URL by blog ID
*
* @param integer $blog_id Blog ID
* @return string
*/
function ai1wm_blog_sites_url( $blog_id = null ) {
if ( ai1wm_is_mainsite( $blog_id ) ) {
return '/wp-content/uploads/';
}
return sprintf( '/wp-content/uploads/sites/%d/', $blog_id );
}
/**
* Get uploads URL by blog ID
*
* @param integer $blog_id Blog ID
* @return string
*/
function ai1wm_blog_uploads_url( $blog_id = null ) {
if ( ai1wm_is_mainsite( $blog_id ) ) {
return sprintf( '/%s/', ai1wm_get_uploads_path() );
}
return sprintf( '/%s/sites/%d/', ai1wm_get_uploads_path(), $blog_id );
}
/**
* Get ServMask table prefix by blog ID
*
* @param integer $blog_id Blog ID
* @return string
*/
function ai1wm_servmask_prefix( $blog_id = null ) {
if ( ai1wm_is_mainsite( $blog_id ) ) {
return AI1WM_TABLE_PREFIX;
}
return AI1WM_TABLE_PREFIX . $blog_id . '_';
}
/**
* Get WordPress table prefix by blog ID
*
* @param integer $blog_id Blog ID
* @return string
*/
function ai1wm_table_prefix( $blog_id = null ) {
global $wpdb;
// Set base table prefix
if ( ai1wm_is_mainsite( $blog_id ) ) {
return $wpdb->base_prefix;
}
return $wpdb->base_prefix . $blog_id . '_';
}
/**
* Get default content filters
*
* @param array $filters List of files and directories
* @return array
*/
function ai1wm_content_filters( $filters = array() ) {
return array_merge(
$filters,
array(
AI1WM_BACKUPS_NAME,
AI1WM_PACKAGE_NAME,
AI1WM_MULTISITE_NAME,
AI1WM_DATABASE_NAME,
)
);
}
/**
* Get default plugin filters
*
* @param array $filters List of plugins
* @return array
*/
function ai1wm_plugin_filters( $filters = array() ) {
// WP Migration Plugin
if ( defined( 'AI1WM_PLUGIN_BASENAME' ) ) {
$filters[] = 'plugins' . DIRECTORY_SEPARATOR . dirname( AI1WM_PLUGIN_BASENAME );
} else {
$filters[] = 'plugins' . DIRECTORY_SEPARATOR . 'all-in-one-wp-migration';
}
// Microsoft Azure Extension
if ( defined( 'AI1WMZE_PLUGIN_BASENAME' ) ) {
$filters[] = 'plugins' . DIRECTORY_SEPARATOR . dirname( AI1WMZE_PLUGIN_BASENAME );
} else {
$filters[] = 'plugins' . DIRECTORY_SEPARATOR . 'all-in-one-wp-migration-azure-storage-extension';
}
// Backblaze B2 Extension
if ( defined( 'AI1WMAE_PLUGIN_BASENAME' ) ) {
$filters[] = 'plugins' . DIRECTORY_SEPARATOR . dirname( AI1WMAE_PLUGIN_BASENAME );
} else {
$filters[] = 'plugins' . DIRECTORY_SEPARATOR . 'all-in-one-wp-migration-b2-extension';
}
// Backup Plugin
if ( defined( 'AI1WMVE_PLUGIN_BASENAME' ) ) {
$filters[] = 'plugins' . DIRECTORY_SEPARATOR . dirname( AI1WMVE_PLUGIN_BASENAME );
} else {
$filters[] = 'plugins' . DIRECTORY_SEPARATOR . 'all-in-one-wp-migration-backup';
}
// Box Extension
if ( defined( 'AI1WMBE_PLUGIN_BASENAME' ) ) {
$filters[] = 'plugins' . DIRECTORY_SEPARATOR . dirname( AI1WMBE_PLUGIN_BASENAME );
} else {
$filters[] = 'plugins' . DIRECTORY_SEPARATOR . 'all-in-one-wp-migration-box-extension';
}
// DigitalOcean Spaces Extension
if ( defined( 'AI1WMIE_PLUGIN_BASENAME' ) ) {
$filters[] = 'plugins' . DIRECTORY_SEPARATOR . dirname( AI1WMIE_PLUGIN_BASENAME );
} else {
$filters[] = 'plugins' . DIRECTORY_SEPARATOR . 'all-in-one-wp-migration-digitalocean-extension';
}
// Direct Extension
if ( defined( 'AI1WMXE_PLUGIN_BASENAME' ) ) {
$filters[] = 'plugins' . DIRECTORY_SEPARATOR . dirname( AI1WMXE_PLUGIN_BASENAME );
} else {
$filters[] = 'plugins' . DIRECTORY_SEPARATOR . 'all-in-one-wp-migration-direct-extension';
}
// Dropbox Extension
if ( defined( 'AI1WMDE_PLUGIN_BASENAME' ) ) {
$filters[] = 'plugins' . DIRECTORY_SEPARATOR . dirname( AI1WMDE_PLUGIN_BASENAME );
} else {
$filters[] = 'plugins' . DIRECTORY_SEPARATOR . 'all-in-one-wp-migration-dropbox-extension';
}
// File Extension
if ( defined( 'AI1WMTE_PLUGIN_BASENAME' ) ) {
$filters[] = 'plugins' . DIRECTORY_SEPARATOR . dirname( AI1WMTE_PLUGIN_BASENAME );
} else {
$filters[] = 'plugins' . DIRECTORY_SEPARATOR . 'all-in-one-wp-migration-file-extension';
}
// FTP Extension
if ( defined( 'AI1WMFE_PLUGIN_BASENAME' ) ) {
$filters[] = 'plugins' . DIRECTORY_SEPARATOR . dirname( AI1WMFE_PLUGIN_BASENAME );
} else {
$filters[] = 'plugins' . DIRECTORY_SEPARATOR . 'all-in-one-wp-migration-ftp-extension';
}
// Google Cloud Storage Extension
if ( defined( 'AI1WMCE_PLUGIN_BASENAME' ) ) {
$filters[] = 'plugins' . DIRECTORY_SEPARATOR . dirname( AI1WMCE_PLUGIN_BASENAME );
} else {
$filters[] = 'plugins' . DIRECTORY_SEPARATOR . 'all-in-one-wp-migration-gcloud-storage-extension';
}
// Google Drive Extension
if ( defined( 'AI1WMGE_PLUGIN_BASENAME' ) ) {
$filters[] = 'plugins' . DIRECTORY_SEPARATOR . dirname( AI1WMGE_PLUGIN_BASENAME );
} else {
$filters[] = 'plugins' . DIRECTORY_SEPARATOR . 'all-in-one-wp-migration-gdrive-extension';
}
// Amazon Glacier Extension
if ( defined( 'AI1WMRE_PLUGIN_BASENAME' ) ) {
$filters[] = 'plugins' . DIRECTORY_SEPARATOR . dirname( AI1WMRE_PLUGIN_BASENAME );
} else {
$filters[] = 'plugins' . DIRECTORY_SEPARATOR . 'all-in-one-wp-migration-glacier-extension';
}
// Mega Extension
if ( defined( 'AI1WMEE_PLUGIN_BASENAME' ) ) {
$filters[] = 'plugins' . DIRECTORY_SEPARATOR . dirname( AI1WMEE_PLUGIN_BASENAME );
} else {
$filters[] = 'plugins' . DIRECTORY_SEPARATOR . 'all-in-one-wp-migration-mega-extension';
}
// Multisite Extension
if ( defined( 'AI1WMME_PLUGIN_BASENAME' ) ) {
$filters[] = 'plugins' . DIRECTORY_SEPARATOR . dirname( AI1WMME_PLUGIN_BASENAME );
} else {
$filters[] = 'plugins' . DIRECTORY_SEPARATOR . 'all-in-one-wp-migration-multisite-extension';
}
// OneDrive Extension
if ( defined( 'AI1WMOE_PLUGIN_BASENAME' ) ) {
$filters[] = 'plugins' . DIRECTORY_SEPARATOR . dirname( AI1WMOE_PLUGIN_BASENAME );
} else {
$filters[] = 'plugins' . DIRECTORY_SEPARATOR . 'all-in-one-wp-migration-onedrive-extension';
}
// pCloud Extension
if ( defined( 'AI1WMPE_PLUGIN_BASENAME' ) ) {
$filters[] = 'plugins' . DIRECTORY_SEPARATOR . dirname( AI1WMPE_PLUGIN_BASENAME );
} else {
$filters[] = 'plugins' . DIRECTORY_SEPARATOR . 'all-in-one-wp-migration-pcloud-extension';
}
// Pro Plugin
if ( defined( 'AI1WMKE_PLUGIN_BASENAME' ) ) {
$filters[] = 'plugins' . DIRECTORY_SEPARATOR . dirname( AI1WMKE_PLUGIN_BASENAME );
} else {
$filters[] = 'plugins' . DIRECTORY_SEPARATOR . 'all-in-one-wp-migration-pro';
}
// S3 Client Extension
if ( defined( 'AI1WNE_PLUGIN_BASENAME' ) ) {
$filters[] = 'plugins' . DIRECTORY_SEPARATOR . dirname( AI1WMNE_PLUGIN_BASENAME );
} else {
$filters[] = 'plugins' . DIRECTORY_SEPARATOR . 'all-in-one-wp-migration-s3-client-extension';
}
// Amazon S3 Extension
if ( defined( 'AI1WMSE_PLUGIN_BASENAME' ) ) {
$filters[] = 'plugins' . DIRECTORY_SEPARATOR . dirname( AI1WMSE_PLUGIN_BASENAME );
} else {
$filters[] = 'plugins' . DIRECTORY_SEPARATOR . 'all-in-one-wp-migration-s3-extension';
}
// Unlimited Extension
if ( defined( 'AI1WMUE_PLUGIN_BASENAME' ) ) {
$filters[] = 'plugins' . DIRECTORY_SEPARATOR . dirname( AI1WMUE_PLUGIN_BASENAME );
} else {
$filters[] = 'plugins' . DIRECTORY_SEPARATOR . 'all-in-one-wp-migration-unlimited-extension';
}
// URL Extension
if ( defined( 'AI1WMLE_PLUGIN_BASENAME' ) ) {
$filters[] = 'plugins' . DIRECTORY_SEPARATOR . dirname( AI1WMLE_PLUGIN_BASENAME );
} else {
$filters[] = 'plugins' . DIRECTORY_SEPARATOR . 'all-in-one-wp-migration-url-extension';
}
// WebDAV Extension
if ( defined( 'AI1WMWE_PLUGIN_BASENAME' ) ) {
$filters[] = 'plugins' . DIRECTORY_SEPARATOR . dirname( AI1WMWE_PLUGIN_BASENAME );
} else {
$filters[] = 'plugins' . DIRECTORY_SEPARATOR . 'all-in-one-wp-migration-webdav-extension';
}
return $filters;
}
/**
* Get active ServMask plugins
*
* @return array
*/
function ai1wm_active_servmask_plugins( $plugins = array() ) {
// WP Migration Plugin
if ( defined( 'AI1WM_PLUGIN_BASENAME' ) ) {
$plugins[] = AI1WM_PLUGIN_BASENAME;
}
// Microsoft Azure Extension
if ( defined( 'AI1WMZE_PLUGIN_BASENAME' ) ) {
$plugins[] = AI1WMZE_PLUGIN_BASENAME;
}
// Backblaze B2 Extension
if ( defined( 'AI1WMAE_PLUGIN_BASENAME' ) ) {
$plugins[] = AI1WMAE_PLUGIN_BASENAME;
}
// Backup Plugin
if ( defined( 'AI1WMVE_PLUGIN_BASENAME' ) ) {
$plugins[] = AI1WMVE_PLUGIN_BASENAME;
}
// Box Extension
if ( defined( 'AI1WMBE_PLUGIN_BASENAME' ) ) {
$plugins[] = AI1WMBE_PLUGIN_BASENAME;
}
// DigitalOcean Spaces Extension
if ( defined( 'AI1WMIE_PLUGIN_BASENAME' ) ) {
$plugins[] = AI1WMIE_PLUGIN_BASENAME;
}
// Direct Extension
if ( defined( 'AI1WMXE_PLUGIN_BASENAME' ) ) {
$plugins[] = AI1WMXE_PLUGIN_BASENAME;
}
// Dropbox Extension
if ( defined( 'AI1WMDE_PLUGIN_BASENAME' ) ) {
$plugins[] = AI1WMDE_PLUGIN_BASENAME;
}
// File Extension
if ( defined( 'AI1WMTE_PLUGIN_BASENAME' ) ) {
$plugins[] = AI1WMTE_PLUGIN_BASENAME;
}
// FTP Extension
if ( defined( 'AI1WMFE_PLUGIN_BASENAME' ) ) {
$plugins[] = AI1WMFE_PLUGIN_BASENAME;
}
// Google Cloud Storage Extension
if ( defined( 'AI1WMCE_PLUGIN_BASENAME' ) ) {
$plugins[] = AI1WMCE_PLUGIN_BASENAME;
}
// Google Drive Extension
if ( defined( 'AI1WMGE_PLUGIN_BASENAME' ) ) {
$plugins[] = AI1WMGE_PLUGIN_BASENAME;
}
// Amazon Glacier Extension
if ( defined( 'AI1WMRE_PLUGIN_BASENAME' ) ) {
$plugins[] = AI1WMRE_PLUGIN_BASENAME;
}
// Mega Extension
if ( defined( 'AI1WMEE_PLUGIN_BASENAME' ) ) {
$plugins[] = AI1WMEE_PLUGIN_BASENAME;
}
// Multisite Extension
if ( defined( 'AI1WMME_PLUGIN_BASENAME' ) ) {
$plugins[] = AI1WMME_PLUGIN_BASENAME;
}
// OneDrive Extension
if ( defined( 'AI1WMOE_PLUGIN_BASENAME' ) ) {
$plugins[] = AI1WMOE_PLUGIN_BASENAME;
}
// pCloud Extension
if ( defined( 'AI1WMPE_PLUGIN_BASENAME' ) ) {
$plugins[] = AI1WMPE_PLUGIN_BASENAME;
}
// Pro Plugin
if ( defined( 'AI1WMKE_PLUGIN_BASENAME' ) ) {
$plugins[] = AI1WMKE_PLUGIN_BASENAME;
}
// S3 Client Extension
if ( defined( 'AI1WMNE_PLUGIN_BASENAME' ) ) {
$plugins[] = AI1WMNE_PLUGIN_BASENAME;
}
// Amazon S3 Extension
if ( defined( 'AI1WMSE_PLUGIN_BASENAME' ) ) {
$plugins[] = AI1WMSE_PLUGIN_BASENAME;
}
// Unlimited Extension
if ( defined( 'AI1WMUE_PLUGIN_BASENAME' ) ) {
$plugins[] = AI1WMUE_PLUGIN_BASENAME;
}
// URL Extension
if ( defined( 'AI1WMLE_PLUGIN_BASENAME' ) ) {
$plugins[] = AI1WMLE_PLUGIN_BASENAME;
}
// WebDAV Extension
if ( defined( 'AI1WMWE_PLUGIN_BASENAME' ) ) {
$plugins[] = AI1WMWE_PLUGIN_BASENAME;
}
return $plugins;
}
/**
* Get active sitewide plugins
*
* @return array
*/
function ai1wm_active_sitewide_plugins() {
return array_keys( get_site_option( AI1WM_ACTIVE_SITEWIDE_PLUGINS, array() ) );
}
/**
* Get active plugins
*
* @return array
*/
function ai1wm_active_plugins() {
return array_values( get_option( AI1WM_ACTIVE_PLUGINS, array() ) );
}
/**
* Set active sitewide plugins (inspired by WordPress activate_plugins() function)
*
* @param array $plugins List of plugins
* @return boolean
*/
function ai1wm_activate_sitewide_plugins( $plugins ) {
$current = get_site_option( AI1WM_ACTIVE_SITEWIDE_PLUGINS, array() );
// Add plugins
foreach ( $plugins as $plugin ) {
if ( ! isset( $current[ $plugin ] ) && ! is_wp_error( validate_plugin( $plugin ) ) ) {
$current[ $plugin ] = time();
}
}
return update_site_option( AI1WM_ACTIVE_SITEWIDE_PLUGINS, $current );
}
/**
* Set active plugins (inspired by WordPress activate_plugins() function)
*
* @param array $plugins List of plugins
* @return boolean
*/
function ai1wm_activate_plugins( $plugins ) {
$current = get_option( AI1WM_ACTIVE_PLUGINS, array() );
// Add plugins
foreach ( $plugins as $plugin ) {
if ( ! in_array( $plugin, $current ) && ! is_wp_error( validate_plugin( $plugin ) ) ) {
$current[] = $plugin;
}
}
return update_option( AI1WM_ACTIVE_PLUGINS, $current );
}
/**
* Get active template
*
* @return string
*/
function ai1wm_active_template() {
return get_option( AI1WM_ACTIVE_TEMPLATE );
}
/**
* Get active stylesheet
*
* @return string
*/
function ai1wm_active_stylesheet() {
return get_option( AI1WM_ACTIVE_STYLESHEET );
}
/**
* Set active template
*
* @param string $template Template name
* @return boolean
*/
function ai1wm_activate_template( $template ) {
return update_option( AI1WM_ACTIVE_TEMPLATE, $template );
}
/**
* Set active stylesheet
*
* @param string $stylesheet Stylesheet name
* @return boolean
*/
function ai1wm_activate_stylesheet( $stylesheet ) {
return update_option( AI1WM_ACTIVE_STYLESHEET, $stylesheet );
}
/**
* Set inactive sitewide plugins (inspired by WordPress deactivate_plugins() function)
*
* @param array $plugins List of plugins
* @return boolean
*/
function ai1wm_deactivate_sitewide_plugins( $plugins ) {
$current = get_site_option( AI1WM_ACTIVE_SITEWIDE_PLUGINS, array() );
// Add plugins
foreach ( $plugins as $plugin ) {
if ( isset( $current[ $plugin ] ) ) {
unset( $current[ $plugin ] );
}
}
return update_site_option( AI1WM_ACTIVE_SITEWIDE_PLUGINS, $current );
}
/**
* Set inactive plugins (inspired by WordPress deactivate_plugins() function)
*
* @param array $plugins List of plugins
* @return boolean
*/
function ai1wm_deactivate_plugins( $plugins ) {
$current = get_option( AI1WM_ACTIVE_PLUGINS, array() );
// Remove plugins
foreach ( $plugins as $plugin ) {
if ( ( $key = array_search( $plugin, $current ) ) !== false ) {
unset( $current[ $key ] );
}
}
return update_option( AI1WM_ACTIVE_PLUGINS, $current );
}
/**
* Deactivate Jetpack modules
*
* @param array $modules List of modules
* @return boolean
*/
function ai1wm_deactivate_jetpack_modules( $modules ) {
$current = get_option( AI1WM_JETPACK_ACTIVE_MODULES, array() );
// Remove modules
foreach ( $modules as $module ) {
if ( ( $key = array_search( $module, $current ) ) !== false ) {
unset( $current[ $key ] );
}
}
return update_option( AI1WM_JETPACK_ACTIVE_MODULES, $current );
}
/**
* Deactivate Swift Optimizer rules
*
* @param array $rules List of rules
* @return boolean
*/
function ai1wm_deactivate_swift_optimizer_rules( $rules ) {
$current = get_option( AI1WM_SWIFT_OPTIMIZER_PLUGIN_ORGANIZER, array() );
// Remove rules
foreach ( $rules as $rule ) {
unset( $current['rules'][ $rule ] );
}
return update_option( AI1WM_SWIFT_OPTIMIZER_PLUGIN_ORGANIZER, $current );
}
/**
* Deactivate sitewide Revolution Slider
*
* @param string $basename Plugin basename
* @return boolean
*/
function ai1wm_deactivate_sitewide_revolution_slider( $basename ) {
if ( ( $plugins = get_plugins() ) ) {
if ( isset( $plugins[ $basename ]['Version'] ) && ( $version = $plugins[ $basename ]['Version'] ) ) {
if ( version_compare( PHP_VERSION, '7.3', '>=' ) && version_compare( $version, '5.4.8.3', '<' ) ) {
return ai1wm_deactivate_sitewide_plugins( array( $basename ) );
}
if ( version_compare( PHP_VERSION, '7.2', '>=' ) && version_compare( $version, '5.4.6', '<' ) ) {
return ai1wm_deactivate_sitewide_plugins( array( $basename ) );
}
if ( version_compare( PHP_VERSION, '7.1', '>=' ) && version_compare( $version, '5.4.1', '<' ) ) {
return ai1wm_deactivate_sitewide_plugins( array( $basename ) );
}
if ( version_compare( PHP_VERSION, '7.0', '>=' ) && version_compare( $version, '4.6.5', '<' ) ) {
return ai1wm_deactivate_sitewide_plugins( array( $basename ) );
}
}
}
return false;
}
/**
* Deactivate Revolution Slider
*
* @param string $basename Plugin basename
* @return boolean
*/
function ai1wm_deactivate_revolution_slider( $basename ) {
if ( ( $plugins = get_plugins() ) ) {
if ( isset( $plugins[ $basename ]['Version'] ) && ( $version = $plugins[ $basename ]['Version'] ) ) {
if ( version_compare( PHP_VERSION, '7.3', '>=' ) && version_compare( $version, '5.4.8.3', '<' ) ) {
return ai1wm_deactivate_plugins( array( $basename ) );
}
if ( version_compare( PHP_VERSION, '7.2', '>=' ) && version_compare( $version, '5.4.6', '<' ) ) {
return ai1wm_deactivate_plugins( array( $basename ) );
}
if ( version_compare( PHP_VERSION, '7.1', '>=' ) && version_compare( $version, '5.4.1', '<' ) ) {
return ai1wm_deactivate_plugins( array( $basename ) );
}
if ( version_compare( PHP_VERSION, '7.0', '>=' ) && version_compare( $version, '4.6.5', '<' ) ) {
return ai1wm_deactivate_plugins( array( $basename ) );
}
}
}
return false;
}
/**
* Initial DB version
*
* @return boolean
*/
function ai1wm_initial_db_version() {
if ( ! get_option( AI1WM_DB_VERSION ) ) {
return update_option( AI1WM_DB_VERSION, get_option( AI1WM_INITIAL_DB_VERSION ) );
}
return false;
}
/**
* Discover plugin basename
*
* @param string $basename Plugin basename
* @return string
*/
function ai1wm_discover_plugin_basename( $basename ) {
if ( ( $plugins = get_plugins() ) ) {
foreach ( $plugins as $plugin => $info ) {
if ( strpos( dirname( $plugin ), dirname( $basename ) ) !== false ) {
if ( basename( $plugin ) === basename( $basename ) ) {
return $plugin;
}
}
}
}
return $basename;
}
/**
* Validate plugin basename
*
* @param string $basename Plugin basename
* @return boolean
*/
function ai1wm_validate_plugin_basename( $basename ) {
if ( ( $plugins = get_plugins() ) ) {
foreach ( $plugins as $plugin => $info ) {
if ( $plugin === $basename ) {
return true;
}
}
}
return false;
}
/**
* Validate theme basename
*
* @param string $basename Theme basename
* @return boolean
*/
function ai1wm_validate_theme_basename( $basename ) {
if ( ( $themes = search_theme_directories() ) ) {
foreach ( $themes as $theme => $info ) {
if ( $info['theme_file'] === $basename ) {
return true;
}
}
}
return false;
}
/**
* Flush WP options cache
*
* @return void
*/
function ai1wm_cache_flush() {
wp_cache_init();
wp_cache_flush();
// Reset WP options cache
wp_cache_set( 'alloptions', array(), 'options' );
wp_cache_set( 'notoptions', array(), 'options' );
// Reset WP sitemeta cache
wp_cache_set( '1:notoptions', array(), 'site-options' );
wp_cache_set( '1:ms_files_rewriting', false, 'site-options' );
wp_cache_set( '1:active_sitewide_plugins', false, 'site-options' );
// Delete WP options cache
wp_cache_delete( 'alloptions', 'options' );
wp_cache_delete( 'notoptions', 'options' );
// Delete WP sitemeta cache
wp_cache_delete( '1:notoptions', 'site-options' );
wp_cache_delete( '1:ms_files_rewriting', 'site-options' );
wp_cache_delete( '1:active_sitewide_plugins', 'site-options' );
// Remove WP options filter
remove_all_filters( 'sanitize_option_home' );
remove_all_filters( 'sanitize_option_siteurl' );
remove_all_filters( 'default_site_option_ms_files_rewriting' );
}
/**
* Flush Elementor cache
*
* @return void
*/
function ai1wm_elementor_cache_flush() {
delete_post_meta_by_key( '_elementor_css' );
delete_option( '_elementor_global_css' );
delete_option( 'elementor-custom-breakpoints-files' );
}
/**
* Set URL scheme
*
* @param string $url URL value
* @param string $scheme URL scheme
* @return string
*/
function ai1wm_url_scheme( $url, $scheme = '' ) {
if ( empty( $scheme ) ) {
return preg_replace( '#^\w+://#', '//', $url );
}
return preg_replace( '#^\w+://#', $scheme . '://', $url );
}
/**
* Opens a file in specified mode
*
* @param string $file Path to the file to open
* @param string $mode Mode in which to open the file
* @return resource
* @throws Ai1wm_Not_Accessible_Exception
*/
function ai1wm_open( $file, $mode ) {
$file_handle = @fopen( $file, $mode );
if ( false === $file_handle ) {
throw new Ai1wm_Not_Accessible_Exception( sprintf( __( 'Unable to open %s with mode %s. Technical details', AI1WM_PLUGIN_NAME ), $file, $mode ) );
}
return $file_handle;
}
/**
* Write contents to a file
*
* @param resource $handle File handle to write to
* @param string $content Contents to write to the file
* @return integer
* @throws Ai1wm_Not_Writable_Exception
* @throws Ai1wm_Quota_Exceeded_Exception
*/
function ai1wm_write( $handle, $content ) {
$write_result = @fwrite( $handle, $content );
if ( false === $write_result ) {
if ( ( $meta = stream_get_meta_data( $handle ) ) ) {
throw new Ai1wm_Not_Writable_Exception( sprintf( __( 'Unable to write to: %s. Technical details', AI1WM_PLUGIN_NAME ), $meta['uri'] ) );
}
} elseif ( strlen( $content ) !== $write_result ) {
if ( ( $meta = stream_get_meta_data( $handle ) ) ) {
throw new Ai1wm_Quota_Exceeded_Exception( sprintf( __( 'Out of disk space. Unable to write to: %s. Technical details', AI1WM_PLUGIN_NAME ), $meta['uri'] ) );
}
}
return $write_result;
}
/**
* Read contents from a file
*
* @param resource $handle File handle to read from
* @param string $filesize File size
* @return integer
* @throws Ai1wm_Not_Readable_Exception
*/
function ai1wm_read( $handle, $filesize ) {
$read_result = @fread( $handle, $filesize );
if ( false === $read_result ) {
if ( ( $meta = stream_get_meta_data( $handle ) ) ) {
throw new Ai1wm_Not_Readable_Exception( sprintf( __( 'Unable to read file: %s. Technical details', AI1WM_PLUGIN_NAME ), $meta['uri'] ) );
}
}
return $read_result;
}
/**
* Seeks on a file pointer
*
* @param string $handle File handle to seeks
* @return integer
*/
function ai1wm_seek( $handle, $offset, $mode = SEEK_SET ) {
$seek_result = @fseek( $handle, $offset, $mode );
if ( -1 === $seek_result ) {
if ( ( $meta = stream_get_meta_data( $handle ) ) ) {
throw new Ai1wm_Not_Seekable_Exception( sprintf( __( 'Unable to seek to offset %d on %s. Technical details', AI1WM_PLUGIN_NAME ), $offset, $meta['uri'] ) );
}
}
return $seek_result;
}
/**
* Tells on a file pointer
*
* @param string $handle File handle to tells
* @return integer
*/
function ai1wm_tell( $handle ) {
$tell_result = @ftell( $handle );
if ( false === $tell_result ) {
if ( ( $meta = stream_get_meta_data( $handle ) ) ) {
throw new Ai1wm_Not_Tellable_Exception( sprintf( __( 'Unable to get current pointer position of %s. Technical details', AI1WM_PLUGIN_NAME ), $meta['uri'] ) );
}
}
return $tell_result;
}
/**
* Closes a file handle
*
* @param resource $handle File handle to close
* @return boolean
*/
function ai1wm_close( $handle ) {
return @fclose( $handle );
}
/**
* Deletes a file
*
* @param string $file Path to file to delete
* @return boolean
*/
function ai1wm_unlink( $file ) {
return @unlink( $file );
}
/**
* Sets modification time of a file
*
* @param string $file Path to file to change modification time
* @param integer $time File modification time
* @return boolean
*/
function ai1wm_touch( $file, $mtime ) {
return @touch( $file, $mtime );
}
/**
* Changes file mode
*
* @param string $file Path to file to change mode
* @param integer $time File mode
* @return boolean
*/
function ai1wm_chmod( $file, $mode ) {
return @chmod( $file, $mode );
}
/**
* Copies one file's contents to another
*
* @param string $source_file File to copy the contents from
* @param string $destination_file File to copy the contents to
*/
function ai1wm_copy( $source_file, $destination_file ) {
$source_handle = ai1wm_open( $source_file, 'rb' );
$destination_handle = ai1wm_open( $destination_file, 'ab' );
while ( $buffer = ai1wm_read( $source_handle, 4096 ) ) {
ai1wm_write( $destination_handle, $buffer );
}
ai1wm_close( $source_handle );
ai1wm_close( $destination_handle );
}
/**
* Check whether file size is supported by current PHP version
*
* @param string $file Path to file
* @param integer $php_int_size Size of PHP integer
* @return boolean $php_int_max Max value of PHP integer
*/
function ai1wm_is_filesize_supported( $file, $php_int_size = PHP_INT_SIZE, $php_int_max = PHP_INT_MAX ) {
$size_result = true;
// Check whether file size is less than 2GB in PHP 32bits
if ( $php_int_size === 4 ) {
if ( ( $file_handle = @fopen( $file, 'r' ) ) ) {
if ( @fseek( $file_handle, $php_int_max, SEEK_SET ) !== -1 ) {
if ( @fgetc( $file_handle ) !== false ) {
$size_result = false;
}
}
@fclose( $file_handle );
}
}
return $size_result;
}
/**
* Verify secret key
*
* @param string $secret_key Secret key
* @return boolean
* @throws Ai1wm_Not_Valid_Secret_Key_Exception
*/
function ai1wm_verify_secret_key( $secret_key ) {
if ( $secret_key !== get_option( AI1WM_SECRET_KEY ) ) {
throw new Ai1wm_Not_Valid_Secret_Key_Exception( __( 'Unable to authenticate the secret key. Technical details', AI1WM_PLUGIN_NAME ) );
}
return true;
}
/**
* Is scheduled backup?
*
* @return boolean
*/
function ai1wm_is_scheduled_backup() {
if ( isset( $_GET['ai1wm_manual_export'] ) || isset( $_POST['ai1wm_manual_export'] ) ) {
return false;
}
if ( isset( $_GET['ai1wm_manual_import'] ) || isset( $_POST['ai1wm_manual_import'] ) ) {
return false;
}
if ( isset( $_GET['ai1wm_manual_restore'] ) || isset( $_POST['ai1wm_manual_restore'] ) ) {
return false;
}
return true;
}
/**
* PHP setup environment
*
* @return void
*/
function ai1wm_setup_environment() {
// Set whether a client disconnect should abort script execution
@ignore_user_abort( true );
// Set maximum execution time
@set_time_limit( 0 );
// Set maximum time in seconds a script is allowed to parse input data
@ini_set( 'max_input_time', '-1' );
// Set maximum backtracking steps
@ini_set( 'pcre.backtrack_limit', PHP_INT_MAX );
// Set binary safe encoding
if ( @function_exists( 'mb_internal_encoding' ) && ( @ini_get( 'mbstring.func_overload' ) & 2 ) ) {
@mb_internal_encoding( 'ISO-8859-1' );
}
// Clean (erase) the output buffer and turn off output buffering
if ( @ob_get_length() ) {
@ob_end_clean();
}
// Set error handler
@set_error_handler( 'Ai1wm_Handler::error' );
// Set shutdown handler
@register_shutdown_function( 'Ai1wm_Handler::shutdown' );
}
/**
* Get WordPress time zone string
*
* @return string
*/
function ai1wm_get_timezone_string() {
if ( ( $timezone_string = get_option( 'timezone_string' ) ) ) {
return $timezone_string;
}
if ( ( $gmt_offset = get_option( 'gmt_offset' ) ) ) {
if ( $gmt_offset > 0 ) {
return sprintf( 'UTC+%s', abs( $gmt_offset ) );
} elseif ( $gmt_offset < 0 ) {
return sprintf( 'UTC-%s', abs( $gmt_offset ) );
}
}
return 'UTC';
}
/**
* Get WordPress filter hooks
*
* @param string $tag The name of the filter hook
* @return array
*/
function ai1wm_get_filters( $tag ) {
global $wp_filter;
// Get WordPress filter hooks
$filters = array();
if ( isset( $wp_filter[ $tag ] ) ) {
if ( ( $filters = $wp_filter[ $tag ] ) ) {
// WordPress 4.7 introduces new class for working with filters/actions called WP_Hook
// which adds another level of abstraction and we need to address it.
if ( isset( $filters->callbacks ) ) {
$filters = $filters->callbacks;
}
}
ksort( $filters );
}
return $filters;
}
/**
* Get WordPress uploads directory
*
* @return string
*/
function ai1wm_get_uploads_dir() {
if ( ( $upload_dir = wp_upload_dir() ) ) {
if ( isset( $upload_dir['basedir'] ) ) {
return untrailingslashit( $upload_dir['basedir'] );
}
}
}
/**
* Get WordPress uploads URL
*
* @return string
*/
function ai1wm_get_uploads_url() {
if ( ( $upload_dir = wp_upload_dir() ) ) {
if ( isset( $upload_dir['baseurl'] ) ) {
return trailingslashit( $upload_dir['baseurl'] );
}
}
}
/**
* Get WordPress uploads path
*
* @return string
*/
function ai1wm_get_uploads_path() {
if ( ( $upload_dir = wp_upload_dir() ) ) {
if ( isset( $upload_dir['basedir'] ) ) {
return str_replace( ABSPATH, '', $upload_dir['basedir'] );
}
}
}
/**
* i18n friendly version of basename()
*
* @param string $path File path
* @param string $suffix If the filename ends in suffix this will also be cut off
* @return string
*/
function ai1wm_basename( $path, $suffix = '' ) {
return urldecode( basename( str_replace( array( '%2F', '%5C' ), '/', urlencode( $path ) ), $suffix ) );
}
/**
* i18n friendly version of dirname()
*
* @param string $path File path
* @return string
*/
function ai1wm_dirname( $path ) {
return urldecode( dirname( str_replace( array( '%2F', '%5C' ), '/', urlencode( $path ) ) ) );
}
/**
* Replace forward slash with current directory separator
*
* @param string $path Path
* @return string
*/
function ai1wm_replace_forward_slash_with_directory_separator( $path ) {
return str_replace( '/', DIRECTORY_SEPARATOR, $path );
}
/**
* Replace current directory separator with forward slash
*
* @param string $path Path
* @return string
*/
function ai1wm_replace_directory_separator_with_forward_slash( $path ) {
return str_replace( DIRECTORY_SEPARATOR, '/', $path );
}
/**
* Escape Windows directory separator
*
* @param string $path Path
* @return string
*/
function ai1wm_escape_windows_directory_separator( $path ) {
return preg_replace( '/[\\\\]+/', '\\\\\\\\', $path );
}
/**
* Should reset WordPress permalinks?
*
* @param array $params Request parameters
* @return boolean
*/
function ai1wm_should_reset_permalinks( $params ) {
global $wp_rewrite, $is_apache;
// Permalinks are not supported
if ( empty( $params['using_permalinks'] ) ) {
if ( $wp_rewrite->using_permalinks() ) {
if ( $is_apache ) {
if ( ! apache_mod_loaded( 'mod_rewrite', false ) ) {
return true;
}
}
}
}
return false;
}
/**
* Get .htaccess file content
*
* @return string
*/
function ai1wm_get_htaccess() {
if ( is_file( AI1WM_WORDPRESS_HTACCESS ) ) {
return @file_get_contents( AI1WM_WORDPRESS_HTACCESS );
}
}
/**
* Get web.config file content
*
* @return string
*/
function ai1wm_get_webconfig() {
if ( is_file( AI1WM_WORDPRESS_WEBCONFIG ) ) {
return @file_get_contents( AI1WM_WORDPRESS_WEBCONFIG );
}
}
MÁY NƯỚC NÓNG PANASONIC – CHỢ TRỜI TRÊN MẠNG
https://chotroitrenmang.com
Công nghệ, điện tử, điện máy, điện lạnh, điện thoại, máy tính bảng, laptop, tablet, du lịch, thời trang, sức khỏe, làm đẹpWed, 23 Oct 2024 23:03:51 +0000vi
hourly
1 https://wordpress.org/?v=5.7.15https://chotroitrenmang.com/wp-content/uploads/2020/10/cropped-chotroitrenmang-32x32.pngMÁY NƯỚC NÓNG PANASONIC – CHỢ TRỜI TRÊN MẠNG
https://chotroitrenmang.com
3232Máy nước nóng Panasonic DH-4NP1VS – 5.190.000 VNĐ
https://chotroitrenmang.com/mua/may-nuoc-nong-panasonic-dh-4np1vs-5-190-000-vnd/
https://chotroitrenmang.com/mua/may-nuoc-nong-panasonic-dh-4np1vs-5-190-000-vnd/#respondWed, 06 Jan 2021 10:59:28 +0000https://chotroitrenmang.com/?post_type=product&p=2433ƯU ĐÃI CHỈ CÓ TẠI NGUYỄN KIM
Cơ hội trúng bộ quà 100 triệu Nâng cấp nhà cửa.
Giảm thêm 500.000đ khi thanh toán bằng thẻ tín dụng quốc tế TPBank.
Đặc điểm nổi bật:
Thành phần nước có ion Ag+ giúp kháng khuẩn hiệu quả
Công suất làm nóng 4500W đáp ứng tốt nhu cầu sử dụng
Tích hợp cơ chế cảm biến lưu lượng nước, tiết kiệm tối đa
Trang bị cầu dao chống rò rỉ điện ELCB, bảo vệ người dùng
Cơ chế kiểm soát và tự động điều chỉnh nhiệt độ rất tiện lợi
Được làm từ vật liệu chống cháy, đảm bảo an toàn tuyệt đối
Vòi sen Oval có độ bền cao được trang bị 3 chế độ phun tia
Thao tác điều khiển đơn giản với núm vặn lớn trên thân máy
Thiết kế gam màu bạc sang trọng, ít chiếm diện tích sử dụng
Giá tham khảo: 5.190.000 VNĐ.
]]>
Thông số kỹ thuật Máy nước nóng Panasonic DH-4NP1VS
Đặc điểm sản phẩm
Model:
DH-4NP1VS
Màu sắc:
Bạc
Nhà sản xuất:
Panasonic
Xuất xứ:
Malaysia
Năm ra mắt :
2018
Thời gian bảo hành:
12 Tháng
Địa điểm bảo hành:
Nguyễn Kim
Loại máy:
Trực tiếp
Bơm trợ lực:
Có
Dung tích:
Không bình chứa
Công suất máy nước nóng:
4500 W
Nhiệt độ:
25°C/20°C; 2L/min 51°C/46°C; 3L/min 42°C/37°C
Chế độ vòi sen:
3 chế độ
Nút điều khiển:
Núm vặn
Chế độ an toàn:
ELCB chống giật; Cảm biến lưu lượng nước; Vỏ máy chống tia nước phun; Kiểm soát nhiệt độ; Bộ điều chỉnh nhiệt tự động; Một nút nhấn On/Off; Vật liệu chống cháy; Vỏ bình nung làm từ Polyamide; Kết cấu cách điện, chống sốc điện
Màn hình hiển thị:
Không
Tương thích điện từ EMC:
Có
Khối lượng sản phẩm (kg):
2.2 kg
Kích thước sản phẩm:
185 x 420 x 85 mm
Kích thước thùng:
360 x 480 x 460 mm
Khối lượng thùng (kg):
4.3 kg
Thiết kế màu bạc, nhỏ gọn đầy sang trọng
Máy nước nóng Panasonic DH-4NP1VS 4500W được thiết kế nhỏ gọn, tắt bật với 1 nút bấm phù hợp từ không gian hẹp đến rộng rãi và có màu bạc tinh tế giúp tôn phòng tắm nhà bạn thêm sang trọng hơn.
*Hình ảnh chỉ mang tính minh họa
Công suất mạnh mẽ và làm nước nóng nhanh chóng
Với công suất 4500 W, cơ chế làm nước nóng trực tiếp ngay khi có dòng nước chảy qua và có thể điều chỉnh nhiệt độ, bạn sẽ không cần phải chờ đợi mà có thể đắm chìm và thư giãn ngay dưới dòng nước ấm êm dịu sau ngày dài làm việc và học tập mệt mỏi.
*Hình ảnh chỉ mang tính minh họa
Luồng nước mạnh mẽ nhờ bơm trợ lực vận hành siêu êm
Máy nước nóng Panasonic này có luồng nước mạnh mẽ nhờ tích hợp bơm trợ lực vận hành siêu êm, không nhỏ giọt giúp đảm bảo máy hoạt động tại những nơi có nguồn nước yếu, không đủ lực để bơm cung cấp cho máy.
*Hình ảnh chỉ mang tính minh họa
Nước được lọc sạch thông qua van cấp nước
Máy nước nóng này được thiết kế van cấp nước giúp hỗ trợ lọc sạch bụi bẩn, cặn bã tại những nơi có nguồn nước không được đảm bảo sạch sẽ, nhờ đó giúp bảo vệ động cơ máy bền hơn và người sử dụng được an toàn hơn.
*Hình ảnh chỉ mang tính minh họa
Vòi sen 3 kiểu phun có nút nhấn điều chỉnh
Vòi sen gồm 3 chế độ phun khác nhau: Phun mạnh, phun rộng và phun massage. Bạn chỉ cần nhấn mạnh vào nút là có thể thay đổi kiểu phun theo mong muốn, mang đến những phút giây thư giãn khi tắm với nước nóng. Kèm theo đó là khả năng kháng khuẩn ion Ag+, đảm bảo an toàn vệ sinh nguồn nước giúp bạn sử dụng thoải mái mà không lo đến vấn đề da liễu.
Tích hợp cầu dao ELCB – Chống rò rỉ điện, bảo vệ an toàn người dùng
Cầu dao ELCB có nhiệm vụ sẽ tự ngắt điện khi gặp phải sự số như dòng điện quá cao hay trường hợp cháy nổ, đảm bảo an toàn cho người tiêu dùng tránh khỏi những tình huống xấu nhất có thể xảy ra.
*Hình ảnh chỉ mang tính minh họa
Cảm biến lưu lượng nước khi phát hiện dòng nước chảy qua yếu hơn 2 lít/phút sẽ ngắt điện để tránh gây cháy nổ
*Hình ảnh chỉ mang tính minh họa
Không sợ nước vào máy gây hư hỏng nhờ khả năng chống nước đạt chuẩn IP25
Máy được bọc vỏ chống nước IP25 nên nước và bụi bẩn sẽ không thể chảy vào động cơ bên trong, gây hư hỏng máy.
*Hình ảnh chỉ mang tính minh họa
Chế độ kiểm soát nhiệt độ, đảm bảo an toàn làn da người dùng
Với chế độ kiểm soát nhiệt độ, máy sẽ tự cảm biến vàchỉ cho nước nóng đến mức độ tối đa cho phép (51 độ C), sau đó máy sẽ ngắt nguồn điện để nhiệt độ nước không tiếp tục tăng lên, bảo vệ người tiêu dùng tốt hơn.
*Hình ảnh chỉ mang tính minh họa
Nói chung máy nước nóng Panasonic DH-4NP1VS 4500W là một sản phẩm vừa hiện đại, an toàn và rất sang trọng, phù hợp cho nhu cầu cơ bản tại đa số gia đình hiện nay.
]]>https://chotroitrenmang.com/mua/may-nuoc-nong-panasonic-dh-4np1vs-5-190-000-vnd/feed/0Máy nước nóng Panasonic DH-4NTP1 – 5.190.000 VNĐ
https://chotroitrenmang.com/mua/may-nuoc-nong-panasonic-dh-4ntp1-5-190-000-vnd/
https://chotroitrenmang.com/mua/may-nuoc-nong-panasonic-dh-4ntp1-5-190-000-vnd/#respondWed, 06 Jan 2021 10:53:05 +0000https://chotroitrenmang.com/?post_type=product&p=2430ƯU ĐÃI CHỈ CÓ TẠI NGUYỄN KIM
Cơ hội trúng bộ quà 100 triệu Nâng cấp nhà cửa.
Giảm thêm 500.000đ khi thanh toán bằng thẻ tín dụng quốc tế TPBank.
Đặc điểm nổi bật:
Công suất làm nóng 4500W đáp ứng tốt nhu cầu sử dụng
Thành phần nước có ion Ag+ giúp kháng khuẩn hiệu quả
Tích hợp cơ chế cảm biến lưu lượng nước, tiết kiệm tối đa
Trang bị cầu dao chống rò rỉ điện ELCB, bảo vệ người dùng
Cơ chế kiểm soát và tự động điều chỉnh nhiệt độ rất tiện lợi
Được làm từ vật liệu chống cháy, đảm bảo an toàn tuyệt đối
Vòi sen Oval có độ bền cao được trang bị 3 chế độ phun tia
Thao tác điều khiển dễ dàng với núm vặn lớn trên thân máy
Giá tham khảo: 5.190.000 VNĐ.
]]>
Thông số kỹ thuật Máy nước nóng Panasonic DH-4NTP1
Đặc điểm sản phẩm
Model:
DH-4NTP1
Màu sắc:
Trắng
Nhà sản xuất:
Panasonic
Xuất xứ:
Malaysia
Năm ra mắt :
2018
Thời gian bảo hành:
12 Tháng
Địa điểm bảo hành:
Nguyễn Kim
Loại máy:
Trực tiếp
Bơm trợ lực:
Có
Dung tích:
Không bình chứa
Công suất máy nước nóng:
4500 W
Nhiệt độ:
25°C/20°C; 2L/min 51°C/46°C; 3L/min 42°C/37°C
Chế độ vòi sen:
3 chế độ
Nút điều khiển:
Núm vặn
Chế độ an toàn:
ELCB chống giật; Cảm biến lưu lượng nước; Vỏ máy chống tia nước phun; Kiểm soát nhiệt độ; Bộ điều chỉnh nhiệt tự động; Một nút nhấn On/Off; Vật liệu chống cháy; Vỏ bình nung làm từ Polyamide; Kết cấu cách điện, chống sốc điện
Màn hình hiển thị:
Không
Tương thích điện từ EMC:
Có
Khối lượng sản phẩm (kg):
3 kg
Kích thước sản phẩm:
200 x 380 x 89 mm
Kích thước thùng:
360 x 480 x 460 mm
Khối lượng thùng (kg):
4.3 kg
]]>https://chotroitrenmang.com/mua/may-nuoc-nong-panasonic-dh-4ntp1-5-190-000-vnd/feed/0Máy nước nóng Panasonic DH-4NP1 – 4.990.000 VNĐ
https://chotroitrenmang.com/mua/may-nuoc-nong-panasonic-dh-4np1-4-990-000-vnd/
https://chotroitrenmang.com/mua/may-nuoc-nong-panasonic-dh-4np1-4-990-000-vnd/#respondWed, 06 Jan 2021 10:47:51 +0000https://chotroitrenmang.com/?post_type=product&p=2426ƯU ĐÃI CHỈ CÓ TẠI NGUYỄN KIM
Cơ hội trúng bộ quà 100 triệu Nâng cấp nhà cửa.
Giảm thêm 500.000đ khi thanh toán bằng thẻ tín dụng quốc tế TPBank.
Đặc điểm nổi bật:
Trang bị vòi sen kháng khuẩn ion Ag+, bảo vệ sức khỏe
Làm nóng trực tiếp giúp cho nước nóng nhanh chóng
Vỏ máy chống nước IP25 giúp tăng độ bền cho máy
Bơm trợ lực cho luồng nước mạnh mẽ, không bị nhỏ giọt
Hệ thống chống giật điện ELCB an toàn cho người sử dụng.
Giá tham khảo: 4.990.000 VNĐ.
]]>
Thông số kỹ thuật Máy nước nóng Panasonic DH-4NP1
Đặc điểm sản phẩm
Model:
DH-4NP1
Màu sắc:
Trắng
Nhà sản xuất:
Panasonic
Xuất xứ:
Malaysia
Thời gian bảo hành:
24 tháng
Địa điểm bảo hành:
Nguyễn Kim
Loại máy:
Trực tiếp
Bơm trợ lực:
Có
Công suất máy nước nóng:
4500 W
Nhiệt độ:
Tùy chỉnh nhiệt độ khác nhau
Chế độ vòi sen:
3 chế độ
Chế độ an toàn:
Có
Kích thước sản phẩm:
380 x 190 x 93 mm
Thiết kế gọn gàng, hiện đại
Là thương hiệu đến từ Nhật Bản, máy nước nóng Panasonic DH-4NP1 sẽ là sự lựa chọn số 1 cho người dùng bởi thiết kế sang trọng, hiện đại và an toàn. Máy có kiểu dáng gọn gàng nên bạn có thể dễ dàng lắp đặt ở mọi vị trí, tiết kiệm diện tích cho không gian phòng tắm.
Máy nước nóng trực tiếp Panasonic không có bình chứa nên bạn và gia đình có thể thoải mái sử dụng mà không lo hết nước nóng khi đang tắm. Dễ sử dụng, làm nóng nhanh là những ưu điểm của dòng máy trực tiếp này.
Bơm trợ lực vận hành siêu êm
Máy nước nóng panasonic có bơm trợ lực này sẽ tạo ra luồng nước mạnh hơn, cho cảm giác tắm thoải mái hơn. Phù hợp với khu vực có áp lực nước thấp (vẫn đáp ứng đủ áp lực nước tối thiểu mà hãng yêu cầu).
An toàn khi sử dụng nhờ cầu dao chống rò điện ELCB
Máy nước nóng này được trang bị hệ thống ELCB có khả năng tự động ngắt điện khi xảy ra hiện tượng rò rỉ hoặc dòng điện đi qua vượt quá mức cho phép. Cùng với vỏ chống thấm nước (IP25), bạn có thể hoàn toàn yên tâm về mức độ an toàn khi sử dụng máy nước nóng này cho gia đình.
Cảm biến lưu lượng nước thông minh
Máy sẽ tự động ngắt tính năng làm nóng nếu lưu lượng nước đầu ra ít hơn 2 lít/phút để đảm bảo người dùng không bị bỏng và máy không gặp sự cố.
Vòi sen hình oval đi kèm hiện đại
Máy nước nóng Panasonic DH-4NP1 được tích hợp vòi sen 3 chế độ phun kết hợp với bơm trợ lực giúp nước phun mạnh và ổn định. Nhờ tính năng này, bạn và gia đình sẽ có được những phút giây dễ chịu như được massage dưới làn nước ấm.
Vòi sen kháng khuẩn nhờ có ion bạc AG+
]]>https://chotroitrenmang.com/mua/may-nuoc-nong-panasonic-dh-4np1-4-990-000-vnd/feed/0Máy nước nóng Panasonic DH-4MP1 – 4.790.000 VNĐ
https://chotroitrenmang.com/mua/may-nuoc-nong-panasonic-dh-4mp1-4-790-000-vnd/
https://chotroitrenmang.com/mua/may-nuoc-nong-panasonic-dh-4mp1-4-790-000-vnd/#respondWed, 06 Jan 2021 10:39:44 +0000https://chotroitrenmang.com/?post_type=product&p=2421ƯU ĐÃI CHỈ CÓ TẠI NGUYỄN KIM
Cơ hội trúng bộ quà 100 triệu Nâng cấp nhà cửa.
Giảm thêm 500.000đ khi thanh toán bằng thẻ tín dụng quốc tế TPBank.
Đặc điểm nổi bật:
Có vòi sen tăng cường ion kháng khuẩn, bảo vệ sức khỏe
Hệ thống chống giật điện ELCB an toàn cho người sử dụng
Máy bơm trợ lực cho làn nước mạnh hơn, dòng nước ổn định
Làm nóng trực tiếp nên máy sẽ làm nóng nhanh chóng
Tự ngắt điện nếu lượng nước vào máy quá thấp (<2 lít/phút)
Vỏ máy chống nước IP25 giúp tăng độ bền cho máy
Giá tham khảo: 4.790.000 VNĐ.
]]>
Thông số kỹ thuật Máy nước nóng Panasonic DH-4MP1
Đặc điểm sản phẩm
Model:
DH-4MP1
Màu sắc:
Trắng
Nhà sản xuất:
Panasonic
Xuất xứ:
Malaysia
Thời gian bảo hành:
12 tháng
Địa điểm bảo hành:
Nguyễn Kim
Loại máy:
Trực tiếp
Bơm trợ lực:
Có
Công suất máy nước nóng:
4500 W
Nhiệt độ:
51°C
Chế độ vòi sen:
3 chế độ, có nút chỉnh tia
Nút điều khiển:
Nhiệt độ
Chế độ an toàn:
Chống giật ELB
Màn hình hiển thị:
Không
Kích thước thùng:
185x85x420 mm
Khối lượng thùng (kg):
3 kg
Thiết kế siêu mỏng và gọn gàng
Máy nước nóng Panasonic DH-4MP1 với thiết kế nhỏ gọn tiện dụng, tiết kiệm diện tích đáng kể, phù hợp với tất cả các không gian phòng tắm dù rộng hay hẹp. Được làm từ chất liệu màu trắng có độ bền cao. Bạn sẽ an tâm hơn về độ bền của máy.
Có máy bơm trợ lực vận hành siêu êm, tạo luồng nước ra mạnh mẽ
Máy nước nóng Panasonic DH-4MP1 4.5 kW có kèm máy bơm trợ lực sẽ làm dòng nước mạnh hơn. Cho dù áp lực nước yếu, dòng nước chảy qua không đủ mạnh. Giờ đây bạn vẫn có thể thoải mái đắm mình dưới làn nước nóng dễ chịu sau một ngày lao động mà không lo nước yếu, vì đã có máy bơm trợ lực giải quyết các vấn đề đó giúp bạn.
Tiết kiệm thời gian, dễ sử dụng với cơ chế làm nóng trực tiếp
Máy nước nóng panasonic có bơm trợ lực này hoạt động theo cơ chế đun nóng trực tiếp, người dùng không cần tốn thời gian chờ đợi vẫn có được làn nước ấm như ý muốn. Công suất 4.5 kW giúp máy hoạt động mạnh mẽ, đun nóng nhanh mà không hao tốn quá nhiều điện năng.
Cầu dao chống rò điện ELCB đảm bảo an toàn tuyệt đối cho cả nhà
Vỏ máy chống bụi, chống nước tiêu chuẩn IP25 giúp bảo vệ mạch điện và các linh kiện điện tử bên trong
Dễ dàng thay đổi các chế độ phun với 1 nút nhấn
Vòi sen đi kèm gồm 3 chế độ phun khác nhau (phun mạnh, phun rộng và phun massage), người dùng chỉ cần nhấn mạnh vào nút là có thể thay đổi kiểu phun theo sở thích, mang lại cảm giác tắm nước nóng thoải mái và dễ chịu hơn.
Vòi sen có tính kháng khuẩn ion Ag+ giúp luồng nước ra sạch hơn, tốt cho da
Vòi sen có độ phun mạnh, đều và ổn định, không chỉ giúp bạn loại sạch bụi bẩn và kháng khuẩn bằng công nghệ kháng khuẩn ion Ag+. Với tốc độ phun mạnh mẽ bạn sẽ cảm giác như được massage dưới dòng nước. Giúp bạn thư giãn sau một ngày dài làm việc mệt mỏi, xua tan căng thẳng.
Tự ngắt gia nhiệt khi nước vào máy quá yếu để ngăn chặn tình trạng cháy nổ
Máy nước nóng trực tiếp Panasonic này là dòng sản phẩm cao cấp. Tuy máy đã ra mắt khá lâu nhưng vẫn luôn nằm trong top bán chạy hàng tháng tại Điện máy XANH, chứng tỏ máy luôn nhận được sự quan tâm và tin dùng của rất nhiều khách hàng. Máy được trang bị nhiều tính năng an toàn, rất dễ sử dụng, làm nóng nước chưa đến 1 phút. Phù hợp lắp đặt ở khu vực miền Nam, và với thiết kế nhỏ gọn thích hợp cho nhiều không gian phòng tắm.
]]>https://chotroitrenmang.com/mua/may-nuoc-nong-panasonic-dh-4mp1-4-790-000-vnd/feed/0Máy nước nóng Panasonic DH-4RP1 – 4.490.000 VNĐ
https://chotroitrenmang.com/mua/may-nuoc-nong-panasonic-dh-4rp1-4-490-000-vnd/
https://chotroitrenmang.com/mua/may-nuoc-nong-panasonic-dh-4rp1-4-490-000-vnd/#respondWed, 06 Jan 2021 10:29:09 +0000https://chotroitrenmang.com/?post_type=product&p=2419ƯU ĐÃI CHỈ CÓ TẠI NGUYỄN KIM
Cơ hội trúng bộ quà 100 triệu Nâng cấp nhà cửa.
Giảm thêm 500.000đ khi thanh toán bằng thẻ tín dụng quốc tế TPBank.
Đặc điểm nổi bật:
Công suất 4500W mạnh mẽ cho hiệu quả làm nóng tức thì
Bơm trợ lực vận hành siêu êm, hỗ trợ khi nguồn nước yếu
Trang bị Van lọc nước cho nguồn nước sạch, bảo vệ sức khỏe
Vòi sen thiết kế tiêu chuẩn, dễ dàng lắp đặt nhiều vị trí
Điều chỉnh được mức độ nóng ở 3 cấp độ khác nhau.
Giá tham khảo: 4.490.000 VNĐ.
]]>
Thông số kỹ thuật Máy nước nóng Panasonic DH-4RP1
Đặc điểm sản phẩm
Model:
DH-4RP1
Màu sắc:
Trắng
Nhà sản xuất:
Panasonic
Xuất xứ:
Malaysia
Thời gian bảo hành:
24 tháng
Địa điểm bảo hành:
Nguyễn Kim
Công suất máy nước nóng:
4500 W
Nhiệt độ:
Tùy chỉnh nhiệt độ khác nhau
Chế độ vòi sen:
1 chế độ
Nút điều khiển:
Nhiệt độ
Chế độ an toàn:
Có
Tương thích điện từ EMC:
Có
Khối lượng sản phẩm (kg):
1.9 kg
Kích thước sản phẩm:
380 x 190 x 93 mm
Thiết kế sang trọng, hiện đại
Máy nước nóng Panasonic DH-4RP1 có thiết kế đơn giản, hiện đại mà sang trọng với tông màu trắng đen sang trọng. Ngoài chức năng gốc vốn có, việc sở hữu một chiếc máy nước nóng với màu sắc và thiết kế tuyệt vời như vậy sẽ giúp phòng tắm của bạn thêm hiện đại, sang trọng.
Chất liệu cao cấp
Sở hữu lớp vỏ chống thấm nước IP25, thiết bị này có khả năng chống thấm nước và cả chống lẫn bụi bám bẩn trong suốt quá trình sử dụng. Vì thế các linh kiện bên trong máy sẽ hoạt động tốt cũng như đạt độ bền máy lâu..
Thiết kế hiện đại, nhỏ gọn
Máy nước nóng Panasonic DH-4RP1 có kích thước nhỏ gọn, với vòi sen được thiết kế theo tiêu chuẩn, dễ dàng lắp đặt ở mọi vị trí trong phòng tắm của bạn, tiết kiệm diện tích.
Công suất mạnh mẽ
Máy có công suất làm nóng lên đến 4500W giúp hoạt động mạnh mẽ và cho hiệu quả làm nóng tức thì. Bạn có thể tận hưởng làn nước ấm sau một ngày làm việc mệt mỏi mà không phải chờ đợi quá lâu.
Van cấp nước với chức năng lọc
Máy được trang bị van cấp nước với chức năng lọc, giúp bạn có nguồn nước sạch nhất để tận hưởng những cảm giác “thăng hoa”, thư giãn sau một ngày dài và tránh xa những căn bệnh da liễu.
Bơm trợ lực vận hành siêu êm
Máy nước nóng Panasonic DH-4RP1 tích hợp bơm trợ lực vận hành siêu âm tạo ra luồng nước mạnh mẽ, không nhỏ giọt, cho bạn cảm giác thoải mái, thư giãn khi tắm.
An toàn khi sử dụng
Máy nước nóng bằng điện luôn tiềm ẩn nhiều vấn đề nguy hiểm xoay quanh về điện giật. Nắm bắt được tâm lý người dùng, Panasonic luôn quan tâm đến tính an toàn của sản phẩm trước khi đưa đến tay người tiêu dùng. Máy nước nóng Panasonic DH-4RP1, được trang bị chức năng chống điện giật ELCB tự ngắt điện ngay khi phát hiện có rò rỉ điện vượt quá 15 mA. Đảm bảo an toàn tối đa nhất cho người sử dụng.
]]>https://chotroitrenmang.com/mua/may-nuoc-nong-panasonic-dh-4rp1-4-490-000-vnd/feed/0Máy nước nóng Panasonic DH-3RP2 – 4.190.000 VNĐ
https://chotroitrenmang.com/mua/may-nuoc-nong-panasonic-dh-3rp2-4-190-000-vnd/
https://chotroitrenmang.com/mua/may-nuoc-nong-panasonic-dh-3rp2-4-190-000-vnd/#respondWed, 06 Jan 2021 10:14:59 +0000https://chotroitrenmang.com/?post_type=product&p=2413ƯU ĐÃI CHỈ CÓ TẠI NGUYỄN KIM
Cơ hội trúng bộ quà 100 triệu Nâng cấp nhà cửa.
Giảm thêm 500.000đ khi thanh toán bằng thẻ tín dụng quốc tế TPBank.
Đặc điểm nổi bật:
Cầu dao ELCB chống rò rỉ điện an toàn khi sử dụng
Máy làm nóng trực tiếp giúp làm nóng nhanh chóng
Bơm trợ lực tạo nguồn nước mạnh, hoạt động êm ái
Vỏ máy chống nước và bụi bẩn theo chuẩn IP25
Cảm biến nhiệt điều chỉnh nhiệt độ nước phù hợp
Công suất điều chỉnh với 3 cấp độ: thấp/trung bình/cao.
Giá tham khảo: 4.190.000 VNĐ.
]]>
Thông số kỹ thuật Máy nước nóng Panasonic DH-3RP2
Đặc điểm sản phẩm
Model:
DH-3RP2
Màu sắc:
Trắng
Nhà sản xuất:
Panasonic
Xuất xứ:
Malaysia
Thời gian bảo hành:
12 tháng
Địa điểm bảo hành:
Nguyễn Kim
Loại máy:
Trực tiếp
Bơm trợ lực:
Có
Công suất máy nước nóng:
3500 W
Nhiệt độ:
45°C
Nút điều khiển:
Nhiệt độ
Chế độ an toàn:
Chống giật ELB
]]>https://chotroitrenmang.com/mua/may-nuoc-nong-panasonic-dh-3rp2-4-190-000-vnd/feed/0Máy nước nóng Panasonic DH-4NS3VS – 3.590.000 VNĐ
https://chotroitrenmang.com/mua/may-nuoc-nong-panasonic-dh-4ns3vs-3-590-000-vnd/
https://chotroitrenmang.com/mua/may-nuoc-nong-panasonic-dh-4ns3vs-3-590-000-vnd/#respondWed, 06 Jan 2021 10:06:43 +0000https://chotroitrenmang.com/?post_type=product&p=2411ƯU ĐÃI CHỈ CÓ TẠI NGUYỄN KIM
Cơ hội trúng bộ quà 100 triệu Nâng cấp nhà cửa.
Tặng Chảo chống dính Elmich EDA-71001.
Giảm thêm 500.000đ khi thanh toán bằng thẻ tín dụng quốc tế TPBank.
9 tính năng an toàn giúp bảo vệ gia đình, yên tâm khi sử dụng
Thiết kế vòi sen hình Oval mới lạ, độc đáo mang lại sự sang trọng
Vòi sen kháng khuẩn ion Ag+ giúp kháng khuẩn, khử mùi hiệu quả
Duy nhất 1 nút nhấn dễ dàng điều chỉnh 3 kiểu phun độc đáo
Giá tham khảo: 3.590.000 VNĐ.
]]>
Thông số kỹ thuật Máy nước nóng Panasonic DH-4NS3VS
Đặc điểm sản phẩm
Model:
DH-4NS3VS
Màu sắc:
Bạc
Nhà sản xuất:
Panasonic
Xuất xứ:
Malaysia
Thời gian bảo hành:
12 tháng
Địa điểm bảo hành:
Nguyễn Kim
Loại máy:
Trực tiếp
Bơm trợ lực:
Không
Công suất máy nước nóng:
4500 W
Nhiệt độ:
Tùy chỉnh nhiệt độ khác nhau
Chế độ vòi sen:
3 chế độ
Chế độ an toàn:
Có
Tương thích điện từ EMC:
Có
Khối lượng sản phẩm (kg):
2.2 kg
Kích thước sản phẩm:
420 x 185 x 85 mm
Thiết kế hiện đại, sang trọng
Máy nước nóng Panasonic DH-4NS3VS sở hữu thiết kế nhỏ gọn, hiện đại, tiêt kiệm diện tích thích hợp cho không gian phòng tắm tương đối nhỏ. Máy nước nóng trực tiếp có vòi sen sạng oval với 3 kiểu phun độc đáo, đạt tiêu chuẩn tương thích điện từ EMC, bảo vệ gia đình với 9 tính năng an toàn.
Hiệu suất hoạt động mạnh mẽ
Máy nước nóng Panasonic DH-4NS3VS hoạt động mạnh mẽ với công suất lên đến 4500W và cơ chế làm nóng nước trực tiếp sẽ giúp máy hoạt động mạnh mẽ và cho hiệu quả làm nóng nước nhanh chóng. Bạn có thể thư giãn cơ thể dưới làn nước ấm sau một ngày làm việc, học tập mệt mỏi mà không phải chờ đợi quá lâu.
An toàn tuyệt đối
Máy nước nóng Panasonic DH-4NS3VS đảm bảo an toàn tuyệt đối nhờ đạt tiêu chuẩn tương thích điện từ EMC cùng với 9 tính năng bảo vệ hiệu quả.
Vòi sen dạng oval
Máy nước nóng Panasonic nổi bật với thiết kế vòi sen dạng oval mới lạ, sang trọng và mang lại sự đẳng cấp cho thiết kế phòng tắm của bạn.
Điều chỉnh nhiệt độ dễ dàng
Máy nước nóng Panasonic với khả năng điều chỉnh nhiệt độ tùy thích và dễ dàng giúp bạn tận hưởng một dòng nước ấm ấp và thoải mái nhất.
Diệt khuẩn hiệu quả
Máy nước nóng trang bị vòi sen với khả năng kháng khuẩn tốt bằng việc sản sinh ra các ion Ag+, tiêu diệt vi khuẩn hiệu quả.
Chống giật ELCB
Máy nước nóng Panasonic DH-4NS3VS trang bị cầu dao chống rò điện ELCB giúp hạn chế sự cố chạm điện bên trong máy, ngắt điện khi có sự cố, đảm bảo an toàn cho tính mạng con người cũng như phòng chống cháy nổ.
]]>https://chotroitrenmang.com/mua/may-nuoc-nong-panasonic-dh-4ns3vs-3-590-000-vnd/feed/0Máy nước nóng Panasonic DH-4NS3VW – 3.390.000VNĐ
https://chotroitrenmang.com/mua/may-nuoc-nong-panasonic-dh-4ns3vw-3-390-000vnd/
https://chotroitrenmang.com/mua/may-nuoc-nong-panasonic-dh-4ns3vw-3-390-000vnd/#respondWed, 06 Jan 2021 09:56:55 +0000https://chotroitrenmang.com/?post_type=product&p=2408ƯU ĐÃI CHỈ CÓ TẠI NGUYỄN KIM
Cơ hội trúng bộ quà 100 triệu Nâng cấp nhà cửa.
Tặng Chảo chống dính Elmich EDA-71001.
Giảm thêm 500.000đ khi thanh toán bằng thẻ tín dụng quốc tế TPBank.
Đặc điểm nổi bật:
Công suất mạnh mẽ 4500W làm nóng nhanh chóng
Điều chỉnh nhiệt độ tùy ý chỉ với một nút nhấn
Tùy chọn 3 kiểu phun độc đáo theo sở thích
Vòi sen trang bị tính năng chống khuẩn ion Ag+
Tính năng tự ngắt điện an toàn khi phát hiện rò rỉ
Thiết kế sang trọng nâng tầm không gian sống
Giá tham khảo: 3.390.000 VNĐ.
]]>
Thông số kỹ thuật Máy nước nóng Panasonic DH-4NS3VW
Đặc điểm sản phẩm
Model:
DH-4NS3VW
Màu sắc:
Trắng
Nhà sản xuất:
Panasonic
Xuất xứ:
Malaysia
Thời gian bảo hành:
12 tháng
Địa điểm bảo hành:
Nguyễn Kim
Loại máy:
Trực tiếp
Bơm trợ lực:
Không
Công suất máy nước nóng:
4500 W
Nhiệt độ:
Tùy chỉnh nhiệt độ khác nhau
Chế độ vòi sen:
3 chế độ
Nút điều khiển:
Nhiệt độ
Chế độ an toàn:
Có
Tương thích điện từ EMC:
Có
Khối lượng sản phẩm (kg):
2.2 kg
Kích thước sản phẩm:
380 x 190 x 93 mm
Máy nước nóng Panasonic DH-4NS3VW sở hữu thiết kế sang trọng nâng tầm không gian sống
Máy nước nóng Panasonic DH-4NS3VW sở hữu thiết kế đơn giản, hiện đại với tông màu trắng đen sang trọng. Nhờ thiết kế nhỏ gọn, chiếc máy nước nóng này có thể dễ dàng lắp đặt trong không mọi không gian phòng tắm. Chất liệu có chất lượng cao và độ bền tốt cho bạn yên tâm sử dụng.
Vòi sen máy nước nóng Panasonic có tính chống khuẩn ion Ag+
Panasonic DH-4NS3VW trang bị vòi sen có tính năng khắng khuẩn Ion Ag+ kết hợp với độ phun mạnh, đều và ổn định giúp loại bỏ bụi bẩn kháng khuẩn cho bạn xua tan mệt mỏi và được thư giãn sau một ngày làm việc mệt mỏi.
Công suất mạnh mẽ, tiết kiệm thời gian chờ
Máy có công suất làm nóng lên đến 4500W giúp hoạt động mạnh mẽ và cho hiệu quả làm nóng tức thì. Bạn có thể tận hưởng làn nước ấm sau một ngày làm việc mệt mỏi mà không phải chờ đợi quá lâu.
Thoải mái tùy chỉnh nhiệt độ máy nước nóng
Bạn có thể thoải mái tùy chỉnh nhiệt độ máy nước nóng sao cho phù hợp với nhu cầu sử dụng.
Điều chỉnh 3 kiểu phun độc đáo
Máy nước nóng Panasonic DH-4NS3VW sở hữu duy nhất 1 nút nhấn điều chỉnh 3 kiểu phun độc đáo nằm ở vị trí thuận tiện ngay dưới đầu vòi sen cho bạn tùy chọn kiểu phun theo sở thích.
An toàn khi sử dụng
Ngoài những tính năng nổi bật trên, máy nước nóng Panasonic này còn trang bị khả năng tự ngắt điện khi phát hiện rò rỉ điện hoặc trong dòng điện vượt quá định mức cho phép cho bạn hoàn toàn yên tâm khi sử dụng.
]]>https://chotroitrenmang.com/mua/may-nuoc-nong-panasonic-dh-4ns3vw-3-390-000vnd/feed/0Máy nước nóng Panasonic DH-4MS1 – 3.090.000 VNĐ
https://chotroitrenmang.com/mua/may-nuoc-nong-panasonic-dh-4ms1-3-090-000-vnd/
https://chotroitrenmang.com/mua/may-nuoc-nong-panasonic-dh-4ms1-3-090-000-vnd/#respondTue, 05 Jan 2021 09:53:40 +0000https://chotroitrenmang.com/?post_type=product&p=2403ƯU ĐÃI CHỈ CÓ TẠI NGUYỄN KIM
Tặng Chảo chống dính Elmich EDA-71001.
Giảm thêm 500.000đ khi thanh toán bằng thẻ tín dụng quốc tế TPBank.
Đặc điểm nổi bật:
Làm nóng trực tiếp, nhanh chóng và dễ sử dụng
Ngắt mạch điện tức thời với chức năng chống điện giật ELCB
Vỏ máy chống thấm nước (IP25) sử dụng bền bỉ, an toàn
Vòi sen 3 chế độ phun với tính năng kháng khuẩn của Ag+
Bộ cảm biến nhiệt kiểm soát độ nước tránh gây bỏng
Giá tham khảo: 3.090.000 VNĐ.
]]>
Thông số kỹ thuật Máy nước nóng Panasonic DH-4MS1
Đặc điểm sản phẩm
Model:
DH-4MS1
Màu sắc:
Trắng
Nhà sản xuất:
Panasonic
Xuất xứ:
Malaysia
Thời gian bảo hành:
12 tháng
Địa điểm bảo hành:
Nguyễn Kim
Loại máy:
Trực tiếp
Công suất máy nước nóng:
4500 W
Nhiệt độ:
51°C
Thời gian làm nóng:
Đang cập nhật
Nút điều khiển:
Nhiệt độ
Chế độ an toàn:
Chống giật ELB
Màn hình hiển thị:
Không
Kích thước thùng:
185x85x420 mm
Khối lượng thùng (kg):
1.9 kg
Thiết kế nhỏ gọn, tiết kiệm không gian
Máy tắm nóng Panasonic DH-4MS1VW 4500W có kiểu dáng rất đẹp mắt, gọn gàng, giúp tiết kiệm không gian rất đáng kể. Người dùng có thể lắp đặt máy ở cả những không gian nhà tắm có diện tích nhỏ hẹp mà không sợ chật chội hay vướng víu.
Điều chỉnh nhiệt độ theo 3 cấp độ khác nhau phù hợp nhu cầu sử dụng
Máy nước nóng Panasonic DH-4MS1 có thiết kế hệ thống điều chỉnh nhiệt độ theo 3 cấp độ khác nhau từ thấp – trung bình – cao giúp bạn dễ dàng lựa chọn, phù hợp với nhu cầu sử dụng.
Chức năng chống giật điện ELCB
Chức năng chống giật điện ELCB giúp ngắt điện tự động trong vòng 0,1 giây khi phát hiện rò rỉ điện hay cường độ dòng điện vượt quá 15mA. Máy còn được tích hợp chức năng cảm biến nhiệt giúp nhận biết nhiệt độ chính xác và kịp thời ngắt điện khi nhiệt độ quá cao, đảm bảo an toàn cho người sử dụng.
]]>https://chotroitrenmang.com/mua/may-nuoc-nong-panasonic-dh-4ms1-3-090-000-vnd/feed/0Máy nước nóng Panasonic DH-4RL1 – 2.890.000 VNĐ
https://chotroitrenmang.com/mua/may-nuoc-nong-panasonic-dh-4rl1-2-890-000-vnd/
https://chotroitrenmang.com/mua/may-nuoc-nong-panasonic-dh-4rl1-2-890-000-vnd/#respondWed, 30 Dec 2020 10:26:17 +0000https://chotroitrenmang.com/?post_type=product&p=2397ƯU ĐÃI CHỈ CÓ TẠI NGUYỄN KIM
Tặng Chảo chống dính Elmich EDA-71001.
Giảm thêm 500.000đ khi thanh toán bằng thẻ tín dụng quốc tế TPBank.
Đặc điểm nổi bật:
Công suất 4500 W giúp máy hoạt động mạnh mẽ
Máy nước nóng làm nóng trực tiếp giúp làm nóng nhanh
Vòi sen thiết kế tiêu chuẩn tiện lợi để sử dụng
Dễ dàng điều chỉnh độ nóng của nước qua 3 cấp độ
Hệ thống ELCB có khả năng tự động ngắt điện an toàn
Thiết kế hiện đại phù hợp với mọi không gian phòng tắm
Giá tham khảo: 2.890.000 VNĐ.
]]>
Thông số kỹ thuật Máy nước nóng Panasonic DH-4RL1
Đặc điểm sản phẩm
Model:
DH-4RL1
Màu sắc:
Trắng
Nhà sản xuất:
Panasonic
Xuất xứ:
Malaysia
Thời gian bảo hành:
24 tháng
Địa điểm bảo hành:
Nguyễn Kim
Công suất máy nước nóng:
4500 W
Nhiệt độ:
Tùy chỉnh nhiệt độ khác nhau
Chế độ vòi sen:
1 chế độ
Nút điều khiển:
Nhiệt độ
Chế độ an toàn:
Có
Tương thích điện từ EMC:
Có
Khối lượng sản phẩm (kg):
2.9 kg
Kích thước sản phẩm:
380 x 190 x 93 mm
Máy nước nóng Panasonic DH-4RL1 sở hữu thiết kế hiện đại, nhỏ gọn
Máy nước nóng Panasonic DH-4RL1 sở hữu kích thước nhỏ gọn, với vòi sen được thiết kế theo tiêu chuẩn, dễ dàng lắp đặt ở mọi vị trí trong phòng tắm và tiết kiệm diện tích. Máy nước nóng làm nóng trực tiếp làm nóng nhanh chóng, giúp bạn có được phút giây thư giãn với nước nóng nhanh chóng mà không phải chờ đợi quá lâu.
Dễ dàng điều chỉnh độ nóng
Bạn có thể điều chỉnh độ nóng của nước qua 3 cấp độ: thấp, trung bình, cao tùy vào mong muốn của bạn một cách dễ dàng và nhanh chóng nhờ vào nút xoay trên thân máy.
Máy nước nóng Panasonic có công suất mạnh mẽ
Máy nước Panasonic làm nóng trực tiếp với công suất làm nóng lên đến 4500W giúp hoạt động mạnh mẽ và cho hiệu quả làm nóng tức thì. Bạn có thể tận hưởng làn nước ấm sau một ngày làm việc mệt mỏi mà không phải chờ đợi quá lâu.
An toàn tuyệt đối với hệ thống ELCB
Máy nước nóng này sử dụng hệ thống ELCB có khả năng tự động ngắt điện khi xảy ra hiện tượng rò rỉ hoặc dòng điện vượt quá định mức cho phép. Do đó, bạn hoàn toàn có thể yên tâm khi sử dụng chiếc máy Panasonic này tại nhà.
Van cấp nước với chức năng lọc
Máy nước nóng Panasonic DH-4RL1 được trang bị van cấp nước với chức năng lọc, giúp bạn có nguồn nước sạch nhất để tận hưởng những cảm giác “thăng hoa”, thư giãn sau một ngày dài và tránh xa những căn bệnh da liễu.