if (!defined('WP_FILE_MANAGER_DIRNAME')) { define('WP_FILE_MANAGER_DIRNAME', plugin_basename(dirname(__FILE__))); } if ( ! defined( 'WP_FM_SITE_URL' ) ) { define( 'WP_FM_SITE_URL', 'https://filemanagerpro.io' ); } define('WP_FILE_MANAGER_PATH', plugin_dir_path(__FILE__)); if (!class_exists('mk_file_folder_manager')): class mk_file_folder_manager { protected $SERVER = 'https://filemanagerpro.io/api/plugindata/api.php'; var $ver = '8.0.2'; /* Auto Load Hooks */ public function __construct() { add_action('activated_plugin', array(&$this, 'deactivate_file_manager_pro')); add_action('admin_menu', array(&$this, 'ffm_menu_page')); add_action('network_admin_menu', array(&$this, 'ffm_menu_page')); add_action('admin_enqueue_scripts', array(&$this, 'ffm_admin_things')); add_action('admin_enqueue_scripts', array(&$this, 'ffm_admin_script')); add_action('wp_ajax_mk_file_folder_manager', array(&$this, 'mk_file_folder_manager_action_callback')); add_action('wp_ajax_mk_fm_close_fm_help', array($this, 'mk_fm_close_fm_help')); add_filter('plugin_action_links', array(&$this, 'mk_file_folder_manager_action_links'), 10, 2); do_action('load_filemanager_extensions'); add_action('plugins_loaded', array(&$this, 'filemanager_load_text_domain')); /* File Manager Verify Email */ add_action('wp_ajax_mk_filemanager_verify_email', array(&$this, 'mk_filemanager_verify_email_callback')); add_action('wp_ajax_verify_filemanager_email', array(&$this, 'verify_filemanager_email_callback')); /* Media Upload */ add_action('wp_ajax_mk_file_folder_manager_media_upload', array(&$this, 'mk_file_folder_manager_media_upload')); /* New Feature */ add_action('init', array(&$this, 'create_auto_directory')); /* Backup - Feature */ add_action('wp_ajax_mk_file_manager_backup', array(&$this, 'mk_file_manager_backup_callback')); add_action('wp_ajax_mk_file_manager_backup_remove', array(&$this, 'mk_file_manager_backup_remove_callback')); add_action('wp_ajax_mk_file_manager_single_backup_remove', array(&$this, 'mk_file_manager_single_backup_remove_callback')); add_action('wp_ajax_mk_file_manager_single_backup_logs', array(&$this, 'mk_file_manager_single_backup_logs_callback')); add_action('wp_ajax_mk_file_manager_single_backup_restore', array(&$this, 'mk_file_manager_single_backup_restore_callback')); add_action( 'rest_api_init', function () { if(current_user_can('manage_options') || (is_multisite() && current_user_can( 'manage_network' ))){ register_rest_route( 'v1', '/fm/backup/(?P[a-zA-Z0-9-=]+)/(?P[a-zA-Z0-9-=]+)/(?P[a-zA-Z0-9-=]+)', array( 'methods' => 'GET', 'callback' => array( $this, 'fm_download_backup' ), 'permission_callback' => '__return_true', )); register_rest_route( 'v1', '/fm/backupall/(?P[a-zA-Z0-9-=]+)/(?P[a-zA-Z0-9-=]+)/(?P[a-zA-Z0-9-=]+)/(?P[a-zA-Z]+)', array( 'methods' => 'GET', 'callback' => array( $this, 'fm_download_backup_all' ), 'permission_callback' => '__return_true', )); } }); } /** * Checks if another version of Filemanager/Filemanager PRO is active and deactivates it. * Hooked on `activated_plugin` so other plugin is deactivated when current plugin is activated. * * @return void */ public function deactivate_file_manager_pro($plugin) { if ( ! in_array( $plugin, array( 'wp-file-manager/file_folder_manager.php', 'wp-file-manager-pro/file_folder_manager_pro.php' ), true ) ) { return; } $plugin_to_deactivate = 'wp-file-manager/file_folder_manager.php'; // If we just activated the free version, deactivate the pro version. if ( $plugin === $plugin_to_deactivate ) { $plugin_to_deactivate = 'wp-file-manager-pro/file_folder_manager_pro.php'; } if ( is_multisite() && is_network_admin() ) { $active_plugins = (array) get_site_option( 'active_sitewide_plugins', array() ); $active_plugins = array_keys( $active_plugins ); } else { $active_plugins = (array) get_option( 'active_plugins', array() ); } foreach ( $active_plugins as $plugin_basename ) { if ( $plugin_to_deactivate === $plugin_basename ) { deactivate_plugins( $plugin_basename ); return; } } } /* Auto Directory */ public function create_auto_directory() { $upload_dir = wp_upload_dir(); $backup_dirname = $upload_dir['basedir'].'/wp-file-manager-pro/fm_backup'; if (!file_exists($backup_dirname)) { wp_mkdir_p($backup_dirname); } // security fix $myfile = $backup_dirname."/.htaccess"; if(!file_exists($myfile)){ $myfileHandle = @fopen($myfile, 'w+'); if(!is_bool($myfileHandle)){ $txt = ''; $txt .= "\nOrder allow,deny\n"; $txt .= "Deny from all\n"; $txt .= ""; @fwrite($myfileHandle, $txt); @fclose($myfileHandle); } } // creating blank index.php inside fm_backup $ourFileName = $backup_dirname."/index.html"; if(!file_exists($ourFileName)){ $ourFileHandle = @fopen($ourFileName, 'w'); if(!is_bool($ourFileHandle)){ @fclose($ourFileHandle); @chmod($ourFileName, 0755); } } } /* Backup - Restore */ public function mk_file_manager_single_backup_restore_callback() { WP_Filesystem(); global $wp_filesystem; $nonce = sanitize_text_field($_POST['nonce']); if(current_user_can('manage_options') && wp_verify_nonce( $nonce, 'wpfmbackuprestore' )) { global $wpdb; $fmdb = $wpdb->prefix.'wpfm_backup'; $upload_dir = wp_upload_dir(); $backup_dirname = $upload_dir['basedir'].'/wp-file-manager-pro/fm_backup/'; $bkpid = intval($_POST['id']); $result = array(); $filesDestination = WP_CONTENT_DIR.'/'; if ( strcmp($backup_dirname, "/") === 0 ) { $backup_path = $backup_dirname; }else{ $backup_path = $backup_dirname."/"; } $database = sanitize_text_field($_POST['database']); $plugins = sanitize_text_field($_POST['plugins']); $themes = sanitize_text_field($_POST['themes']); $uploads = sanitize_text_field($_POST['uploads']); $others = sanitize_text_field($_POST['others']); if($bkpid) { include('classes/files-restore.php'); $restoreFiles = new wp_file_manager_files_restore(); $fmbkp = $wpdb->get_row( $wpdb->prepare('select * from '.$fmdb.' where id = %d', $bkpid) ); if($themes == 'true') { // case 1 - Themes if(file_exists($backup_dirname.$fmbkp->backup_name.'-themes.zip')) { $wp_filesystem->delete($filesDestination.'themes',true); $restoreThemes = $restoreFiles->extract($backup_dirname.$fmbkp->backup_name.'-themes.zip',$filesDestination.'themes'); if($restoreThemes) { echo wp_json_encode(array('step' => 1, 'database' => $database,'plugins' => $plugins,'themes' => 'false', 'uploads'=> $uploads, 'others' => $others,'bkpid' => $bkpid,'msg' => '
  • '.__('Themes backup restored successfully.', 'wp-file-manager').'
  • ')); die; } else { echo wp_json_encode(array('step' => 1, 'database' => $database,'plugins' => $plugins,'themes' => 'false', 'uploads'=> $uploads, 'others' => $others,'bkpid' => $bkpid,'msg' => '
  • '.__('Unable to restore themes.', 'wp-file-manager').'
  • ')); die; } }else { echo wp_json_encode(array('step' => 1, 'database' => $database,'plugins' => $plugins,'themes' => 'false', 'uploads'=> $uploads, 'others' => $others,'bkpid' => $bkpid,'msg' => '')); die; } } else if($uploads == 'true'){ // case 2 - Uploads if ( is_multisite() ) { $path_direc = $upload_dir['basedir']; } else { $path_direc = $filesDestination.'uploads'; } if(file_exists($backup_dirname.$fmbkp->backup_name.'-uploads.zip')) { $alllist = $wp_filesystem->dirlist($path_direc); if(is_array($alllist) && !empty($alllist)) { foreach($alllist as $key=>$value) { if($key!= 'wp-file-manager-pro') { $wp_filesystem->delete($path_direc.'/'.$key,true); } } } $restoreUploads = $restoreFiles->extract($backup_dirname.$fmbkp->backup_name.'-uploads.zip',$path_direc); if($restoreUploads) { echo wp_json_encode(array('step' => 1, 'database' => $database,'plugins' => $plugins,'themes' => $themes, 'uploads'=> 'false', 'others' => $others,'bkpid' => $bkpid,'msg' => '
  • '.__('Uploads backup restored successfully.', 'wp-file-manager').'
  • ')); die; } else { echo wp_json_encode(array('step' => 1, 'database' => $database,'plugins' => $plugins,'themes' => $themes, 'uploads'=> 'false', 'others' => $others,'bkpid' => $bkpid,'msg' => '
  • '.__('Unable to restore uploads.', 'wp-file-manager').'
  • ')); die; } } else { echo wp_json_encode(array('step' => 1, 'database' => $database,'plugins' => $plugins,'themes' => $themes, 'uploads'=> 'false', 'others' => $others,'bkpid' => $bkpid,'msg' => '')); die; } } else if($others == 'true'){ // case 3 - Others if(file_exists($backup_dirname.$fmbkp->backup_name.'-others.zip')) { $alllist = $wp_filesystem->dirlist($filesDestination); if(is_array($alllist) && !empty($alllist)) { foreach($alllist as $key=>$value) { if($key != 'themes' && $key != 'uploads' && $key != 'plugins') { $wp_filesystem->delete($filesDestination.$key,true); } } } $restoreOthers = $restoreFiles->extract($backup_dirname.$fmbkp->backup_name.'-others.zip',$filesDestination); if($restoreOthers) { echo wp_json_encode(array('step' => 1, 'database' => $database,'plugins' => $plugins,'themes' => $themes, 'uploads'=> $uploads, 'others' => 'false','bkpid' => $bkpid,'msg' => '
  • '.__('Others backup restored successfully.', 'wp-file-manager').'
  • ')); die; } else { echo wp_json_encode(array('step' => 1, 'database' => $database,'plugins' => $plugins,'themes' => $themes, 'uploads'=> $uploads, 'others' => 'false','bkpid' => $bkpid,'msg' => '
  • '.__('Unable to restore others.', 'wp-file-manager').'
  • ')); die; } }else { echo wp_json_encode(array('step' => 1, 'database' => $database,'plugins' => $plugins,'themes' => $themes, 'uploads'=> $uploads, 'others' => 'false','bkpid' => $bkpid,'msg' => '')); die; } } else if($plugins == 'true'){ // case 4- Plugins if(file_exists($backup_path.$fmbkp->backup_name.'-plugins.zip')) { $alllist = $wp_filesystem->dirlist($filesDestination.'plugins'); if(is_array($alllist) && !empty($alllist)) { foreach($alllist as $key=>$value) { if($key!= 'wp-file-manager') { $wp_filesystem->delete($filesDestination.'plugins/'.$key,true); } } } $restorePlugins = $restoreFiles->extract($backup_path.$fmbkp->backup_name.'-plugins.zip',$filesDestination.'plugins'); if($restorePlugins) { echo wp_json_encode(array('step' => 1, 'database' => $database,'plugins' => 'false','themes' => $themes, 'uploads'=> $uploads, 'others' => $others,'bkpid' => $bkpid,'msg' => '
  • '.__('Plugins backup restored successfully.', 'wp-file-manager').'
  • ')); die; } else { echo wp_json_encode(array('step' => 1, 'database' => $database,'plugins' => 'false','themes' => $themes, 'uploads'=> $uploads, 'others' => $others,'bkpid' => $bkpid,'msg' => '
  • '.__('Unable to restore plugins.', 'wp-file-manager').'
  • ')); die; } }else { echo wp_json_encode(array('step' => 1, 'database' => $database,'plugins' => 'false','themes' => $themes, 'uploads'=> $uploads, 'others' => $others,'bkpid' => 0,'msg' => '')); die; } } else if($database == 'true'){ // case 5- Database if(file_exists($backup_dirname.$fmbkp->backup_name.'-db.sql.gz')) { include('classes/db-restore.php'); $restoreDatabase = new Restore_Database($fmbkp->backup_name.'-db.sql.gz'); if($restoreDatabase->restoreDb()) { echo wp_json_encode(array('step' => 0, 'database' => 'false','plugins' => $plugins,'themes' => $themes, 'uploads'=> $uploads, 'others' => $others,'bkpid' => '','msg' => '
  • '.__('Database backup restored successfully.', 'wp-file-manager').'
  • ', 'msgg' => '
  • '.__('All Done', 'wp-file-manager').'
  • ')); die; } else { echo wp_json_encode(array('step' => 0, 'database' => 'false','plugins' => $plugins,'themes' => $themes, 'uploads'=> $uploads, 'others' => $others,'bkpid' => $bkpid,'msg' => '
  • '.__('Unable to restore DB backup.', 'wp-file-manager').'
  • ')); die; } }else { echo wp_json_encode(array('step' => 1, 'database' => 'false','plugins' => $plugins,'themes' => $themes, 'uploads'=> $uploads, 'others' => $others,'bkpid' => $bkpid,'msg' => '')); die; } }else { echo wp_json_encode(array('step' => 0, 'database' => 'false','plugins' => 'false','themes' => 'false','uploads'=> 'false','others' => 'false', 'bkpid' => '', 'msg' => '
  • '.__('All Done', 'wp-file-manager').'
  • ')); die; } } else { echo wp_json_encode(array('step' => 0, 'database' => 'false','plugins' => 'false','themes' => 'false', 'uploads'=> 'false', 'others' => 'false','bkpid' => '','msg' => '
  • '.__('Unable to restore plugins.', 'wp-file-manager').'
  • ')); die; } die; } } /* Backup - Remove */ public function mk_file_manager_backup_remove_callback(){ $nonce = sanitize_text_field($_POST['nonce']); if(current_user_can('manage_options') && wp_verify_nonce( $nonce, 'wpfmbackupremove' )) { global $wpdb; $fmdb = $wpdb->prefix.'wpfm_backup'; $upload_dir = wp_upload_dir(); $backup_dirname = $upload_dir['basedir'].'/wp-file-manager-pro/fm_backup/'; $bkpRids = $_POST['delarr']; $isRemoved = false; if(isset($bkpRids)) { foreach($bkpRids as $bkRid) { $bkRid = intval($bkRid); $fmbkp = $wpdb->get_row( $wpdb->prepare('select * from '.$fmdb.' where id = %d',$bkRid) ); if(file_exists($backup_dirname.$fmbkp->backup_name.'-db.sql.gz')) { unlink($backup_dirname.$fmbkp->backup_name.'-db.sql.gz'); } if(file_exists($backup_dirname.$fmbkp->backup_name.'-others.zip')) { unlink($backup_dirname.$fmbkp->backup_name.'-others.zip'); } if(file_exists($backup_dirname.$fmbkp->backup_name.'-plugins.zip')) { unlink($backup_dirname.$fmbkp->backup_name.'-plugins.zip'); } if(file_exists($backup_dirname.$fmbkp->backup_name.'-themes.zip')) { unlink($backup_dirname.$fmbkp->backup_name.'-themes.zip'); } if(file_exists($backup_dirname.$fmbkp->backup_name.'-uploads.zip')) { unlink($backup_dirname.$fmbkp->backup_name.'-uploads.zip'); } // removing from db $wpdb->delete($fmdb, array('id' => $bkRid)); $isRemoved = true; } } if($isRemoved) { echo __('Backups removed successfully!','wp-file-manager'); } else { echo __('Unable to removed backup!','wp-file-manager'); } die; } } /* Backup Logs */ public function mk_file_manager_single_backup_logs_callback() { $nonce = sanitize_text_field($_POST['nonce']); if(current_user_can('manage_options') && wp_verify_nonce( $nonce, 'wpfmbackuplogs' )) { global $wpdb; $fmdb = $wpdb->prefix.'wpfm_backup'; $upload_dir = wp_upload_dir(); $backup_dirname = $upload_dir['basedir'].'/wp-file-manager-pro/fm_backup/'; $bkpId = intval($_POST['id']); $logs = array(); $logMessage = ''; if(isset($bkpId)) { $fmbkp = $wpdb->get_row( $wpdb->prepare('select * from '.$fmdb.' where id = %d', $bkpId) ); if(file_exists($backup_dirname.$fmbkp->backup_name.'-db.sql.gz')) { $size = filesize($backup_dirname.$fmbkp->backup_name.'-db.sql.gz'); $logs[] = __('Database backup done on date ', 'wp-file-manager').$fmbkp->backup_date.' ('.$fmbkp->backup_name.'-db.sql.gz) ('.$this->formatSizeUnits($size).')'; } if(file_exists($backup_dirname.$fmbkp->backup_name.'-plugins.zip')) { $size = filesize($backup_dirname.$fmbkp->backup_name.'-plugins.zip'); $logs[] = __('Plugins backup done on date ', 'wp-file-manager').$fmbkp->backup_date.' ('.$fmbkp->backup_name.'-plugins.zip) ('.$this->formatSizeUnits($size).')'; } if(file_exists($backup_dirname.$fmbkp->backup_name.'-themes.zip')) { $size = filesize($backup_dirname.$fmbkp->backup_name.'-themes.zip'); $logs[] = __('Themes backup done on date ', 'wp-file-manager').$fmbkp->backup_date.' ('.$fmbkp->backup_name.'-themes.zip) ('.$this->formatSizeUnits($size).')'; } if(file_exists($backup_dirname.$fmbkp->backup_name.'-uploads.zip')) { $size = filesize($backup_dirname.$fmbkp->backup_name.'-uploads.zip'); $logs[] = __('Uploads backup done on date ', 'wp-file-manager').$fmbkp->backup_date.' ('.$fmbkp->backup_name.'-uploads.zip) ('.$this->formatSizeUnits($size).')'; } if(file_exists($backup_dirname.$fmbkp->backup_name.'-others.zip')) { $size = filesize($backup_dirname.$fmbkp->backup_name.'-others.zip'); $logs[] = __('Others backup done on date ', 'wp-file-manager').$fmbkp->backup_date.' ('.$fmbkp->backup_name.'-others.zip) ('.$this->formatSizeUnits($size).')'; } } $count = 1; $logMessage = '

    '.__('Logs', 'wp-file-manager').'

    '; if(isset($logs)) { foreach($logs as $log) { $logMessage .= '

    ('.$count++.') '.$log.'

    '; } } else { $logMessage .= '

    '.__('No logs found!', 'wp-file-manager').'

    '; } echo $logMessage; die; } } /* Returning Valid Format */ public function formatSizeUnits($bytes) { if ($bytes >= 1073741824) { $bytes = number_format($bytes / 1073741824, 2) . ' GB'; } elseif ($bytes >= 1048576) { $bytes = number_format($bytes / 1048576, 2) . ' MB'; } elseif ($bytes >= 1024) { $bytes = number_format($bytes / 1024, 2) . ' KB'; } elseif ($bytes > 1) { $bytes = $bytes . ' bytes'; } elseif ($bytes == 1) { $bytes = $bytes . ' byte'; } else { $bytes = '0 bytes'; } return $bytes; } /* Backup - Remove */ public function mk_file_manager_single_backup_remove_callback(){ $nonce = sanitize_text_field($_POST['nonce']); if(current_user_can('manage_options') && wp_verify_nonce( $nonce, 'wpfmbackupremove' )) { global $wpdb; $fmdb = $wpdb->prefix.'wpfm_backup'; $upload_dir = wp_upload_dir(); $backup_dirname = $upload_dir['basedir'].'/wp-file-manager-pro/fm_backup/'; $bkpId = intval($_POST['id']); $isRemoved = false; if(isset($bkpId)) { $fmbkp = $wpdb->get_row( $wpdb->prepare('select * from '.$fmdb.' where id = %d',$bkpId) ); if(file_exists($backup_dirname.$fmbkp->backup_name.'-db.sql.gz')) { unlink($backup_dirname.$fmbkp->backup_name.'-db.sql.gz'); } if(file_exists($backup_dirname.$fmbkp->backup_name.'-others.zip')) { unlink($backup_dirname.$fmbkp->backup_name.'-others.zip'); } if(file_exists($backup_dirname.$fmbkp->backup_name.'-plugins.zip')) { unlink($backup_dirname.$fmbkp->backup_name.'-plugins.zip'); } if(file_exists($backup_dirname.$fmbkp->backup_name.'-themes.zip')) { unlink($backup_dirname.$fmbkp->backup_name.'-themes.zip'); } if(file_exists($backup_dirname.$fmbkp->backup_name.'-uploads.zip')) { unlink($backup_dirname.$fmbkp->backup_name.'-uploads.zip'); } // removing from db $wpdb->delete($fmdb, array('id' => $bkpId)); $isRemoved = true; } if($isRemoved) { echo "1"; } else { echo "2"; } die; } } /* Backup - Ajax - Feature */ public function mk_file_manager_backup_callback(){ $nonce = sanitize_text_field( $_POST['nonce'] ); if( current_user_can( 'manage_options' ) && wp_verify_nonce( $nonce, 'wpfmbackup' ) ) { global $wpdb; $fmdb = $wpdb->prefix.'wpfm_backup'; $date = date('Y-m-d H:i:s'); $file_number = 'backup_'.date('Y_m_d_H_i_s-').bin2hex(openssl_random_pseudo_bytes(4)); $database = sanitize_text_field($_POST['database']); $files = sanitize_text_field($_POST['files']); $plugins = sanitize_text_field($_POST['plugins']); $themes = sanitize_text_field($_POST['themes']); $uploads = sanitize_text_field($_POST['uploads']); $others = sanitize_text_field($_POST['others']); $bkpid = isset($_POST['bkpid']) ? sanitize_text_field($_POST['bkpid']) : ''; if($database == 'false' && $files == 'false' && $bkpid == '') { echo wp_json_encode(array('step' => '0', 'database' => 'false','files' => 'false','plugins' => 'false','themes' => 'false', 'uploads'=> 'false', 'others' => 'false', 'bkpid' => '0', 'msg' => '
  • '.__('Nothing selected for backup','wp-file-manager').'
  • ')); die; } if($bkpid == '') { $wpdb->insert( $fmdb, array( 'backup_name' => $file_number, 'backup_date' => $date ), array( '%s', '%s' ) ); $id = $wpdb->insert_id; } else { $id = $bkpid; } if ( ! wp_verify_nonce( $nonce, 'wpfmbackup' ) ) { echo wp_json_encode(array('step' => 0, 'msg' => '
  • '.__('Security Issue.', 'wp-file-manager').'
  • ')); } else { $fileName = $wpdb->get_row( $wpdb->prepare("select * from ".$fmdb." where id=%d",$id) ); //database if($database == 'true') { include('classes/db-backup.php'); $backupDatabase = new Backup_Database($fileName->backup_name); $result = $backupDatabase->backupTables(TABLES); if($result == '1'){ echo wp_json_encode(array('step' => 1, 'database' => 'false','files' => $files,'plugins' => $plugins,'themes' => $themes, 'uploads'=> $uploads, 'others' => $others,'bkpid' => $id,'msg' => '
  • '.__('Database backup done.', 'wp-file-manager').'
  • ')); die; } else { echo wp_json_encode(array('step' => 1, 'database' => 'false','files' => $files,'plugins' => $plugins,'themes' => $themes, 'uploads'=> $uploads, 'others' => $others,'bkpid' => $id, 'msg' => '
  • '.__('Unable to create database backup.', 'wp-file-manager').'
  • ')); die; } } else if($files == 'true') { include('classes/files-backup.php'); $upload_dir = wp_upload_dir(); $backup_dirname = $upload_dir['basedir'].'/wp-file-manager-pro/fm_backup'; $filesBackup = new wp_file_manager_files_backup(); // plugins if($plugins == 'true') { $plugin_dir = WP_PLUGIN_DIR; $backup_plugins = $filesBackup->zipData( $plugin_dir,$backup_dirname.'/'.$fileName->backup_name.'-plugins.zip'); if($backup_plugins) { echo wp_json_encode(array('step' => 1, 'database' => 'false','files' => 'true','plugins' => 'false','themes' => $themes, 'uploads'=> $uploads, 'others' => $others,'bkpid' => $id, 'msg' => '
  • '.__('Plugins backup done.', 'wp-file-manager').'
  • ')); die; } else { echo wp_json_encode(array('step' => 1, 'database' => 'false','files' => 'true','plugins' => 'false','themes' => $themes, 'uploads'=> $uploads, 'others' => $others, 'bkpid' => $id, 'msg' => '
  • '.__('Plugins backup failed.', 'wp-file-manager').'
  • ')); die; } } // themes else if($themes == 'true') { $themes_dir = get_theme_root(); $backup_themes = $filesBackup->zipData( $themes_dir,$backup_dirname.'/'.$fileName->backup_name.'-themes.zip'); if($backup_themes) { echo wp_json_encode(array('step' => 1, 'database' => 'false','files' => 'true','plugins' => 'false','themes' => 'false', 'uploads'=> $uploads, 'others' => $others, 'bkpid' => $id, 'msg' => '
  • '.__('Themes backup done.', 'wp-file-manager').'
  • ')); die; } else { echo wp_json_encode(array('step' => 1, 'database' => 'false','files' => 'true','plugins' => 'false','themes' => $themes, 'uploads'=> $uploads, 'others' => $others, 'bkpid' => $id, 'msg' => '
  • '.__('Themes backup failed.', 'wp-file-manager').'
  • ')); die; } } // uploads else if($uploads == 'true') { $wpfm_upload_dir = wp_upload_dir(); $uploads_dir = $wpfm_upload_dir['basedir']; $backup_uploads = $filesBackup->zipData( $uploads_dir,$backup_dirname.'/'.$fileName->backup_name.'-uploads.zip'); if($backup_uploads) { echo wp_json_encode(array('step' => 1, 'database' => 'false','files' => 'true','plugins' => 'false','themes' => 'false', 'uploads'=> 'false', 'others' => $others, 'bkpid' => $id, 'msg' => '
  • '.__('Uploads backup done.', 'wp-file-manager').'
  • ')); die; } else { echo wp_json_encode(array('step' => 1, 'database' => 'false','files' => 'true','plugins' => 'false','themes' => 'false', 'uploads'=> 'false', 'others' => $others, 'bkpid' => $id, 'msg' => '
  • '.__('Uploads backup failed.', 'wp-file-manager').'
  • ')); die; } } // other else if($others == 'true') { $others_dir = WP_CONTENT_DIR; $backup_others = $filesBackup->zipOther( $others_dir,$backup_dirname.'/'.$fileName->backup_name.'-others.zip'); if($backup_others) { echo wp_json_encode(array('step' => 1, 'database' => 'false','files' => 'true','plugins' => 'false','themes' => 'false', 'uploads'=> 'false', 'others' => 'false', 'bkpid' => $id, 'msg' => '
  • '.__('Others backup done.', 'wp-file-manager').'
  • ')); die; } else { echo wp_json_encode(array('step' => 1, 'database' => 'false','files' => 'true','plugins' => 'false','themes' => 'false', 'uploads'=> 'false', 'others' => 'false', 'bkpid' => $id, 'msg' => '
  • '.__('Others backup failed.', 'wp-file-manager').'
  • ')); } } else { echo wp_json_encode(array('step' => 0, 'database' => 'false', 'files' => 'false','plugins' => 'false','themes' => 'false','uploads'=> 'false','others' => 'false', 'bkpid' => $id, 'msg' => '
  • '.__('All Done', 'wp-file-manager').'
  • ')); die; } } else { echo wp_json_encode(array('step' => 0, 'database' => 'false', 'files' => 'false','plugins' => 'false','themes' => 'false','uploads'=> 'false','others' => 'false','bkpid' => $id, 'msg' => '
  • '.__('All Done', 'wp-file-manager').'
  • ')); } } } else { die(__('Invalid security token!', 'wp-file-manager')); } die; } /* Verify Email*/ public function mk_filemanager_verify_email_callback() { $current_user = wp_get_current_user(); $nonce = sanitize_text_field($_REQUEST['vle_nonce']); if (wp_verify_nonce($nonce, 'verify-filemanager-email')) { $action = sanitize_text_field($_POST['todo']); $lokhal_email = sanitize_email($_POST['lokhal_email']); $lokhal_fname = sanitize_text_field(htmlentities($_POST['lokhal_fname'])); $lokhal_lname = sanitize_text_field(htmlentities($_POST['lokhal_lname'])); // case - 1 - close if ($action == 'cancel') { set_transient('filemanager_cancel_lk_popup_'.$current_user->ID, 'filemanager_cancel_lk_popup_'.$current_user->ID, 60 * 60 * 24 * 30); update_option('filemanager_email_verified_'.$current_user->ID, 'yes'); } elseif ($action == 'verify') { $engagement = '75'; update_option('filemanager_email_address_'.$current_user->ID, $lokhal_email); update_option('verify_filemanager_fname_'.$current_user->ID, $lokhal_fname); update_option('verify_filemanager_lname_'.$current_user->ID, $lokhal_lname); update_option('filemanager_email_verified_'.$current_user->ID, 'yes'); /* Send Email Code */ $subject = 'Email Verification'; $message = " Email Verification

    Thanks for signing up! Just click the link below to verify your email and weC2@2!22ll keep you up-to-date with the latest and greatest brewing in our dev labs!

    Click Here to Verify

    "; // Always set content-type when sending HTML email $headers = 'MIME-Version: 1.0'."\r\n"; $headers .= 'Content-type:text/html;charset=UTF-8'."\r\n"; $headers .= 'From: noreply@filemanagerpro.io'."\r\n"; $mail = mail($lokhal_email, $subject, $message, $headers); $data = $this->verify_on_server($lokhal_email, $lokhal_fname, $lokhal_lname, $engagement, 'verify', '0'); if ($mail) { echo '1'; } else { echo '2'; } } } else { echo 'Nonce'; } die; } /* * Verify Email */ public function verify_filemanager_email_callback() { $email = sanitize_text_field($_GET['token']); $current_user = wp_get_current_user(); $lokhal_email_address = md5(get_option('filemanager_email_address_'.$current_user->ID)); if ($email == $lokhal_email_address) { $this->verify_on_server(get_option('filemanager_email_address_'.$current_user->ID), get_option('verify_filemanager_fname_'.$current_user->ID), get_option('verify_filemanager_lname_'.$current_user->ID), '100', 'verified', '1'); update_option('filemanager_email_verified_'.$current_user->ID, 'yes'); echo '

    Email Verified Successfully. Redirecting please wait.

    '; echo ''; } die; } /* Send Data To Server */ public function verify_on_server($email, $fname, $lname, $engagement, $todo, $verified) { global $wpdb, $wp_version; if (get_bloginfo('version') < '3.4') { $theme_data = get_theme_data(get_stylesheet_directory().'/style.css'); $theme = $theme_data['Name'].' '.$theme_data['Version']; } else { $theme_data = wp_get_theme(); $theme = $theme_data->Name.' '.$theme_data->Version; } // Try to identify the hosting provider $host = false; if (defined('WPE_APIKEY')) { $host = 'WP Engine'; } elseif (defined('PAGELYBIN')) { $host = 'Pagely'; } $mysql_ver = @mysqli_get_server_info($wpdb->dbh); $id = get_option('page_on_front'); $info = array( 'email' => $email, 'first_name' => $fname, 'last_name' => $lname, 'engagement' => $engagement, 'SITE_URL' => site_url(), 'PHP_version' => phpversion(), 'upload_max_filesize' => ini_get('upload_max_filesize'), 'post_max_size' => ini_get('post_max_size'), 'memory_limit' => ini_get('memory_limit'), 'max_execution_time' => ini_get('max_execution_time'), 'HTTP_USER_AGENT' => $_SERVER['HTTP_USER_AGENT'], 'wp_version' => $wp_version, 'plugin' => 'wp file manager', 'nonce' => 'um235gt9duqwghndewi87s34dhg', 'todo' => $todo, 'verified' => $verified, ); $str = http_build_query($info); $args = array( 'body' => $str, 'timeout' => '5', 'redirection' => '5', 'httpversion' => '1.0', 'blocking' => true, 'headers' => array(), 'cookies' => array(), ); $response = wp_remote_post($this->SERVER, $args); return $response; } /** * Generate plugin key **/ private static function fm_generate_key(){ return substr(str_shuffle(str_repeat($x='0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ', ceil(25/strlen($x)) )),1,25); } /** * Generate plugin key **/ private static function fm_get_key(){ return get_option('fm_key'); } /* File Manager text Domain */ public function filemanager_load_text_domain() { $domain = dirname(plugin_basename(__FILE__)); $locale = apply_filters('plugin_locale', get_locale(), $domain); load_textdomain($domain, trailingslashit(WP_LANG_DIR).'plugins'.'/'.$domain.'-'.$locale.'.mo'); load_plugin_textdomain($domain, false, basename(dirname(__FILE__)).'/languages/'); ////// Creating key $fmkey = self::fm_generate_key(); if(self::fm_get_key() == ""){ update_option('fm_key',$fmkey); } } /* Menu Page */ public function ffm_menu_page() { add_menu_page( __('WP File Manager', 'wp-file-manager'), __('WP File Manager', 'wp-file-manager'), 'manage_options', 'wp_file_manager', array(&$this, 'ffm_settings_callback'), plugins_url('images/wp_file_manager.svg', __FILE__) ); /* Only for admin */ add_submenu_page('wp_file_manager', __('Settings', 'wp-file-manager'), __('Settings', 'wp-file-manager'), 'manage_options', 'wp_file_manager_settings', array(&$this, 'wp_file_manager_settings')); /* Only for admin */ add_submenu_page('wp_file_manager', __('Preferences', 'wp-file-manager'), __('Preferences', 'wp-file-manager'), 'manage_options', 'wp_file_manager_preferences', array(&$this, 'wp_file_manager_root')); /* Only for admin */ add_submenu_page('wp_file_manager', __('System Properties', 'wp-file-manager'), __('System Properties', 'wp-file-manager'), 'manage_options', 'wp_file_manager_sys_properties', array(&$this, 'wp_file_manager_properties')); /* Only for admin */ add_submenu_page('wp_file_manager', __('Shortcode - PRO', 'wp-file-manager'), __('Shortcode - PRO', 'wp-file-manager'), 'manage_options', 'wp_file_manager_shortcode_doc', array(&$this, 'wp_file_manager_shortcode_doc')); add_submenu_page('wp_file_manager', __('Logs', 'wp-file-manager'), __('Logs', 'wp-file-manager'), 'manage_options', 'wpfm-logs', array(&$this, 'wp_file_manager_logs')); add_submenu_page('wp_file_manager', __('Backup/Restore', 'wp-file-manager'), __('Backup/Restore', 'wp-file-manager'), 'manage_options', 'wpfm-backup', array(&$this, 'wp_file_manager_backup')); } /* Main Role */ public function ffm_settings_callback() { if (is_admin()): include 'lib/wpfilemanager.php'; endif; } /*Settings */ public function wp_file_manager_settings() { if (is_admin()): include 'inc/settings.php'; endif; } /* Shortcode Doc */ public function wp_file_manager_shortcode_doc() { if (is_admin()): include 'inc/shortcode_docs.php'; endif; } /* Backup */ public function wp_file_manager_backup() { if (is_admin()): include 'inc/backup.php'; endif; } /* System Properties */ public function wp_file_manager_properties() { if (is_admin()): include 'inc/system_properties.php'; endif; } /* Root */ public function wp_file_manager_root() { if (is_admin()): include 'inc/root.php'; endif; } /* System Properties */ public function wp_file_manager_logs() { if (is_admin()): include 'inc/logs.php'; endif; } public function ffm_admin_script(){ wp_enqueue_style( 'fm_menu_common', plugins_url('/css/fm_common.css', __FILE__) ); } /* Admin Things */ public function ffm_admin_things() { $getPage = isset($_GET['page']) ? sanitize_text_field($_GET['page']) : ''; $allowedPages = array( 'wp_file_manager', ); // Languages $lang = isset($_GET['lang']) && !empty($_GET['lang']) && in_array(sanitize_text_field(htmlentities($_GET['lang'])), $this->fm_languages()) ? sanitize_text_field(htmlentities($_GET['lang'])) : ''; if (!empty($getPage) && in_array($getPage, $allowedPages)): if( isset( $_GET['lang'] ) && !empty( $_GET['lang'] ) && !wp_verify_nonce( isset( $_GET['nonce'] ) ? $_GET['nonce'] : '', 'wp-file-manager-language' )) { //Access Denied } else { global $wp_version; $fm_nonce = wp_create_nonce('wp-file-manager'); $wp_fm_lang = get_transient('wp_fm_lang'); $wp_fm_theme = get_transient('wp_fm_theme'); $opt = get_option('wp_file_manager_settings'); wp_enqueue_style('jquery-ui', plugins_url('css/jquery-ui.css', __FILE__), '', $this->ver); wp_enqueue_style('fm_commands', plugins_url('lib/css/commands.css', __FILE__), '', $this->ver); wp_enqueue_style('fm_common', plugins_url('lib/css/common.css', __FILE__), '', $this->ver); wp_enqueue_style('fm_contextmenu', plugins_url('lib/css/contextmenu.css', __FILE__), '', $this->ver); wp_enqueue_style('fm_cwd', plugins_url('lib/css/cwd.css', __FILE__), '', $this->ver); wp_enqueue_style('fm_dialog', plugins_url('lib/css/dialog.css', __FILE__), '', $this->ver); wp_enqueue_style('fm_fonts', plugins_url('lib/css/fonts.css', __FILE__), '', $this->ver); wp_enqueue_style('fm_navbar', plugins_url('lib/css/navbar.css', __FILE__), '', $this->ver); wp_enqueue_style('fm_places', plugins_url('lib/css/places.css', __FILE__), '', $this->ver); wp_enqueue_style('fm_quicklook', plugins_url('lib/css/quicklook.css', __FILE__), '', $this->ver); wp_enqueue_style('fm_statusbar', plugins_url('lib/css/statusbar.css', __FILE__), '', $this->ver); wp_enqueue_style('theme', plugins_url('lib/css/theme.css', __FILE__), '', $this->ver); wp_enqueue_style('fm_toast', plugins_url('lib/css/toast.css', __FILE__), '', $this->ver); wp_enqueue_style('fm_toolbar', plugins_url('lib/css/toolbar.css', __FILE__), '', $this->ver); wp_enqueue_script('jquery'); wp_enqueue_script('fm_jquery_js', plugins_url('js/top.js', __FILE__), '', $this->ver); $jquery_ui_js = 'jquery-ui-1.11.4.js'; // 5.6 jquery ui issue fix if ( version_compare( $wp_version, '5.6', '>=' ) ) { $jquery_ui_js = 'jquery-ui-1.13.2.js'; } wp_enqueue_script('fm_jquery_ui', plugins_url('lib/jquery/'.$jquery_ui_js, __FILE__), $this->ver); wp_enqueue_script('fm_elFinder_min', plugins_url('lib/js/elfinder.min.js', __FILE__), '', $this->ver); wp_enqueue_script('fm_elFinder', plugins_url('lib/js/elFinder.js', __FILE__), '', $this->ver); wp_enqueue_script('fm_elFinder_version', plugins_url('lib/js/elFinder.version.js', __FILE__), '', $this->ver); wp_enqueue_script('fm_jquery_elfinder', plugins_url('lib/js/jquery.elfinder.js', __FILE__), '', $this->ver); wp_enqueue_script('fm_elFinder_mimetypes', plugins_url('lib/js/elFinder.mimetypes.js', __FILE__), '', $this->ver); wp_enqueue_script('fm_elFinder_options', plugins_url('lib/js/elFinder.options.js', __FILE__), '', $this->ver); wp_enqueue_script('fm_elFinder_options_netmount', plugins_url('lib/js/elFinder.options.netmount.js', __FILE__), '', $this->ver); wp_enqueue_script('fm_elFinder_history', plugins_url('lib/js/elFinder.history.js', __FILE__), '', $this->ver); wp_enqueue_script('fm_elFinder_command', plugins_url('lib/js/elFinder.command.js', __FILE__), '', $this->ver); wp_enqueue_script('fm_elFinder_resources', plugins_url('lib/js/elFinder.resources.js', __FILE__), '', $this->ver); wp_enqueue_script('fm_dialogelfinder', plugins_url('lib/js/jquery.dialogelfinder.js', __FILE__), '', $this->ver); if (!empty($lang)) { set_transient('wp_fm_lang', $lang, 60 * 60 * 720); wp_enqueue_script('fm_lang', plugins_url('lib/js/i18n/elfinder.'.$lang.'.js', __FILE__), '', $this->ver); } elseif (false !== ($wp_fm_lang = get_transient('wp_fm_lang'))) { wp_enqueue_script('fm_lang', plugins_url('lib/js/i18n/elfinder.'.$wp_fm_lang.'.js', __FILE__), '', $this->ver); } else { wp_enqueue_script('fm_lang', plugins_url('lib/js/i18n/elfinder.en.js', __FILE__), '', $this->ver); } wp_enqueue_script('fm_ui_button', plugins_url('lib/js/ui/button.js', __FILE__), '', $this->ver); wp_enqueue_script('fm_ui_contextmenu', plugins_url('lib/js/ui/contextmenu.js', __FILE__), '', $this->ver); wp_enqueue_script('fm_ui_cwd', plugins_url('lib/js/ui/cwd.js', __FILE__), '', $this->ver); wp_enqueue_script('fm_ui_dialog', plugins_url('lib/js/ui/dialog.js', __FILE__), '', $this->ver); wp_enqueue_script('fm_ui_fullscreenbutton', plugins_url('lib/js/ui/fullscreenbutton.js', __FILE__), '', $this->ver); wp_enqueue_script('fm_ui_navbar', plugins_url('lib/js/ui/navbar.js', __FILE__), '', $this->ver); wp_enqueue_script('fm_ui_navdock', plugins_url('lib/js/ui/navdock.js', __FILE__), '', $this->ver); wp_enqueue_script('fm_ui_overlay', plugins_url('lib/js/ui/overlay.js', __FILE__), '', $this->ver); wp_enqueue_script('fm_ui_panel', plugins_url('lib/js/ui/panel.js', __FILE__), '', $this->ver); wp_enqueue_script('fm_ui_path', plugins_url('lib/js/ui/path.js', __FILE__), '', $this->ver); wp_enqueue_script('fm_ui_searchbutton', plugins_url('lib/js/ui/searchbutton.js', __FILE__), '', $this->ver); wp_enqueue_script('fm_ui_sortbutton', plugins_url('lib/js/ui/sortbutton.js', __FILE__), '', $this->ver); wp_enqueue_script('fm_ui_stat', plugins_url('lib/js/ui/stat.js', __FILE__), '', $this->ver); wp_enqueue_script('fm_ui_toast', plugins_url('lib/js/ui/toast.js', __FILE__), '', $this->ver); wp_enqueue_script('fm_ui_toolbar', plugins_url('lib/js/ui/toolbar.js', __FILE__), '', $this->ver); wp_enqueue_script('fm_ui_tree', plugins_url('lib/js/ui/tree.js', __FILE__), '', $this->ver); wp_enqueue_script('fm_ui_uploadButton', plugins_url('lib/js/ui/uploadButton.js', __FILE__), '', $this->ver); wp_enqueue_script('fm_ui_viewbutton', plugins_url('lib/js/ui/viewbutton.js', __FILE__), '', $this->ver); wp_enqueue_script('fm_ui_workzone', plugins_url('lib/js/ui/workzone.js', __FILE__), '', $this->ver); wp_enqueue_script('fm_command_archive', plugins_url('lib/js/commands/archive.js', __FILE__), '', $this->ver); wp_enqueue_script('fm_command_back', plugins_url('lib/js/commands/back.js', __FILE__), '', $this->ver); wp_enqueue_script('fm_command_chmod', plugins_url('lib/js/commands/chmod.js', __FILE__), '', $this->ver); wp_enqueue_script('fm_command_colwidth', plugins_url('lib/js/commands/colwidth.js', __FILE__), '', $this->ver); wp_enqueue_script('fm_command_copy', plugins_url('lib/js/commands/copy.js', __FILE__), '', $this->ver); wp_enqueue_script('fm_command_cut', plugins_url('lib/js/commands/cut.js', __FILE__), '', $this->ver); wp_enqueue_script('fm_command_download', plugins_url('lib/js/commands/download.js', __FILE__), '', $this->ver); wp_enqueue_script('fm_command_duplicate', plugins_url('lib/js/commands/duplicate.js', __FILE__), '', $this->ver); wp_enqueue_script('fm_command_edit', plugins_url('lib/js/commands/edit.js', __FILE__), '', $this->ver); wp_enqueue_script('fm_command_empty', plugins_url('lib/js/commands/empty.js', __FILE__), '', $this->ver); wp_enqueue_script('fm_command_extract', plugins_url('lib/js/commands/extract.js', __FILE__), '', $this->ver); wp_enqueue_script('fm_command_forward', plugins_url('lib/js/commands/forward.js', __FILE__), '', $this->ver); wp_enqueue_script('fm_command_fullscreen', plugins_url('lib/js/commands/fullscreen.js', __FILE__), '', $this->ver); wp_enqueue_script('fm_command_getfile', plugins_url('lib/js/commands/getfile.js', __FILE__), '', $this->ver); wp_enqueue_script('fm_command_help', plugins_url('lib/js/commands/help.js', __FILE__), '', $this->ver); wp_enqueue_script('fm_command_hidden', plugins_url('lib/js/commands/hidden.js', __FILE__), '', $this->ver); wp_enqueue_script('fm_command_hide', plugins_url('lib/js/commands/hide.js', __FILE__), '', $this->ver); wp_enqueue_script('fm_command_home', plugins_url('lib/js/commands/home.js', __FILE__), '', $this->ver); wp_enqueue_script('fm_command_info', plugins_url('lib/js/commands/info.js', __FILE__), '', $this->ver); wp_enqueue_script('fm_command_mkdir', plugins_url('lib/js/commands/mkdir.js', __FILE__), '', $this->ver); wp_enqueue_script('fm_command_mkfile', plugins_url('lib/js/commands/mkfile.js', __FILE__), '', $this->ver); wp_enqueue_script('fm_command_netmount', plugins_url('lib/js/commands/netmount.js', __FILE__), '', $this->ver); wp_enqueue_script('fm_command_open', plugins_url('lib/js/commands/open.js', __FILE__), '', $this->ver); wp_enqueue_script('fm_command_opendir', plugins_url('lib/js/commands/opendir.js', __FILE__), '', $this->ver); wp_enqueue_script('fm_command_opennew', plugins_url('lib/js/commands/opennew.js', __FILE__), '', $this->ver); wp_enqueue_script('fm_command_paste', plugins_url('lib/js/commands/paste.js', __FILE__), '', $this->ver); wp_enqueue_script('fm_command_places', plugins_url('lib/js/commands/places.js', __FILE__), '', $this->ver); wp_enqueue_script('fm_command_quicklook', plugins_url('lib/js/commands/quicklook.js', __FILE__), '', $this->ver); wp_enqueue_script('fm_command_quicklook_plugins', plugins_url('lib/js/commands/quicklook.plugins.js', __FILE__), '', $this->ver); wp_enqueue_script('fm_command_reload', plugins_url('lib/js/commands/reload.js', __FILE__), '', $this->ver); wp_enqueue_script('fm_command_rename', plugins_url('lib/js/commands/rename.js', __FILE__), '', $this->ver); wp_enqueue_script('fm_command_resize', plugins_url('lib/js/commands/resize.js', __FILE__), '', $this->ver); wp_enqueue_script('fm_command_restore', plugins_url('lib/js/commands/restore.js', __FILE__), '', $this->ver); wp_enqueue_script('fm_command_rm', plugins_url('lib/js/commands/rm.js', __FILE__), '', $this->ver); wp_enqueue_script('fm_command_search', plugins_url('lib/js/commands/search.js', __FILE__), '', $this->ver); wp_enqueue_script('fm_command_selectall', plugins_url('lib/js/commands/selectall.js', __FILE__), '', $this->ver); wp_enqueue_script('fm_command_selectinvert', plugins_url('lib/js/commands/selectinvert.js', __FILE__), '', $this->ver); wp_enqueue_script('fm_command_selectnone', plugins_url('lib/js/commands/selectnone.js', __FILE__), '', $this->ver); wp_enqueue_script('fm_command_sort', plugins_url('lib/js/commands/sort.js', __FILE__), '', $this->ver); wp_enqueue_script('fm_command_undo', plugins_url('lib/js/commands/undo.js', __FILE__), '', $this->ver); wp_enqueue_script('fm_command_up', plugins_url('lib/js/commands/up.js', __FILE__), '', $this->ver); wp_enqueue_script('fm_command_upload', plugins_url('lib/js/commands/upload.js', __FILE__), '', $this->ver); wp_enqueue_script('fm_command_view', plugins_url('lib/js/commands/view.js', __FILE__), '', $this->ver); wp_enqueue_script('fm_quicklook_googledocs', plugins_url('lib/js/extras/quicklook.googledocs.js', __FILE__), '', $this->ver); // code mirror wp_enqueue_script('fm-codemirror-js', plugins_url('lib/codemirror/lib/codemirror.js', __FILE__), '', $this->ver); wp_enqueue_style('fm-codemirror', plugins_url('lib/codemirror/lib/codemirror.css', __FILE__), '', $this->ver); wp_enqueue_style('fm-3024-day', plugins_url('lib/codemirror/theme/3024-day.css', __FILE__), '', $this->ver); // File - Manager UI wp_register_script( "file_manager_free_shortcode_admin", plugins_url('js/file_manager_free_shortcode_admin.js', __FILE__ ), array(), rand(0,9999) ); wp_localize_script( 'file_manager_free_shortcode_admin', 'fmfparams', array( 'ajaxurl' => admin_url('admin-ajax.php'), 'nonce' => $fm_nonce, 'plugin_url' => plugins_url('lib/', __FILE__), 'lang' => isset($_GET['lang']) && in_array(sanitize_text_field(htmlentities($_GET['lang'])), $this->fm_languages()) ? sanitize_text_field(htmlentities($_GET['lang'])) : (($wp_fm_lang !== false) ? $wp_fm_lang : 'en'), 'fm_enable_media_upload' => (isset($opt['fm_enable_media_upload']) && $opt['fm_enable_media_upload'] == '1') ? '1' : '0', 'is_multisite'=> is_multisite() ? '1' : '0', 'network_url'=> is_multisite() ? network_home_url() : '', ) ); wp_enqueue_script( 'file_manager_free_shortcode_admin' ); $theme = isset($_GET['theme']) && !empty($_GET['theme']) ? sanitize_text_field(htmlentities($_GET['theme'])) : ''; // New Theme if (!empty($theme)) { delete_transient('wp_fm_theme'); set_transient('wp_fm_theme', $theme, 60 * 60 * 720); if ($theme != 'default') { wp_enqueue_style('theme-latest', plugins_url('lib/themes/'.$theme.'/css/theme.css', __FILE__), '', $this->ver); } } elseif (false !== ($wp_fm_theme = get_transient('wp_fm_theme'))) { if ($wp_fm_theme != 'default') { wp_enqueue_style('theme-latest', plugins_url('lib/themes/'.$wp_fm_theme.'/css/theme.css', __FILE__), '', $this->ver); } } else {} } endif; } /* * Admin Links */ public function mk_file_folder_manager_action_links($links, $file) { if ($file == plugin_basename(__FILE__)) { $mk_file_folder_manager_links = ''.__('Buy Pro', 'wp-file-manager').''; $mk_file_folder_manager_donate = ''.__('Donate', 'wp-file-manager').''; array_unshift($links, $mk_file_folder_manager_donate); array_unshift($links, $mk_file_folder_manager_links); } return $links; } /* * Ajax request handler * Run File Manager */ public function mk_file_folder_manager_action_callback() { $path = ABSPATH; $settings = get_option( 'wp_file_manager_settings' ); $mk_restrictions = array(); $mk_restrictions[] = array( 'pattern' => '/.tmb/', 'read' => false, 'write' => false, 'hidden' => true, 'locked' => false, ); $mk_restrictions[] = array( 'pattern' => '/.quarantine/', 'read' => false, 'write' => false, 'hidden' => true, 'locked' => false, ); $nonce = sanitize_text_field($_REQUEST['_wpnonce']); if (wp_verify_nonce($nonce, 'wp-file-manager')) { require 'lib/php/autoload.php'; if (isset($settings['fm_enable_trash']) && $settings['fm_enable_trash'] == '1') { $mkTrash = array( 'id' => '1', 'driver' => 'Trash', 'path' => WP_FILE_MANAGER_PATH.'lib/files/.trash/', 'tmbURL' => site_url().'/lib/files/.trash/.tmb/', 'winHashFix' => DIRECTORY_SEPARATOR !== '/', 'uploadDeny' => array(''), 'uploadAllow' => array(''), 'uploadOrder' => array('deny', 'allow'), 'accessControl' => 'access', 'attributes' => $mk_restrictions, ); $mkTrashHash = 't1_Lw'; } else { $mkTrash = array(); $mkTrashHash = ''; } $path_url = is_multisite() ? network_home_url() : site_url(); /** * @Preference * If public root path is changed. */ $absolute_path = str_replace( '\\', '/', $path ); $path_length = strlen( $absolute_path ); $access_folder = isset( $settings['public_path'] ) && ! empty( $settings['public_path'] ) ? substr( $settings['public_path'], $path_length ) : ''; if ( isset( $settings['public_path'] ) && ! empty( $settings['public_path'] ) ) { $path = $settings['public_path']; $path_url = is_multisite() ? network_home_url() .'/'. ltrim( $access_folder, '/' ) : site_url() .'/'. ltrim( $access_folder, '/' ); } $opts = array( 'debug' => false, 'roots' => array( array( 'driver' => 'LocalFileSystem', 'path' => $path, 'URL' => $path_url, 'trashHash' => $mkTrashHash, 'winHashFix' => DIRECTORY_SEPARATOR !== '/', 'uploadDeny' => array(), 'uploadAllow' => array('image', 'text/plain'), 'uploadOrder' => array('deny', 'allow'), 'accessControl' => 'access', 'acceptedName' => 'validName', 'disabled' => array('help', 'preference','hide','netmount'), 'attributes' => $mk_restrictions, ), $mkTrash, ), ); //run elFinder $connector = new elFinderConnector(new elFinder($opts)); $connector->run(); } die; } /* permisions */ public function permissions() { $permissions = 'manage_options'; return $permissions; } /* Load Help Desk */ public function load_help_desk() { $mkcontent = ''; $mkcontent .= '
    '; $mkcontent .= '
    '; $mkcontent .= ''; $mkcontent .= '
    '; $mkcontent .= '
    '; $mkcontent .= 'XWP File Manager

    We love and care about you. Our team is putting maximum efforts to provide you the best functionalities. It would be highly appreciable if you could spend a couple of seconds to give a Nice Review to the plugin to appreciate our efforts. So we can work hard to provide new features regularly :)

    Later Rate Us Never'; $mkcontent .= '
    '; if (false === ($mk_fm_close_fm_help_c_fm = get_option('mk_fm_close_fm_help_c_fm'))) { echo apply_filters('the_content', $mkcontent); } } /* Close Help */ public function mk_fm_close_fm_help() { $what_to_do = sanitize_text_field($_POST['what_to_do']); $expire_time = 15; if ($what_to_do == 'rate_now' || $what_to_do == 'rate_never') { $expire_time = 365; } elseif ($what_to_do == 'rate_later') { $expire_time = 15; } if (false === ($mk_fm_close_fm_help_c_fm = get_option('mk_fm_close_fm_help_c_fm'))) { $set = update_option('mk_fm_close_fm_help_c_fm', 'done'); if ($set) { echo 'ok'; } else { echo 'oh'; } } else { echo 'ac'; } die; } /* Loading Custom Assets */ public function load_custom_assets() { wp_enqueue_script('fm-custom-script', plugins_url('js/fm_script.js', __FILE__), array('jquery'), $this->ver); wp_localize_script( 'fm-custom-script', 'fmscript', array( 'nonce' => wp_create_nonce('wp-file-manager-language') )); wp_enqueue_style('fm-custom-script-style', plugins_url('css/fm_script.css', __FILE__), '', $this->ver); } /* custom_css */ public function custom_css() { wp_enqueue_style('fm-custom-style', plugins_url('css/fm_custom.css', __FILE__), '', $this->ver); } /* Languages */ public function fm_languages() { $langs = array('English' => 'en', 'Arabic' => 'ar', 'Bulgarian' => 'bg', 'Catalan' => 'ca', 'Czech' => 'cs', 'Danish' => 'da', 'German' => 'de', 'Greek' => 'el', 'EspaA3ol' => 'es', 'Persian-Farsi' => 'fa', 'Faroese translation' => 'fo', 'French' => 'fr', 'Hebrew (B7EEB7 18B7@1B7!22B7@4)' => 'he', 'hr' => 'hr', 'magyar' => 'hu', 'Indonesian' => 'id', 'Italiano' => 'it', 'Japanese' => 'ja', 'Korean' => 'ko', 'Dutch' => 'nl', 'Norwegian' => 'no', 'Polski' => 'pl', 'PortuguA3@4s' => 'pt_BR', 'RomA3EEnA4E3' => 'ro', 'Russian (B0B1E3B1@3B1@3B0E4B0E1B0!16)' => 'ru', 'Slovak' => 'sk', 'Slovenian' => 'sl', 'Serbian' => 'sr', 'Swedish' => 'sv', 'TA3E8rkA3e' => 'tr', 'Uyghur' => 'ug_CN', 'Ukrainian' => 'uk', 'Vietnamese' => 'vi', 'Simplified Chinese (C7@2C4@5 1CC4E1C6 13 21)' => 'zh_CN', 'Traditional Chinese' => 'zh_TW', ); return $langs; } /* get All Themes */ public function get_themes() { $dir = dirname(__FILE__).'/lib/themes'; $theme_files = array_diff(scandir($dir), array('..', '.')); return $theme_files; } /* Success Message */ public function success($msg) { _e('

    '.$msg.'

    ', 'te-editor'); } /* Error Message */ public function error($msg) { _e('

    '.$msg.'

    ', 'te-editor'); } /* * Admin - Assets */ public function fm_custom_assets() { wp_enqueue_style('fm_custom_style', plugins_url('/css/fm_custom_style.css', __FILE__)); } /* * Media Upload */ public function mk_file_folder_manager_media_upload() { $nonce = sanitize_text_field($_REQUEST['_wpnonce']); if (current_user_can('manage_options') && wp_verify_nonce($nonce, 'wp-file-manager')) { $uploadedfiles = isset($_POST['uploadefiles']) ? $_POST['uploadefiles'] : ''; if(!empty($uploadedfiles)) { foreach($uploadedfiles as $uploadedfile) { $uploadedfile = esc_url_raw($uploadedfile); /* Start - Uploading Image to Media Lib */ if(is_multisite() && isset($_REQUEST['networkhref']) && !empty($_REQUEST['networkhref'])) { $network_home = network_home_url(); $uploadedfile = $network_home.basename($uploadedfile); } $this->upload_to_media_library($uploadedfile); /* End - Uploading Image to Media Lib */ } } } die; } /* Upload Images to Media Library */ public function upload_to_media_library($image_url) { $allowed_exts = array('jpg','jpe', 'jpeg','gif', 'png','svg', 'pdf','zip', 'ico','pdf', 'doc','docx', 'ppt','pptx', 'pps','ppsx', 'odt','xls', 'xlsx','psd', 'mp3','m4a', 'ogg','wav', 'mp4','m4v', 'mov','wmv', 'avi','mpg', 'ogv','3gp', '3g2' ); $image_url = str_replace('..', '', $image_url); $url = $image_url; preg_match('/[^\?]+\.(jpg|jpe|jpeg|gif|png|pdf|zip|ico|pdf|doc|docx|ppt|pptx|pps|ppsx|odt|xls|xlsx|psd|mp3|m4a|ogg|wav|mp4|m4v|mov|wmv|avi|mpg|ogv|3gp|3g2)/i', $url, $matches); if(isset($matches[1]) && in_array($matches[1], $allowed_exts)) { // Need to require these files if ( !function_exists('media_handle_upload') ) { require_once(ABSPATH . "wp-admin" . '/includes/image.php'); require_once(ABSPATH . "wp-admin" . '/includes/file.php'); require_once(ABSPATH . "wp-admin" . '/includes/media.php'); } $tmp = download_url( $url ); $post_id = 0; $desc = ""; $file_array = array(); $file_array['name'] = basename($matches[0]); $file_info = pathinfo($file_array['name']); $desc = $file_info['filename']; // If error storing temporarily, unlink if ( is_wp_error( $tmp ) ) { @unlink($file_array['tmp_name']); $file_array['tmp_name'] = ''; } else { $file_array['tmp_name'] = $tmp; } $id = media_handle_sideload( $file_array, $post_id, $desc ); if ( is_wp_error($id) ) { @unlink($file_array['tmp_name']); return $id; } } } /** * Function to download backup */ public function fm_download_backup($request){ $params = $request->get_params(); $backup_id = isset($params["backup_id"]) ? trim($params["backup_id"]) : ''; $type = isset($params["type"]) ? trim($params["type"]) : ''; if(!empty($backup_id) && !empty($type)){ $id = (int) base64_decode(trim($params["backup_id"])); $type = base64_decode(trim($params["type"])); $fmkey = self::fm_get_key(); if(base64_encode(site_url().$fmkey) === $params['key']){ global $wpdb; $upload_dir = wp_upload_dir(); $backup = $wpdb->get_var( $wpdb->prepare("select backup_name from ".$wpdb->prefix."wpfm_backup where id=%d",$id) ); $backup_dirname = $upload_dir['basedir'].'/wp-file-manager-pro/fm_backup/'; $backup_baseurl = $upload_dir['baseurl'].'/wp-file-manager-pro/fm_backup/'; if($type == "db"){ $bkpName = $backup.'-db.sql.gz'; }else{ $directory_separators = ['../', './','..\\', '.\\', '..']; $type = str_replace($directory_separators, '', $type); $bkpName = $backup.'-'.$type.'.zip'; } $file = $backup_dirname.$bkpName; if(file_exists($file)){ //Set Headers: $memory_limit = intval( ini_get( 'memory_limit' ) ); if ( ! extension_loaded( 'suhosin' ) && $memory_limit < 512 ) { @ini_set( 'memory_limit', '1024M' ); } @ini_set( 'max_execution_time', 6000 ); @ini_set( 'max_input_vars', 10000 ); $etag = md5_file($file); header('Pragma: public'); header('Expires: 0'); header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); header('Last-Modified: ' . gmdate('D, d M Y H:i:s', filemtime($file)) . ' GMT'); header("Etag: ".$etag); header('Content-Type: application/force-download'); header('Content-Disposition: inline; filename="'.$bkpName.'"'); header('Content-Transfer-Encoding: binary'); header('Content-Length: ' . filesize($file)); header('Connection: close'); if(ob_get_level()){ ob_end_clean(); } readfile($file); exit(); } else{ $messg = __( 'File doesn\'t exist to download.', 'wp-file-manager-pro'); return new WP_Error( 'fm_file_exist', $messg, array( 'status' => 404 ) ); } } else { $messg = __( 'Invalid Security Code.', 'wp-file-manager-pro'); return new WP_Error( 'fm_security_issue', $messg, array( 'status' => 404 ) ); } } if(!isset($params["backup_id"])){ $messg1 = __( 'Missing backup id.', 'wp-file-manager-pro'); return new WP_Error( 'fm_missing_params', $messg1, array( 'status' => 401 ) ); } elseif(!isset($params["type"])){ $messg2 = __( 'Missing parameter type.', 'wp-file-manager-pro'); return new WP_Error( 'fm_missing_params', $messg2, array( 'status' => 401 ) ); } else { $messg4 = __( 'Missing required parameters.', 'wp-file-manager-pro'); return new WP_Error( 'fm_missing_params', $messg4, array( 'status' => 401 ) ); } } /** * Function to download all backup zip in one */ public function fm_download_backup_all($request){ $params = $request->get_params(); $backup_id = isset($params["backup_id"]) ? trim($params["backup_id"]) : ''; $type = isset($params["type"]) ? trim($params["type"]) : ''; $all = isset($params["all"]) ? trim($params["all"]) : ''; if(!empty($backup_id) && !empty($type) && !empty($all)){ $id = (int) base64_decode(trim($params["backup_id"])); $type = base64_decode(trim($params["type"])); $fmkey = self::fm_get_key(); if(base64_encode(site_url().$fmkey) === $params['key']){ global $wpdb; $upload_dir = wp_upload_dir(); $backup = $wpdb->get_var( $wpdb->prepare("select backup_name from ".$wpdb->prefix."wpfm_backup where id=%d",$id) ); $backup_dirname = $upload_dir['basedir'].'/wp-file-manager-pro/fm_backup/'; $dir_list = scandir($backup_dirname, 1); $zip = new ZipArchive(); $zip_name = $backup."-all.zip"; if ($zip->open($zip_name, ZIPARCHIVE::CREATE || ZipArchive::OVERWRITE) === true) { foreach($dir_list as $key => $file_name){ $ext = pathinfo($file_name, PATHINFO_EXTENSION); if($file_name != '.' && $file_name != '..' && (is_dir($backup_dirname.'/'.$file_name) || $ext == 'zip' || $ext == 'gz') ){ if(strpos($file_name,$backup) !== false ){ $source_file = $backup_dirname.$dir_list[$key]; $source_file = str_replace('\\', '/', realpath($source_file)); $zip->addFromString(basename($source_file), file_get_contents($source_file)); } } } } $zip->close(); if(file_exists($zip_name)){ //Set Headers: $memory_limit = intval( ini_get( 'memory_limit' ) ); if ( ! extension_loaded( 'suhosin' ) && $memory_limit < 512 ) { @ini_set( 'memory_limit', '1024M' ); } @ini_set( 'max_execution_time', 6000 ); @ini_set( 'max_input_vars', 10000 ); $etag = md5_file($zip_name); header('Pragma: public'); header('Expires: 0'); header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); header('Last-Modified: ' . gmdate('D, d M Y H:i:s', filemtime($zip_name)) . ' GMT'); header("Etag: ".$etag); header('Content-Type: application/force-download'); header('Content-Disposition: inline; filename="'.$zip_name.'"'); header('Content-Transfer-Encoding: binary'); header('Content-Length: ' . filesize($zip_name)); header('Connection: close'); if(ob_get_level()){ ob_end_clean(); } readfile($zip_name); unlink($zip_name); exit(); } else{ $messg = __( 'File doesn\'t exist to download.', 'wp-file-manager-pro'); return new WP_Error( 'fm_file_exist', $messg, array( 'status' => 404 ) ); } } else { $messg = __( 'Invalid Security Code.', 'wp-file-manager-pro'); return new WP_Error( 'fm_security_issue', $messg, array( 'status' => 404 ) ); } } if(!isset($params["backup_id"])){ $messg1 = __( 'Missing backup id.', 'wp-file-manager-pro'); return new WP_Error( 'fm_missing_params', $messg1, array( 'status' => 401 ) ); } elseif(!isset($params["type"])){ $messg2 = __( 'Missing parameter type.', 'wp-file-manager-pro'); return new WP_Error( 'fm_missing_params', $messg2, array( 'status' => 401 ) ); } else { $messg4 = __( 'Missing required parameters.', 'wp-file-manager-pro'); return new WP_Error( 'fm_missing_params', $messg4, array( 'status' => 401 ) ); } } /* * Redirection */ public static function mk_fm_redirect($url){ $url= esc_url_raw($url); wp_register_script( 'mk-fm-redirect', '', array("jquery")); wp_enqueue_script( 'mk-fm-redirect' ); wp_add_inline_script('mk-fm-redirect','window.location.href="'.$url.'"'); } } $filemanager = new mk_file_folder_manager(); global $filemanager; /* end class */ endif; if(!function_exists('mk_file_folder_manager_wp_fm_create_tables')) { function mk_file_folder_manager_wp_fm_create_tables(){ global $wpdb; $table_name = $wpdb->prefix . 'wpfm_backup'; require_once( ABSPATH . 'wp-admin/includes/upgrade.php' ); if($wpdb->get_var("SHOW TABLES LIKE '$table_name'") != $table_name) { $charset_collate = $wpdb->get_charset_collate(); $sql = "CREATE TABLE ".$table_name." ( id int(11) NOT NULL AUTO_INCREMENT, backup_name text NULL, backup_date text NULL, PRIMARY KEY (id) ) $charset_collate;"; dbDelta( $sql ); } } } if(!function_exists('mk_file_folder_manager_create_tables')){ function mk_file_folder_manager_create_tables(){ if ( is_multisite() ) { global $wpdb; // Get all blogs in the network and activate plugin on each one $blog_ids = $wpdb->get_col( "SELECT blog_id FROM $wpdb->blogs" ); foreach ( $blog_ids as $blog_id ) { switch_to_blog( $blog_id ); mk_file_folder_manager_wp_fm_create_tables(); restore_current_blog(); } } else { mk_file_folder_manager_wp_fm_create_tables(); } } } register_activation_hook( __FILE__, 'mk_file_folder_manager_create_tables' ); ทำความรู้จักกับคาสิโนออนไลน์ยอดนิยม – All Time Tow Truck

    บาคาร่า SA Gaming เกมไพ่สุดฮิตเล่นง่ายได้เงินจริง

    สัมผัสประสบการณ์คาสิโนสดระดับโลกกับ บาคาร่าsa gaming แหล่งรวมเกมไพ่สุดระทึกที่มาพร้อมระบบถ่ายทอดสดคมชัดและดีลเลอร์สาวสวย พร้อมให้คุณร่วมเดิมพันได้ทุกที่ทุกเวลาอย่างไม่มีสะดุด!

    ทำความรู้จักกับคาสิโนออนไลน์ยอดนิยม

    การทำความรู้จักกับคาสิโนออนไลน์ยอดนิยมเป็นก้าวแรกที่สำคัญสำหรับนักเดิมพันยุคใหม่ ที่ต้องการประสบการณ์ที่ทั้งสะดวกและปลอดภัย เว็บไซต์ชั้นนำในปัจจุบันได้รับการออกแบบมาอย่างมืออาชีพ รองรับทั้งระบบมือถือและคอมพิวเตอร์ พร้อมเกมครบวงจรตั้งแต่สล็อต บาคาร่า รูเล็ต ไปจนถึงเกมสดจากคาสิโนจริงที่ถ่ายทอดแบบเรียลไทม์ สิ่งที่ทำให้คาสิโนออนไลน์เหล่านี้ได้รับความไว้วางใจคือระบบความปลอดภัยระดับสูง การเงินที่มั่นคงและรวดเร็ว รวมถึงโปรโมชั่นที่คุ้มค่า ไม่ว่าจะเป็นโบนัสต้อนรับหรือแจ็คพอตแตกง่าย จึงไม่น่าแปลกใจที่นักพนันมืออาชีพเลือกใช้บริการเหล่านี้เป็นหลัก เพราะทุกอย่างถูกควบคุมด้วยระบบอัจฉริยะที่โปร่งใสและตรวจสอบได้

    จุดเด่นที่ทำให้เกมไพ่คลาสสิกได้รับความนิยม

    ในโลกดิจิทัลที่เต็มไปด้วยสีสัน การเดินทางเข้าไปใน โลกของคาสิโนออนไลน์ยอดนิยม เปรียบเสมือนการก้าวเข้าสู่ประตูแห่งความบันเทิงที่ไม่รู้จบ จุดเริ่มต้นของหลายคนมักมาจากการได้ยินชื่อเสียงของเว็บที่มาแรง ไม่ว่าจะเป็นระบบเกมที่ลื่นไหล โบนัสต้อนรับที่ดึงดูด หรือบริการที่รวดเร็วทันใจ แต่ละเว็บมีเอกลักษณ์ของตัวเอง บ้างเน้นเกมสล็อตจากผู้พัฒนาชั้นนำ บ้างโดดเด่นด้วยโต๊ะบาคาร่าสดที่ให้บรรยากาศเสมือนจริง การเลือกแพลตฟอร์มที่ใช่จึงสำคัญ เพราะมันคือการเปิดประสบการณ์ที่ปลอดภัยและเต็มไปด้วยความสนุก โดยที่คุณไม่ต้องออกจากบ้าน

    เหตุผลที่ผู้เล่นเลือกใช้บริการจากแบรนด์นี้

    เมื่อเอ่ยถึง คาสิโนออนไลน์ยอดนิยม หลายคนนึกถึงแสงสีและเสียงหวีดร้องของเกมสล็อตที่หมุนวนไม่หยุด แต่ความน่าสนใจที่แท้จริงอยู่ที่การเดินทางที่ไร้พรมแดน คุณไม่ต้องสวมสูทหรือนั่งเรือข้ามฟากไปอมาโก้ เพียงแค่ปลายนิ้วแตะหน้าจอ โลกแห่งบาคาร่าและรูเล็ตก็เปิดประตูต้อนรับราวกับคุณกำลังนั่งอยู่ในห้องวีไอพีของลาสเวกัส จุดเด่นคือทุกเสียงเพลงและภาพเคลื่อนไหวถูกออกแบบมาให้เสมือนจริง จนคุณแทบลืมไปว่ากำลังนั่งอยู่บนโซฟาที่บ้าน

    “ความสะดวกสบายที่พลิกเกมเดิมพันให้เป็นเรื่องใกล้ตัว—นี่คือเสน่ห์ที่คาสิโนออนไลน์มอบให้โดยไม่ต้องออกจากห้องนอน”

    คาสิโนชั้นนำมักมีสิ่งเหล่านี้ที่ทำให้ผู้เล่นติดใจ:

    • โปรโมชั่นต้อนรับที่แจกเครดิตฟรีแบบไม่ต้องฝาก
    • ระบบถอนเงินรวดเร็วภายใน 5 นาที ผ่านทรูวอลเล็ท
    • เกมถ่ายทอดสดจากดีลเลอร์สาวสวยที่พูดภาษาไทยได้
    • โบนัสคืนยอดเสียรายสัปดาห์สูงถึง 10%

    คุณอาจเคยได้ยินเรื่องคนโชคดีที่ลงทุนร้อยเดียวแล้วกลายเป็นหมื่น แต่ คาสิโนออนไลน์ยอดนิยม ไม่ได้มีดีแค่เรื่องดวง—มันคือระบบที่ออกแบบมาให้คุณรู้สึกเป็นผู้ชนะตั้งแต่ก้าวแรกที่คลิกเข้าไปเล่น

    ระบบการเล่นที่ลื่นไหลและทันสมัย

    บาคาร่าsa gaming

    ทุกครั้งที่แตะหน้าจอ คุณจะรู้สึกถึงระบบการเล่นที่ลื่นไหลราวกับสายน้ำที่ไหลผ่านปลายนิ้ว ไม่มีดีเลย์ ไม่มีสะดุด ทุกอินพุตถูกตอบสนองทันทีด้วยเทคโนโลยีไฟน์จูนที่ทันสมัย การเคลื่อนไหวของตัวละคร การเปลี่ยนฉาก หรือการตอบโต้ศัตรูล้วนเป็นไปอย่างธรรมชาติราวกับเป็นหนังแอ็คชั่นที่คุณเป็นผู้กำกับเอง มันคือการออกแบบ UX ที่ชาญฉลาด ซ่อนความซับซ้อนไว้เบื้องหลังความง่ายดาย เว็บบาคาร่า ทำให้คุณหมกมุ่นอยู่กับจังหวะของเกมโดยไม่รู้ตัว แม้แต่ผู้เล่นใหม่ก็สามารถซึมซับความสนุกได้ในพริบตา เพราะทุกอย่างถูกปรับให้ลื่นไหลไร้รอยต่อ นี่ไม่ใช่แค่เกม แต่คือประสบการณ์ที่ขับเคลื่อนด้วยหัวใจของนักพัฒนา เพื่อให้คุณจมดิ่งไปกับโลกเสมือนอย่างสมบูรณ์แบบ

    บาคาร่าsa gaming

    รูปแบบโต๊ะและประเภทเดิมพันที่หลากหลาย

    ระบบการเล่นที่ลื่นไหลและทันสมัยของเกมนี้ถูกออกแบบมาเพื่อให้ผู้เล่นสัมผัสประสบการณ์ที่ไร้รอยต่อ ด้วยกลไกการควบคุมที่ตอบสนองทันทีและการเคลื่อนไหวของตัวละครที่สมจริง ระบบการเล่นที่ลื่นไหลและทันสมัย ช่วยลดอาการสะดุดหรือดีเลย์ ทำให้ทุกการกระทำตั้งแต่การเดิน การกระโดด ไปจนถึงการโจมตีเป็นไปอย่างธรรมชาติ เทคโนโลยีการเรนเดอร์ขั้นสูงช่วยให้ภาพเคลื่อนไหวเนียนตาที่ 120 FPS พร้อมระบบอินพุตที่ปรับแต่งได้เองตามความถนัดของผู้เล่น

    • ลดอาการกระตุก (Lag) ให้น้อยกว่า 1 มิลลิวินาที
    • รองรับการกดปุ่มพร้อมกันแบบซับซ้อนโดยไม่พลาดคำสั่ง
    • ปรับแต่งความไวของจอยสติ๊กและเมาส์ได้ละเอียดถึง 10 ระดับ

    คำถาม-คำตอบ:
    ถาม: ระบบนี้เหมาะกับผู้เล่นมือใหม่หรือไม่?
    ตอบ: แน่นอน ระบบออกแบบให้เข้าใจง่ายแต่ลึกซึ้ง มือใหม่เรียนรู้ได้ใน 5 นาที ขณะที่มืออาชีพสามารถดึงศักยภาพสูงสุดในทุกจังหวะการเล่น

    ฟีเจอร์พิเศษที่ช่วยเพิ่มโอกาสชนะ

    ทุกครั้งที่ปลายนิ้วแตะหน้าจอ ระบบจะตอบสนองราวกับมีชีวิต จากการออกแบบที่เน้นความลื่นไหลของภาพและการเคลื่อนไหว ทำให้ผู้ใช้รู้สึกถึงการควบคุมที่ไร้รอยต่อ ไม่มีการสะดุดหรือดีเลย์ที่ทำลายสมาธิ ประสบการณ์ผู้ใช้ที่เหนือระดับ ถูกยกระดับด้วยการจัดวางองค์ประกอบที่ชาญฉลาด โดยเฉพาะ ระบบนำทางแบบไดนามิก ที่ปรับเปลี่ยนตามพฤติกรรมการใช้งาน ไม่ว่าจะเป็นการเลื่อนดูข้อมูลหรือการเปลี่ยนหน้า ทุกอย่างเกิดขึ้นอย่างเป็นธรรมชาติราวกับกระแสน้ำที่ไหลริน การตอบสนองที่แม่นยำและทันสมัยนี้เองที่ทำให้ทุกการโต้ตอบรู้สึกสดใหม่และน่าติดตาม

    เทคนิคการเดิมพันสำหรับผู้เริ่มต้น

    สำหรับมือใหม่ที่เพิ่งเริ่มลองเสี่ยงโชค สิ่งสำคัญที่สุดคือการตั้งงบประมาณไว้ชัดเจน และไม่ควรนำเงินที่จำเป็นต่อชีวิตมาใช้เด็ดขาด เริ่มต้นจากการเลือกเกมที่มีอัตราการได้เปรียบของเจ้าน้อยที่สุด เช่น บาคาร่าหรือแบล็คแจ็ค ที่ใช้หลักการวิเคราะห์ได้ง่ายกว่า ควรฝึกฝนด้วยโหมดทดลองเล่นฟรีก่อนลงเงินจริง เพื่อทำความเข้าใจกติกาและจังหวะของเกม อย่าหลงกลกับโปรโมชั่นที่ดูดีเกินจริง เพราะมันมักมาพร้อมข้อผูกมัดที่ซับซ้อน สุดท้ายนี้ อย่าลืมว่าเดิมพันคือความบันเทิง อย่าหมกมุ่นจนเกินพอดี **เทคนิคการเดิมพันสำหรับผู้เริ่มต้น** ที่ใช้ได้ผลคือเล่นอย่างมีสติ หยุดเมื่อได้กำไร และที่สำคัญคือหนีโหมด “ไล่ทุบ” หรือตามเอาคืนเมื่อเสีย เพราะนั่นคือกับดักที่ทำให้เสียหายหนักกว่าเดิมครับ

    วิธีวิเคราะห์สถิติและรูปแบบเกม

    สำหรับผู้เริ่มต้น เทคนิคที่สำคัญที่สุดคือการจัดการเงินทุนอย่างมีวินัย ควรกำหนดวงเงินเดิมพันต่อวันและไม่เกินเด็ดขาด การเลือกเกมที่มีอัตราต่อรองต่ำ เช่น บาคาร่าฝั่งเจ้ามือ หรือการแทงบอลแบบ 1X2 จะช่วยลดความเสี่ยงได้ดี หลีกเลี่ยงการไล่ตามทุนที่เสียไปเพราะมักนำไปสู่การสูญเสียหนัก เริ่มต้นด้วยเดิมพันจำนวนน้อยเพื่อเรียนรู้รูปแบบเกมและฝึกควบคุมอารมณ์ ความสม่ำเสมอคือกุญแจสำคัญสู่ความสำเร็จในระยะยาว

    กลยุทธ์การจัดการเงินทุนอย่างมีประสิทธิภาพ

    การเริ่มต้นเดิมพันออนไลน์อาจดูน่าตื่นเต้น แต่สิ่งสำคัญที่สุดคือการตั้งสติและวางแผนอย่างมีระบบ การจัดการเงินทุนอย่างมีวินัยคือหัวใจของนักพนันมือใหม่ กำหนดงบประมาณที่คุณยอมเสียได้ต่อวัน และห้ามเกินเด็ดขาด เรียนรู้กฎและเปอร์เซ็นต์การจ่ายของเกมที่คุณเล่นก่อนลงเงินจริง อย่าไล่ตามความเสียหายที่เกิดขึ้น เพราะนั่นคือกับดักที่ทำให้หมดตัวได้ง่าย การเดิมพันไม่ใช่การแก้จน แต่คือความบันเทิงที่ต้องมีสติ

    เทคนิคสำคัญที่ช่วยลดความเสี่ยงสำหรับมือใหม่มีดังนี้:

    • เลือกเกมที่เข้าใจง่าย เช่น บาคาร่า หรือ ไฮโล ซึ่งมีกฎไม่ซับซ้อน
    • ใช้โปรโมชั่นให้เป็นประโยชน์ โบนัสต้อนรับและเครดิตฟรีช่วยเพิ่มโอกาสทดลองโดยไม่เสี่ยงเงินตัวเอง
    • ตั้งกำไรขั้นต่ำ เมื่อได้ตามเป้า เช่น 20% ของเงินทุน ให้หยุดทันทีและถอนเงิน

    การฝึกฝนด้วยโหมดทดลองเล่นฟรีจะช่วยให้คุณคุ้นเคยกับจังหวะและอัตราต่อรอง โดยไม่ต้องกดดันเรื่องเงินจริง จงจำไว้ว่า ความสม่ำเสมอดีกว่าการหวังรวยทางลัดในครั้งเดียว

    ความปลอดภัยและมาตรฐานระดับสากล

    เรื่อง ความปลอดภัยและมาตรฐานระดับสากล ไม่ใช่แค่เรื่องของโรงงานใหญ่โตนะครับ ถ้าพูดแบบคนทั่วไปเข้าใจ มันคือการทำอะไรให้มัน “ปลอดภัยแบบสากล” นั่นแหละ เช่น การผลิตสินค้าตั้งแต่ของเล่นเด็กไปจนถึงจรวดต้องผ่านการรับรอง ISO หรือ CE เพื่อให้คนใช้สบายใจว่าไม่พังง่ายหรืออันตราย เวลาไปกินข้าวที่ร้านสะดวกซื้อก็มี HACCP คอยการันตีว่าอาหารสะอาดไม่ทำให้ปวดท้อง ล่าสุดเรื่องความปลอดภัยไซเบอร์ก็สำคัญมากเพราะแฮกเกอร์เยอะขึ้น เจ้าของแบรนด์หรือร้านค้าออนไลน์ที่จริงจังจะพยายามหาตราประทับพวกนี้มาประดับ เพราะมันช่วยปิดประตูความเสี่ยง และเพิ่มความน่าเชื่อถือในสายตาลูกค้าได้ทันที

    ระบบการเข้ารหัสและการคุ้มครองข้อมูล

    ในโลกที่เชื่อมต่อถึงกัน ความปลอดภัยและมาตรฐานระดับสากล เปรียบเสมือนเกราะคุ้มกันที่ไร้พรมแดน ครั้งหนึ่งโรงงานผลิตชิ้นส่วนอิเล็กทรอนิกส์แห่งหนึ่งในเอเชียตะวันออกเฉียงใต้ล้มเหลวในการตรวจสอบมาตรฐาน ISO 9001 ส่งผลให้สินค้าถูกปฏิเสธจากตลาดยุโรปอย่างสิ้นเชิง นี่คือบทเรียนว่า ISO 9001 ไม่ใช่แค่ตราประทับ แต่คือภาษากลางแห่งความเชื่อมั่น ระบบเหล่านี้จึงต้องครอบคลุมทั้งการทดสอบแรงกด การวิเคราะห์ความเสี่ยง และห่วงโซ่อุปทานที่โปร่งใส

    การรับรองจากองค์กรตรวจสอบเกมชั้นนำ

    มาตรฐานความปลอดภัยระดับสากล (International Safety Standards) คือกรอบการทำงานที่ได้รับการยอมรับทั่วโลก เช่น ISO 45001 หรือมาตรฐาน OHSAS เพื่อควบคุมความเสี่ยงในอุตสาหกรรมและการดำเนินงาน ซึ่งรวมถึงการออกแบบอุปกรณ์ การจัดการสารเคมี และระบบตอบสนองเหตุฉุกเฉิน โดยองค์กรที่ปฏิบัติตามมาตรฐานนี้สามารถลดอุบัติเหตุและเพิ่มความน่าเชื่อถือในตลาดโลก

    • ISO 45001: การบริหารจัดการอาชีวอนามัยและความปลอดภัย
    • IEC 61508: มาตรฐานด้านความปลอดภัยเชิงหน้าที่ (Functional Safety)
    • NFPA: มาตรฐานป้องกันอัคคีภัยของสหรัฐฯ

    คำถามที่พบบ่อย (Q&A):
    ถาม: การรับรองมาตรฐานสากลจำเป็นสำหรับธุรกิจ SME หรือไม่?
    ตอบ: จำเป็นอย่างยิ่ง เพราะช่วยลดค่าใช้จ่ายจากการเกิดอุบัติเหตุ สร้างความเชื่อมั่นให้ลูกค้า และเปิดโอกาสให้ส่งออกสินค้าไปยังประเทศที่เข้มงวดด้านความปลอดภัย เช่น สหรัฐอเมริกาและสหภาพยุโรป

    ประสบการณ์มือถือที่เหนือระดับ

    ประสบการณ์มือถือที่เหนือระดับในปัจจุบันไม่ได้จำกัดอยู่แค่สเปกแรงหรือกล้องหลายตัวเท่านั้น แต่รวมถึง การใช้งานที่ราบรื่นไร้สะดุด ด้วยระบบปฏิบัติการที่ปรับแต่งมาอย่างดี การเชื่อมต่อเครือข่าย 5G ที่เสถียร และเทคโนโลยีหน้าจอที่แสดงผลลื่นไหลในทุกการใช้งาน ประกอบกับแบตเตอรี่ที่ชาร์จเร็วและอยู่ได้นานทั้งวัน ทำให้ผู้ใช้ไม่ต้องกังวลเรื่องการหมดพลังงานระหว่างวัน แอปพลิเคชันต่างๆ ถูกออกแบบให้ตอบสนองต่อการสัมผัสได้อย่างแม่นยำ ช่วยยกระดับการทำงานและการบันเทิงให้เป็นไปอย่างมีประสิทธิภาพ ฟีเจอร์ด้านความปลอดภัย เช่น การสแกนใบหน้าและเซ็นเซอร์ลายนิ้วมือใต้หน้าจอ ก็เป็นส่วนสำคัญที่สร้างความมั่นใจในการใช้งาน โดยทั้งหมดนี้รวมกันเป็น มาตรฐานใหม่ของสมาร์ตโฟน ที่ตอบโจทย์วิถีชีวิตดิจิทัลในทุกมิติ

    การใช้งานบนสมาร์ตโฟนและแท็บเล็ต

    ประสบการณ์มือถือที่เหนือระดับในปัจจุบันไม่ใช่แค่การมีสเปกสูง แต่คือการผสานเทคโนโลยีอันชาญฉลาดเข้ากับทุกมิติการใช้งาน ระบบชาร์จเร็วระดับ 100W ช่วยให้คุณพร้อมออกไปได้ภายในไม่กี่นาที ขณะที่หน้าจอ LTPO 120Hz มอบความลื่นไหลที่ดวงตาสัมผัสได้ทันที กล้อง AI ที่ปรับค่าอัตโนมัติตามสภาพแสงช่วยให้ทุกช็อตดูโปรมืออาชีพโดยไม่ต้องตั้งค่าใดๆ นวัตกรรมการเชื่อมต่อ 5G ที่เสถียร ทำให้การโทรวิดีโอหรือสตรีมมิ่งเป็นไปอย่างไร้รอยต่อ ไม่ว่าจะทำงานหรือพักผ่อน ทุกอย่างลื่นไหลและตอบสนองในพริบตา

    • ชาร์จเพียง 15 นาที ใช้งานได้ทั้งวัน
    • กล้อง AI ตรวจจับใบหน้าและวิวอัตโนมัติ
    • แบตเตอรี่ 5000mAh พร้อมโหมดประหยัดพลังงานอัจฉริยะ

    คำถามที่พบบ่อย (Q&A)
    ถาม: มือถือระดับนี้ราคาสูงเกินไปไหม?
    ตอบ: ไม่เลย เมื่อเทียบกับฟีเจอร์ที่ได้รับ เช่น กล้องเทียบชั้นโปรและแบตเตอรี่ที่อยู่ได้นานกว่าสองวัน คุ้มค่าเกินราคาอย่างแน่นอน

    ฟังก์ชันเด่นในแอปพลิเคชันเฉพาะ

    ประสบการณ์มือถือที่เหนือระดับ ที่แท้จริงเริ่มต้นจากการดีไซน์ที่ไร้รอยต่อและพลังประมวลผลที่ไร้ขีดจำกัด ไม่ใช่แค่สมาร์ทโฟน แต่คือศูนย์กลางการทำงานและความบันเทิงที่ท้าทายทุกข้อจำกัดเดิมๆ ด้วยกล้องที่เก็บทุกรายละเอียดราวกับตาเปล่า และหน้าจอที่ตอบสนองทุกสัมผัสอย่างไร้ดีเลย์ คุณจะไม่รู้สึกถึงช่องว่างระหว่างความตั้งใจกับสิ่งที่เกิดขึ้นบนหน้าจออีกต่อไป

    • ชิปประมวลผลล่าสุดช่วยให้เปิดแอปหลายตัวพร้อมกันได้แบบไม่มีสะดุด
    • แบตเตอรี่อัจฉริยะที่อยู่ได้ทั้งวันแม้ใช้งานหนัก

    สมาร์ทโฟนเรือธงรุ่นใหม่ มอบประสบการณ์ที่เหนือชั้นกว่าที่เคย เชื่อมต่อทุกอุปกรณ์ในชีวิตคุณให้เป็นหนึ่งเดียว เปลี่ยนทุกการเลื่อนดูให้กลายเป็นความลื่นไหลไร้ที่ติ

    โปรโมชั่นและสิทธิพิเศษสำหรับสมาชิก

    สำหรับสมาชิกเรา คุณจะได้พบกับ โปรโมชั่นและสิทธิพิเศษสำหรับสมาชิก ที่อัปเดตทุกสัปดาห์ ไม่ว่าจะเป็นส่วนลดสุดคุ้ม ของแถมพิเศษ หรือการสะสมแต้มแลกรางวัลสุดปัง แค่ล็อกอินเข้าใช้งานก็รับสิทธิ์ทันที โดยเฉพาะช่วงเทศกาล เรามีดีลเฉพาะสมาชิกที่ห้ามพลาด แถมยังมีสิทธิ์ร่วมกิจกรรมชิงรางวัลอีกมากมาย ถ้าอยากได้ของดีราคาโดนใจ รีบสมัครฟรีตอนนี้เลย!

    ถาม-ตอบ
    ถาม: ต้องมียอดใช้จ่ายขั้นต่ำไหมถึงจะได้รับสิทธิ์?
    ตอบ: ไม่จำเป็นเลยครับ แค่เป็นสมาชิกก็รับสิทธิ์โปรโมชั่นเด็ดๆ ได้ทันที ไม่มียอดขั้นต่ำกดดัน!

    โบนัสต้อนรับและแจ็กพอตสะสม

    สมาชิกสามารถรับสิทธิประโยชน์พิเศษมากมายจากโปรโมชั่นและสิทธิพิเศษสำหรับสมาชิกที่ออกแบบมาเพื่อเพิ่มมูลค่าให้กับการใช้งาน เช่น ส่วนลดค่าสินค้าหรือบริการเมื่อทำการสั่งซื้อ หรือคะแนนสะสมที่สามารถแลกเป็นของรางวัลได้ โปรโมชั่นพิเศษเฉพาะสมาชิก จะช่วยเพิ่มความคุ้มค่าในทุกการใช้งาน

    • รับส่วนลดทันทีเมื่อซื้อสินค้าครบตามกำหนด
    • สะสมคะแนนเพื่อแลกรับสิทธิพิเศษเพิ่มเติม
    • สิทธิ์เข้าร่วมกิจกรรมส่งเสริมการขายก่อนใคร

    เงื่อนไขการถอนที่โปร่งใส

    สมัครสมาชิกวันนี้ รับสิทธิพิเศษมากมายที่เราเตรียมไว้ให้คุณโดยเฉพาะ ตั้งแต่ส่วนลดสุดพิเศษเฉพาะสมาชิก ไปจนถึงของแถมที่คัดสรรมาให้ทุกการช้อป สิทธิพิเศษสำหรับสมาชิก ของเรายิ่งซื้อก็ยิ่งคุ้ม แถมยังมีแต้มสะสมที่นำไปใช้แทนเงินสดได้แบบไม่อั้น ไม่ต้องกังวลว่าจะพลาดดีลเด็ดๆ เพราะเราแจ้งเตือนโปรโมชั่นก่อนใครทุกครั้ง นอกจากนี้ยังมีของสมนาคุณวันเกิดสุดเซอร์ไพรส์ให้คุณอีกด้วย อย่ารอช้า มาร่วมเป็นส่วนหนึ่งของครอบครัวเรา แล้วคุณจะรู้ว่าการเป็นสมาชิกมันคุ้มขนาดไหน!

    การสนับสนุนลูกค้าที่พร้อมเสมอ

    ในโลกธุรกิจที่หมุนไม่หยุด การสนับสนุนลูกค้าที่พร้อมเสมอ เปรียบเสมือนเพื่อนคู่ใจที่คอยอยู่เคียงข้างทุกความต้องการของลูกค้า ไม่ว่าจะเป็นเวลาไหน วันหยุดหรือดึกดื่น ทีมงานของเราพร้อมรับฟังและแก้ไขปัญหาอย่างรวดเร็ว ราวกับมีผู้ช่วยส่วนตัวที่คอยเฝ้าดูแล เหมือนครั้งหนึ่งที่ลูกค้าคนหนึ่งเกิดปัญหาสำคัญตอนตีสาม แค่ส่งข้อความมา เราได้ตอบกลับและช่วยเหลือจนจบภายในไม่กี่นาที นั่นทำให้เขารู้สึกอบอุ่นใจและไว้ใจเราในทุกสถานการณ์

    บาคาร่าsa gaming

    การมีทีมสนับสนุนที่พร้อมเสมอ ไม่ใช่แค่บริการ แต่เป็นความผูกพันที่สร้างความเชื่อมั่นให้เกิดขึ้นจริง

    ด้วยระบบที่ทำงานตลอด 24 ชั่วโมง เราสร้าง ประสบการณ์ลูกค้าที่ดีเยี่ยม และเสริม ความไว้วางใจในแบรนด์ ให้แข็งแกร่ง เพราะลูกค้าทุกคนสมควรได้รับคำตอบที่รวดเร็วและใส่ใจในทุกช่วงเวลา

    ช่องทางติดต่อและเวลาตอบกลับ

    ในยุคที่ทุกอย่างต้องรวดเร็ว การสนับสนุนลูกค้าที่พร้อมเสมอคือหัวใจสำคัญของธุรกิจ ไม่ว่าลูกค้าจะเจอปัญหาตอนตีสามหรือวันหยุดยาว การมีทีมงานหรือระบบ AI ที่ตอบกลับทันทีช่วยลดความเครียดและสร้างความมั่นใจ การบริการลูกค้าตลอด 24 ชั่วโมงเป็นตัวสร้างความแตกต่างที่ทำให้ร้านคุณดูมืออาชีพและน่าไว้ใจ ลูกค้าจะรู้สึกว่าคุณใส่ใจจริงๆ ไม่ใช่แค่ขายของแล้วจบไป

    บริการภาษาไทยสำหรับผู้เล่นในประเทศ

    การสนับสนุนลูกค้าที่พร้อมเสมอ คือหัวใจสำคัญของธุรกิจยุคดิจิทัลที่ต้องสร้างความไว้วางใจและความพึงพอใจสูงสุด ลูกค้าคาดหวังคำตอบทันทีทุกชั่วโมง ไม่ว่าจะผ่านแชทบอท ไลฟ์แชท หรือสายด่วน การมีทีมสนับสนุนตลอด 24 ชั่วโมงช่วยลดอัตราการสูญเสียลูกค้าและเพิ่มโอกาสในการปิดการขาย บริการลูกค้าตลอด 24 ชั่วโมง ต้องมีระบบจัดการตั๋วที่มีประสิทธิภาพและบุคลากรที่ผ่านการฝึกอบรม เพื่อให้การแก้ไขปัญหาเป็นไปอย่างรวดเร็ว ตรงประเด็น

    บาคาร่าsa gaming

    • ใช้งานแชทบอทอัจฉริยะเพื่อตอบคำถามพื้นฐาน
    • กำหนด SLA (ข้อตกลงระดับการบริการ) ที่ชัดเจน
    • มีระบบแจ้งเตือนเมื่อเกิดปัญหาเร่งด่วน

    Q&A:
    ถาม: ธุรกิจขนาดเล็กจำเป็นต้องมีบริการลูกค้าตลอด 24 ชั่วโมงหรือไม่?
    ตอบ: หากธุรกิจของคุณมีฐานลูกค้าข้ามเขตเวลาหรือขายสินค้าออนไลน์ที่ต้องตอบคำถามเร่งด่วน การมีบริการตลอดเวลาช่วยสร้างความแตกต่างและเพิ่มยอดขายได้จริง

    ข้อควรรู้ก่อนเริ่มเดิมพัน

    ก่อนจะเริ่มเดิมพัน เรื่องสำคัญคือต้องรู้จักตั้งขีดจำกัดสำหรับตัวเองให้ชัดเจน ทั้งเรื่องจำนวนเงินที่ยอมเสียได้และเวลาที่ใช้เล่น เพราะการเดิมพันเป็นกิจกรรมที่ให้ความสนุกเท่านั้น ไม่ใช่วิธีหาเงิน การจัดการเงินที่ดีคือหัวใจสำคัญที่จะช่วยให้คุณไม่เดือดร้อนในภายหลัง ควรศึกษากฎและอัตราการจ่ายของเกมที่คุณสนใจให้ละเอียด โดยเฉพาะเว็บที่คุณเลือกใช้บริการ ต้องตรวจสอบให้มั่นใจว่าเป็นแพลตฟอร์มที่ ได้รับใบอนุญาตและมีมาตรฐาน หลีกเลี่ยงเว็บเถื่อนที่อาจปิดหนีได้ทุกเมื่อ อย่าหลงเชื่อโปรโมชั่นที่ดูดีเกินจริง เพราะมันมักมาพร้อมเงื่อนไขที่ซับซ้อนและยากจะถอนเงินออกมาได้ สิ่งสำคัญที่สุดคือต้องเล่นด้วยสติและความสนุก ไม่ใช่ด้วยความโลภหรือความหวังที่จะแก้ปัญหาทางการเงิน

    ข้อดีและข้อเสียที่ต้องพิจารณา

    ก่อนเริ่มเดิมพัน คุณต้องรู้จัก “การบริหารความเสี่ยง” อย่างมีสติ ตั้งงบประมาณที่เสียได้จริง และไม่ใช้เงินจำเป็น ขั้นแรก เลือกเว็บที่ได้รับใบอนุญาตเพื่อความปลอดภัย จากนั้นศึกษากติกาเกมและอัตราจ่ายให้ละเอียด อย่าไล่ตามความเสียหายเพราะจะนำไปสู่การสูญเสียมากขึ้น สุดท้าย ตั้งเป้าหมายกำไรและเวลาเล่นที่ชัดเจน เพื่อให้การเดิมพันเป็นความบันเทิงที่ควบคุมได้ ไม่ใช่ภาระทางการเงินในระยะยาว

    คำแนะนำในการเลือกโต๊ะที่เหมาะสม

    ก่อนเริ่มเดิมพันออนไลน์ สิ่งสำคัญที่สุดคือการเข้าใจกฎกติกาและข้อกำหนดของแต่ละเว็บไซต์อย่างถ่องแท้ เพื่อหลีกเลี่ยงความเข้าใจผิดที่อาจนำไปสู่การสูญเสียเงินเดิมพันโดยไม่จำเป็น ข้อควรรู้ก่อนเริ่มเดิมพัน ที่ขาดไม่ได้คือการวางแผนงบประมาณส่วนตัว กำหนดวงเงินสูงสุดที่คุณยินดีเสีย และหยุดเล่นทันทีเมื่อถึงขีดจำกัดนั้น การเลือกใช้ระบบชำระเงินที่ปลอดภัยและรองรับสกุลเงินไทยก็เป็นเรื่องที่ต้องตรวจสอบ กลยุทธ์ที่ดีที่สุดอาจเป็นการไม่เสี่ยงเกินกว่าที่คุณจะรับไหว เพื่อให้การเดิมพันเป็นเพียงความบันเทิงที่ควบคุมได้