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' ); تحميل تطبيق 1xbet الرسمي للأندرويد والآيفون بالعربية تنزيل مصر 2025 - Theo Mandard

    Meilleures machines à sous à sydney

    1. Bonus De Bienvenue Casino En Ligne Sans Dépôt: Pour déposer pour ce Bonus, vous pouvez utiliser Jeton, Facture mobile, Bitcoin et d'autres méthodes de paiement populaires.
    2. Slots Aristocrat En Ligne Gratuits - Slotto est exploité par LeoVegas Gaming PLC.
    3. Machines à Sous Gratuits Pélican: Vous pourrez choisir n'importe quelle version de la roulette et la tester ou y jouer pour de l'argent réel directement depuis votre appareil portable.

    Gagner au black jack

    Règle Jeu De Roulette
    Comme mentionné, au Royaume-Uni, les machines à sous sont toujours appelées machines à fruits.
    Noms De Casino En Ligne
    Le casino Bondibet sans bonus de dépôt est presque toujours un choix parfait pour les joueurs sud-africains qui veulent jouer en ligne.
    Le temps ensoleillé favorise la bonne humeur.

    As compté comme 1 au poker

    Jeux De Machine à Sous Pour L Argent Réel
    Généralement, le champ pour utiliser le code sera sur la page de votre compte, la page de dépôt ou la page d'inscription si vous vous inscrivez pour un nouveau compte.
    La Roulette En Ligne Jouant D Autres Personnes Réelles
    Naturellement, nous devons remercier les fournisseurs de logiciels de casino tels que Evolution Gaming et Playtech pour cela.
    Gagner Des Stratégies De Roulette En Ligne

    تحميل تطبيق 1xbet الرسمي للأندرويد والآيفون بالعربية تنزيل مصر 2025

    تطبيق 1xbet: أفضل منصة للمراهنات الرياضية والكازينو في الشرق الأوسط

    Content

    لذا، لا تفوت الفرصة للاستفادة من المكافآت ورموز الترويج مثل رمز الترويج TELEASIA لزيادة أرباحك وتحسين تجربة اللعب على 1xBet app. في مصر، يقدم موقع 1xBet للمستخدمين مجموعة متنوعة من طرق الوصول إلى منصته من خلال تطبيقاته المتاحة على أنظمة Android و iOS. يقدم تطبيق 1xBet للأندرويد العديد من الميزات المفيدة التي تجعل عملية اللعب ووضع الرهانات مريحة للغاية للمستخدمين المصريين. في هذا القسم، يُتاح للمستخدمين إمكانية تخصيص إعدادات الرهان بالشكل الذي يرونه مناسبًا.

    • من المهم أن تختار مصدرًا موثوقًا لتحميل التطبيق، وفور الانتهاء من عملية التحميل، يمكنك الذهاب إلى مجلد التنزيلات على جهازك للعثور على ملف apk.
    • في هذه المرحلة، سيوفر لك التطبيق حقلًا خاصًا لإدخال الرمز الترويجي.
    • ألعاب 1xbet المجانية ودوران 1xbet المجاني متاحة للاعبين للاستمتاع بها دون الحاجة إلى إيداع.
    • محبو موقع الرهان 1xbet في مصر يمكنهم الوصول إلى محتوى اللعب عبر منصات مختلفة.

    طالما أن لديك متصفح جوال مزود بخاصية الفلاش واتصال جيد بالإنترنت ، فسوف تستمتع باللعب على إصدار الهاتف المحمول من موقع 1Xbet على الويب. إذا كنت من مستخدمي iPhone وترغب في تجربة مراهنات سهلة وسريعة، فإن تنزيل 1xBet على i phone هو الخيار المثالي. يتيح لك التطبيق الوصول إلى مجموعة » « واسعة من الرياضات، ألعاب الكازينو، والبث المباشر، مع أداء سلس وتصميم متوافق مع أجهزة iOS. كيفية تثبيت تطبيق 1xBet على نظام أندرويد؟لتثبيت تطبيق 1xBet على نظام أندرويد، لازم تروح على الموقع الرسمي وتدور على رابط تحميل 1xbet بالعربية. تأكد إنك فعلت خيار “السماح بالتثبيت من مصادر غير معروفة” في إعدادات الأمان على جهازك.

    كيفية تقديم طلب لسحب الأموال من تطبيق 1xbet المحمول

    ومع ذلك، يُفضل تنزيل التطبيق لتجربة أفضل في استخدام الميزات المتقدمة مثل الإشعارات الفورية والبث المباشر. عند اكتمال تنزيل برنامج 1xBet، من الضروري السماح بتثبيت التطبيقات من مصادر غير معروفة في إعدادات الجهاز. هذا إجراء أمان قياسي للتطبيقات التي يتم تنزيلها خارج PlayMarket.

    للقيام بذلك، يجب استخدام نظام الفلاتر وضبط الإعدادات المناسبة في الحساب الشخصي. هل هناك أي بلدان لا يمكنك فيها فتح حساب باستخدام تطبيق 1xBet لنظام Android أو IOS؟ لسوء الحظ، هناك بعض البلدان التي لا يمكنك فيها استخدام التطبيق. ففي نهاية المطاف، تشعر الحكومات بالقلق إزاء كل الأشياء السلبية التي تصاحب إدمان القمار. هنا، يخلق الموزعون أجواء الكازينو الأصيلة التي تجمع بين أكثر الميزات تنوعاً في البث المباشر بدقة » « عالية. تختلف عملية تثبيت أحدث إصدار من تطبيق 1Xbet iOS 2025 قليلاً عن عملية التثبيت المعتادة. سيسعد مستخدمو iOS بمعرفة أن 1Xbet قد طورت أيضًا تطبيقًا مخصصًا لأجهزتهم المحمولة هكر 1xbet التفاحة.

    Q: كيف يمكنني تحديث تطبيق 1xbet على جهازي؟

    يمكنك استخدام Chromium أو Opera أو Firefox أو Safari أو أي متصفح محمول آخر لتشغيل 1Xbet mobile några. تصميم نسخة الهاتف المحمول هو نموذج مبسط للموقع الرئيسي. ستجد » « قائمة التنقل في الزاوية اليمنى العليا من الصفحة الرئيسية ، مما يؤدي إلى جميع الخيارات الأخرى على الموقع. تهيمن المراهنات الرياضية على الحديث في العديد من البلدان بما في ذلك غالبية الدول العربية. من المهم لأي منصة مراهنات أن تحتوي على مجموعة متنوعة من الأحداث بالإضافة إلى الجودة في الخيارات المقدمة. يوفر تطبيق 1Xbet أيضًا فرصة أن تكون جزءًا من كازينو مباشر.

    • يمكن تنزيله من الموقع الرسمي للشركة أو من متجر التطبيقات (App Store).
    • يتضمن التطبيق مجموعة من الميزات المذهلة التي تتعلق بالمراهنات، مما يمنح المستخدمين تجربة مثالية في عالم المراهنات الرياضية.
    • هناك عدة طرق لتنزيل تطبيق 1xBet لجهاز iPhone الخاص بك.
    • لا يمكنك تغيير لغة تطبيق 1xbet لأنه يقوم بتكوين بيانات اللغة من هاتفك.
    • مع التطبيق، لا يحتاج العميل إلى الارتباط بجهاز كمبيوتر.

    بعد أن يجد المستخدم رابط التنزيل، ما عليه سوى النقر عليه لـ تنزيل ملف APK لـ 1xBet. حتى مع اتصال إنترنت ضعيف، سيتمكن اللاعب من تنزيل أحدث إصدار من 1xBet لعام 2024 دون مشاكل. ومع » « ذلك، يجب على المستخدمين ذوي الإنترنت بطيء السرعة التأكد من استقرار الاتصال لتجنب الأعطال. يمكنك تنزيل الأداة المساعدة في مصر على i phone من خلال متجر التطبيقات الرسمي عبر الإنترنت App Retail outlet.

    مكافآت تطبيق 1xbet

    بعد أن يفوز اللاعب ويرغب في سحب أمواله، يمكنه استخدام نفس الطرق التي استخدمها للإيداع. على سبيل المثال، يمكن سحب الأموال عبر التحويلات المصرفية إلى حسابه في البنك الأهلي المصري أو البنوك المحلية الأخرى. يمكن للمراهنين في مصر تغيير إعدادات عرض الاحتمالات في تطبيق 1xbet على أندرويد. للقيام بذلك، يحتاجون إلى الانتقال إلى قسم إعدادات النظام، ثم إلى “نوع الاحتمال” حيث يمكنهم اختيار الإعدادات المرغوبة.

    • يبدو أن الهيكل العام للتطبيق قد تم وفقًا لأعلى معايير الجودة.
    • الخيارات المتاحة هي نفسها المتوفرة في النسخة » « البراوزرية.
    • بعد الانتهاء من عملية التسجيل ووضع رهان على حدث بفرص لا تقل عن a single. 50 ، ستكون متاحًا لتلقي رهان مجاني.
    • إذا كنت تستخدم أجهزة من الجيل السابق، فقد لا يتم تشغيل التطبيقات ببساطة.
    • انتقل إلى علامة التبويب الخاصة بالإعدادات – اختر اللغة المتاحة، والوضع الليلي/النهاري، وغيرها.

    أولاً وقبل كل شيء، يوفر الوصول إلى جميع خدمات المزود في أي وقت ومن أي مكان. مع التطبيق، لا يحتاج العميل إلى الارتباط بجهاز كمبيوتر. تحميل 1xBet آخر إصدار لأندرويد متاح من خلال موقع المزود.

    تنزيل 1xbet Apk على أندرويد: خطوات سريعة

    بمجرد التثبيت، ستجد التطبيق جاهزًا للاستخدام في » « أي وقت وبسهولة، مما يجعل من السهل عليك متابعة الأحداث الرياضية والمراهنات. يمنحك التسجيل عبر تطبيق 1xBet وصولًا فوريًا إلى جميع الأسواق الرياضية، الكازينو المباشر، والمراهنات الفورية، بالإضافة إلى المكافآت الترحيبية. احرص على تحميل 1xbet اخر إصدار لضمان الحصول على أحدث الميزات وأفضل أداء.

    • سيرغب المراهنون العرضيون بالتأكيد في الوصول إلى 1xBet عبر الهاتف من خلال زيارة موقعه الإلكتروني.
    • يعد تطبيق 1Xbet في أحد المنصات السخية التي تقدم مكافأة ترحيبية جذابة إذا كنت تخطط للتسجيل معهم.
    • يقدم تطبيق 1xBet للأندرويد العديد من الميزات المفيدة التي تجعل عملية اللعب ووضع الرهانات مريحة للغاية للمستخدمين المصريين.
    • سواء كنت مهتم تتابع المباريات لايف أو تراهن على رياضات معينة، التطبيق بيقدّم لك كل ده بشكل بسيط وسلس و بالنسبة لينا، التطبيق ده مفيد وسهل جدًا.

    في بعض الأحيان، بتوفر 1xBet بونص خاص للمستخدمين اللي بينزلوا التطبيق لأول مرة. ممكن يكون ده بونص إضافي أو مكافأة خاصة بتسجيل الدخول عن طريق التطبيق. انتقل إلى المنصة الرسمية لـتحميل 1xBet اخر إصدار للأجهزة التي تعمل بنظام Google android وiOS. غير واضحة ملامح عمل التطبيق أو تواجه صعوبة في تنزيل 1xBet؟ احصل على استشارة مفصلة من خدمة الدعم. يمكنك التواصل مع المشغلين عن طريق الدردشة الافتراضية أو الكتابة عبر البريد الإلكتروني.

    مميزات حصرية يقدمه 1xbet للمستخدمين

    أولاً وقبل كل شيء، يعمل التطبيق بشكل أسرع لأنه مثبت بالفعل على الجهاز ولا يتطلب تحميل البيانات من الخادم في كل مرة يتم فيها فتح الصفحة. هذا مهم للمستخدمين الذين يريدون الاستجابة فورًا للتغييرات أثناء المباريات ووضع الرهانات في الوقت الفعلي. بعد ذلك، يجب العودة إلى الملف الذي تم تنزيله والنقر عليه لبدء تثبيت تطبيق 1xBet. اتبع التعليمات على الشاشة، وسيتم تثبيت التطبيق على الهاتف في غضون دقائق قليلة. بعد التثبيت، يمكن العثور على تطبيق 1xBet على الشاشة الرئيسية أو في قائمة التطبيقات.

    • بعد تنزيل التطبيق، يجب على المستخدم النقر على « فتح » لتشغيل التطبيق.
    • ينصح بالتحقق من إعدادات الأمان على الجهاز الخاص بك للسماح بتحميل التطبيقات من مصادر غير معروفة.
    • لتسهيل الوصول إلى المراهنات الرياضية عبر الإنترنت على هاتفك الذكي، يوجد تطبيق 1Xbet، وهو بديل كامل لموقع سطح المكتب والجوال.
    • الضغط على هذا الرابط سيبدأ عملية تحميل ملف apk لنظام android مباشرة إلى جهازك.

    أيضًا، يمكنك تعديل إعدادات اللغة لتكون متوافقة مع تفضيلاتك، مما يسهل عليك التفاعل مع المحتوى المعروض. بضبط هذه الإعدادات، ستتمكن من جذب انتباهك إلى ما تفضله بالفعل. يوفر التطبيق تجربة سلسة عبر الهواتف الذكية والأجهزة اللوحية، مما يتيح لك الاستمتاع بالرياضات الحية، وألعاب الكازينو، والمزيد. استخدام الرموز الترويجية هو طريقة رائعة للحصول على مكافآت إضافية في تطبيق 1xBet. يتوفر للمستخدمين الجدد من مصر رمز ترويجي خاص “newapp”، والذي يسمح لهم بالحصول على مكافأة 100% على الإيداع الأول حتى 25, 1000 جنيه مصري.

    Bet لنظام Ios (iphone و Ipad)

    التطبيق مُصمم عشان يناسب احتياجات المستخدمين ويخلّيهم يقدروا يراهنوا بسهولة من خلال الموبايل بتاعهم. يمكنك إنشاء حساب في ثوانٍ، اللعب من المكان الذي يريحك، الحصول على مكافآت شخصية، والمزيد. يبدأ الحد الأدنى لمبلغ الإيداع للمستخدمين المصريين من 50 جنيه مصري. يجعل هذا الحد الأدنى للإيداع المراهنات متاحة للاعبين ذوي الميزانيات المختلفة. يسمح عتبة الإيداع المرنة ببدء اللعب ووضع الرهانات حتى مع الأموال المحدودة. يمكن لكل مستخدم تخصيص التطبيق وفقًا لاحتياجاته الشخصية.

    الضغط على هذا الرابط سيبدأ عملية تحميل ملف apk لنظام android مباشرة إلى جهازك. ينصح بالتحقق من إعدادات الأمان على الجهاز الخاص بك للسماح بتحميل التطبيقات من مصادر غير معروفة. لتحميل التطبيق المحمول 1xbet على أجهزة تعمل بنظام التشغيل أندرويد للمستخدمين في مصر، يجب الانتقال إلى الموقع الرسمي لشركة المراهنات. ملف التثبيت متاح على الصفحة الرئيسية، حيث يمكن تحميله وتثبيته على الهاتف الذكي أو الجهاز اللوحي. الرابط إلى التطبيق المحمول موضوع في قسم خاص بالموقع، معلم بالأيقونة المناسبة. كما يمكن العثور على روابط للتطبيق في القائمة السفلية للموقع لراحة المستخدمين.

    تجنب الروابط المزيفة والمواقع غير الرسمية

    من المهم تذكر أن التطبيق غير متوفر للتنزيل عبر Google Play. لذلك، سيكون من الضروري تنزيله مباشرة من موقع الويب للجوال. بعد التثبيت الناجح للتطبيق وإيداع الأموال، يمكن للمستخدمين المصريين البدء فورًا في وضع الرهانات الرياضية. يقدم التطبيق مجموعة واسعة من الأحداث الرياضية – من الدوريات الرياضية الشهيرة مثل الدوري الإنجليزي الممتاز إلى البطولات المصرية المحلية. على موقعنا، يمكنك تنزيل وتثبيت تطبيق 1xBet الذي يدعم اللغة العربية بالكامل. يمكن للاعبين من مصر تنزيل 1xBet — النسخة الرسمية من البرنامج.

    • إذا كنت مستخدمًا جديدًا، يمكنك إنشاء حساب مباشرة من خلال التطبيق.
    • هناك عدة اختلافات مهمة بين النسخة المحمولة من موقع 1xBet وتطبيق الأندرويد.
    • أحد أفضل الأشياء في هذا الأمر هو أنه يمكنك القفز إلى “رهاناتي” في قسيمة الرهان ثم سترى الرهانات الحية التي يتم وضعها.
    • تمت إضافة ميزات جديدة تتيح للمستخدمين تخصيص واجهة التطبيق بحسب تفضيلاتهم.

    بالإضافة إلى ذلك ، يدعم التطبيق جميع الميزات المتاحة من موقع سطح المكتب. لضمان تجربة آمنة، تأكد دائمًا من تنزيل 1xBet من موقعنا الرسمي فقط، وتجنب أي مصادر غير موثوقة قد تعرض بياناتك للخطر. مع التزامنا الصارم بالأمان والخصوصية، يمكنك المراهنة بثقة تامة والاستمتاع بجميع الميزات المتاحة في التطبيق دون أي مخاوف. كيفية تحديث تطبيق 1xBet؟لتحديث تطبيق 1xBet، افتح التطبيق وانتقل إلى قائمة الإعدادات. إذا كان فيه تحديث متاح، هتظهر لك رسالة تطلب منك تحديث التطبيق.

    الخطوات الاولي في استخدام تطبيق 1xbet

    المكافآت متاحة فقط عند استيفاء متطلبات معينة فيما يتعلق بحجم التداول، وقد تكون هناك قيود على سحب الأرباح. يعمل التطبيق بنجاح على جميع الأجهزة الحديثة التي تعمل بنظام أندرويد. ببساطة تحميل 1xBet اخر إصدار واستمتع بخدمات المنصة من شاشة هاتفك الذكي. بالنسبة لأي منصة قمار عبر الإنترنت ، من المهم جدًا أن يكون لديك طريقة دفع وسحب لا تشوبها شائبة. اعتنى تطبيق 1Xbet بكل هذه الجوانب من خلال قائمة طويلة من خيارات الدفع والسحب.

    بعد إكمال التسجيل وإيداع الأموال، ستتم إضافة المكافأة تلقائيًا إلى رصيد اللعب الخاص بك. نعم، يمكن للمستخدمين الحصول على مكافأة ترحيبية، ويمكنهم أيضًا زيادتها بإدخال رمز ترويجي فريد – GOLD20. يمكن للاعبين المصريين سحب الأموال فقط إلى الحساب الذي تم استخدامه مسبقًا لشحن الرصيد. لشحن الرصيد على البوابة، يجب إتمام عملية التسجيل والمرور بعملية التحقق، مقدمًا الوثائق اللازمة لإثبات الهوية. ابدأ مغامرتك مع الرهانات الرياضية والكازينو بأمان واحترافية مع 1xbet. تطبيق 1xBet بامتداد APK مناسب للأجهزة التي تعمل بنظام تشغيل أندرويد (الإصدار 7. 0 أو أحدث).

    ألعاب الكازينو الأخرى

    نعم، تطبيق 1xbet المتاح من الرابط الرسمي آمن للاستخدام. نوصي بشدة بتحميل التطبيق من الرابط الآمن المقدم لتجنب أي مخاطر قد تكون ناتجة عن النسخ غير الرسمية. استمتع بتجربة مستخدم فريدة تتيح لك متابعة المباريات الحية والمراهنة في الوقت الفعلي، بالإضافة إلى عروض حصرية ومكافآت ترحيبية عند التسجيل. التطبيق يعمل بكفاءة على أجهزة Android، ويوفر تجربة استخدام مستقرة وسريعة. كل المكافآت والعروض الترويجية متاحة داخل التطبيق تلقائيًا دون خطوات إضافية.

    • يمكنك قضاء وقت ممتع مع ماكينات فيديو بوكر ، وهي أشكال مختلفة للعبة الخمس أوراق.
    • تتوفر للاعبين المصريين رهانات على مباريات كرة القدم وبطولات التنس ومباريات كرة السلة » « والعديد من الرياضات الأخرى.
    • هذا عامل مهم جدًا للمراهنات الحية، حيث يمكن أن يؤدي التأخير في تحميل المعلومات إلى فقدان فرص هامة.
    • تعتبر المكافآت الممنوحة من خلال الرموز الترويجية بشكل عام طريقة فعّالة لتحفيز المستخدمين على استكشاف خيارات المراهنات المتاحة وتوسيع قاعدة المستخدمين.
    • قم بتأكيد جميع الأذونات المطلوبة، وبذلك تكون قد أكملت التثبيت.

    تستخدم المعايير الجديدة لتشفير SSL للاتصالات بين العملاء وخوادم مزود الخدمة. هذا يزيد بشكل كبير من صعوبة اعتراض البيانات بواسطة أطراف ثالثة. لمنع إمكانية الوصول غير المصرح به إلى الحسابات، يستخدم التطبيق التوثيق الثنائي. الخطر المحتمل لتهديدات المعلومات الشخصية مُقلل إلى الحد الأدنى، حيث إن اختراق حساب العميل أمر غير ممكن تقريبًا.

    تطبيق 1xbet في مصر: كل ما تحتاج معرفته عن تحميل وتثبيت البرنامج على أجهزة Android

    من بين هذه المزايا، ستجد واجهة مستخدم سهلة الاستخدام تتيح لك التصفح بسرعة وسهولة. كما يوفر التطبيق مجموعة متكاملة من خيارات المراهنات على الأحداث الرياضية المختلفة، مما يمكن المستخدمين من الاستمتاع بتجربة مراهنة شاملة. سيرغب المراهنون العرضيون بالتأكيد في الوصول إلى 1xBet عبر الهاتف من خلال زيارة موقعه الإلكتروني.

    • و سوف يتم فرض رسوم معينة على اللاعبين مقابل الفرصة المتاحة للرهان.
    • لشحن الرصيد على البوابة، يجب إتمام عملية التسجيل والمرور بعملية التحقق، مقدمًا الوثائق اللازمة لإثبات الهوية.
    • طالما أن لديك متصفح جوال مزود بخاصية الفلاش واتصال جيد بالإنترنت ، فسوف تستمتع باللعب على إصدار الهاتف المحمول من موقع 1Xbet على الويب.
    • أيًا كان الخيار الذي تختاره، سيتعين عليك بطريقة أو بأخرى ملء نموذج وإدخال بياناتك الشخصية.
    • تطبيق 1xBet بيقدّم لكل عشّاق المراهنات في مصر طريقة سهلة وآمنة يقدروا من خلالها يراهنوا على مختلف الأحداث الرياضية والألعاب المفضّلة ليهم.

    بالإضافة إلى ذلك، تم تحسين أداء التطبيق بشكل عام لزيادة سرعته واستجابته، مما يجعله أكثر ملاءمة للاستخدام في المراهنات الحية. كما تم تعزيز أمان التطبيق لحماية معلومات المستخدمين وبياناتهم. يتيح لك تطبيق 1xBet إجراء عمليات الإيداع والسحب بكل سهولة وأمان، مما يضمن تجربة مراهنات مريحة وسريعة. بعد 1xbet تحميل apk وتثبيت تحميل 1xbet اخر إصدار من موقعنا الرسمي، يمكنك الوصول إلى مجموعة واسعة من وسائل الدفع المتاحة داخل التطبيق. إذا كنت تفضل استخدام الموقع بدلاً من التطبيق، يمكنك دائمًا الوصول إلى 1xbet عبر نسخته » « المخصصة للجوال.

    كيفية تثبيت تطبيق الـ Android

    كما أن المقامرة غالبًا ما تكون محظورة أو مقيدة بشدة في العديد من البلدان الإسلامية. أيًا كان الخيار الذي تختاره، سيتعين عليك بطريقة أو بأخرى ملء نموذج وإدخال بياناتك الشخصية. 1xBet تتعاون بنشاط مع المنظمات التي تتناول مشكلة الإدمان على القمار. يمكن للعميل في أي وقت الاتصال بخدمة الدعم، حيث سيقدم الخبراء كل المعلومات اللازمة للتغلب على الرغبة في اللعب. مع تطبيق 1Xbet لنظام iOS ، لن تقلق بشأن الأعطال المنتظمة. في مراجعتنا ، وجدنا أن التطبيق مستقر تمامًا وسريع التحميل.

    • يسمح لك باختيار ما يصل إلى 4 ألعاب لربطها جميعًا في نفس الصفحة.
    • يجب عليك التسجيل للمشاركة وممكن يكون فيه حد أقصى لعدد التذاكر المجانية الممنوحة في الشهر.
    • كيفية تثبيت تطبيق 1xBet على نظام أندرويد؟لتثبيت تطبيق 1xBet على نظام أندرويد، لازم تروح على الموقع الرسمي وتدور على رابط تحميل 1xbet بالعربية.
    • تتوفر أيضًا خيارات لتخصيص عرض الاحتمالات في تطبيق 1xbet، مما يجعلك قادرًا على رؤية المعلومات بالطريقة التي تناسبك.

    وبالتالي، سوف تحتاج إلى تغيير إعدادات هاتفك، مما يستغرق المزيد من الوقت. ثانيا هل التطبيق نفسه سريع؟ بشكل عام، هذا ما تتوقعه من تطبيق الرهان. ومع ذلك، تعتمد سرعة التطبيق على العديد من العوامل، بما في ذلك قوة الإنترنت ومساحة التخزين وجودة الهاتف. اولا قم بـ تحميل 1xbet اخر اصداريتيح لك التطبيق المراهنة مباشرة وقبل المباراة؛ هناك عمليات بث الفيديو. الألعاب السيبرانية؛ إحصاءات عن الأحداث الرياضية؛ حساب شخصي كامل مع حساب والمزيد. عندما يتم تثبيت تطبيق الهاتف الجوال 1xbet, يمكنك البدء فورًا في المراهنة.

    تطبيق 1xbet: المواصفات

    البرنامج يكرر وظائف النسخة الأساسية للمنصة، لذا لن تواجه مشاكل عند التحول إلى البرنامج المحمول. يسمح لك باختيار ما يصل إلى 4 ألعاب لربطها جميعًا في نفس الصفحة. بالطريقة دي، تضمن تحديث وتحميل 1xBet اخر إصدار للاندرويد وال IOS. حيث يوفر تطبيقًا مخصصًا لأجهزة الهواتف الذكية التي تعمل بنظام iOS. أثناء التنزيل، يمكن متابعة التقدم من خلال لوحة » « الإشعارات.

    كما يتيح لك التطبيق تنظيم المفضلات لديك من الأحداث الرياضية، مما يعني أنك ستحصل على وصول سريع إلى المراهنات المفضلة دون الحاجة إلى البحث عنها كل مرة. يعزز تطبيق 1xbet تجربة المراهنات بشكل كبير من خلال توفير أدوات وميزات مبتكرة تساهم في تحسين الأداء والمساعدة في اتخاذ القرارات. فالمستخدم يحصل على إشعارات فورية حول الأحداث الرياضية المهمة، مما يضمن عدم تفويته لأي فرصة للمراهنة.

    Q: كيف يمكنني تنزيل وتثبيت تطبيق 1xbet على جهاز الكمبيوتر الخاص بي؟

    طبق مبادئ اللعب المسؤول لكي يكون تفاعلك مع 1xBet مصدرًا للتجارب الإيجابية فقط. يمكن تحقيق إطلاق سلس للبرنامج المحمول وتشغيل الوظائف بدون انقطاع على الأجهزة التي تلبي متطلبات المطور. استعرض الجدول الخاص بالبيانات الفنية لتتمكن من تحميل 1xBet بسرعة والاستمتاع بالمزايا على هاتفك الذكي/جهازك اللوحي.

    • سوف تجد هنا جميع الأحداث الرياضية و كذلك الأحداث العالمية التي يمكن وضع رهاناتك عليها و هذاما يطلق عليه تحميل لعبه 1xbet.
    • كما هو الحال مع جميع صانعي المراهنات الجيدين هذه الأيام ، تمكنت 1Xbet من تضمين ميزة سحب النقود الوظيفية.
    • 1Xbet هو الخيار الأفضل للاعبين للمراهنة على أفضل الرياضات في العالم.
    • بعد 1xbet تحميل apk من موقعنا الرسمي وتثبيت التطبيق على هاتفك، يمكنك إنشاء حساب جديد بسهولة والاستفادة من جميع ميزات المراهنات الرياضية وألعاب الكازينو.

    باتباع الخطوات دي، هتقدر تسجل بسهولة وتبدأ تجربتك في المراهنات على تطبيق 1xBet. بكل بساطة، تطبيق 1xBet للأندرويد بيوفر لك كل اللي تحتاجه عشان تبدأ وتكمل في عالم المراهنات من موبايلك، بواجهة سهلة وعروض مغرية وطرق دفع كتيرة. قبل تحميل لعبة 1xBet، اطلع على وصف التطبيق وآراء المقامرين.

    تنزيل و تثبيت 1xbet Ios: خطوات سريعة

    على عكس مواقع المراهنات والكازينوهات الأخرى عبر الإنترنت ، لا تتطلب 1Xbet من المستخدمين امتلاك أحدث هاتف ذكي للمراهنة في أي مكان. نظرًا لأن سياسة Google لا تسمح بتنزيل محتوى الرهان من متجر الألعاب، يتم تنزيل تطبيق 1Xbet من » « الموقع الرسمي لشركة المراهنات. كما تم تحسين إعدادات عرض الاحتمالات في تطبيق 1xbet، مما يتيح للمستخدمين رؤية المعلومات بشكل أوضح وأسهل. هذه التحسينات تجعل التطبيق أكثر جاذبية للمستخدمين، مما يعزز من حماسهم للمراهنة.

    • ده معناه إنك لو حطيت five-hundred جنيه، هيزيد رصيدك لـ 1000 جنيه تلعب بيهم في ألعاب الكازينو.
    • عند اكتمال تنزيل برنامج 1xBet، من الضروري السماح بتثبيت التطبيقات من مصادر غير معروفة في إعدادات الجهاز.
    • من بين الميزات البارزة لـ 1xBet هو منصة الرهان الرياضي البسيطة والمُحسّنة التي تتيح للعملاء الجدد التعرّف بسهولة على الواجهة.

    تعتبر المكافآت الممنوحة من خلال الرموز الترويجية بشكل عام طريقة فعّالة لتحفيز المستخدمين على استكشاف خيارات المراهنات المتاحة وتوسيع قاعدة المستخدمين. عند تنزيل 1xBet على iPhone، ستحصل على تجربة مراهنات مميزة مع ميزات متقدمة، مكافآت حصرية، ودعم فني متاح على مدار الساعة. قم بتحميل التطبيق الآن واستمتع بأفضل تجربة لعب من هاتفك.