/**
* Copyright (C) 2014-2025 ServMask Inc.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*
* Attribution: This code is part of the All-in-One WP Migration plugin, developed by
*
* ███████╗███████╗██████╗ ██╗ ██╗███╗ ███╗ █████╗ ███████╗██╗ ██╗
* ██╔════╝██╔════╝██╔══██╗██║ ██║████╗ ████║██╔══██╗██╔════╝██║ ██╔╝
* ███████╗█████╗ ██████╔╝██║ ██║██╔████╔██║███████║███████╗█████╔╝
* ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██║╚██╔╝██║██╔══██║╚════██║██╔═██╗
* ███████║███████╗██║ ██║ ╚████╔╝ ██║ ╚═╝ ██║██║ ██║███████║██║ ██╗
* ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝
*/
if ( ! defined( 'ABSPATH' ) ) {
die( 'Kangaroos cannot jump here' );
}
class Ai1wm_Export_Content {
public static function execute( $params ) {
// Set archive bytes offset
if ( isset( $params['archive_bytes_offset'] ) ) {
$archive_bytes_offset = (int) $params['archive_bytes_offset'];
} else {
$archive_bytes_offset = ai1wm_archive_bytes( $params );
}
// Set file bytes offset
if ( isset( $params['file_bytes_offset'] ) ) {
$file_bytes_offset = (int) $params['file_bytes_offset'];
} else {
$file_bytes_offset = 0;
}
// Set content bytes offset
if ( isset( $params['content_bytes_offset'] ) ) {
$content_bytes_offset = (int) $params['content_bytes_offset'];
} else {
$content_bytes_offset = 0;
}
// Get processed files size
if ( isset( $params['processed_files_size'] ) ) {
$processed_files_size = (int) $params['processed_files_size'];
} else {
$processed_files_size = 0;
}
// Get total content files size
if ( isset( $params['total_content_files_size'] ) ) {
$total_content_files_size = (int) $params['total_content_files_size'];
} else {
$total_content_files_size = 1;
}
// Get total content files count
if ( isset( $params['total_content_files_count'] ) ) {
$total_content_files_count = (int) $params['total_content_files_count'];
} else {
$total_content_files_count = 1;
}
// What percent of files have we processed?
$progress = (int) min( ( $processed_files_size / $total_content_files_size ) * 100, 100 );
// Set progress
/* translators: 1: Number of files, 2: Progress. */
Ai1wm_Status::info( sprintf( __( 'Archiving %1$d content files... %2$d%% complete', 'all-in-one-wp-migration' ), $total_content_files_count, $progress ) );
// Flag to hold if file data has been processed
$completed = true;
// Start time
$start = microtime( true );
// Get content list file
$content_list = ai1wm_open( ai1wm_content_list_path( $params ), 'r' );
// Set the file pointer at the current index
if ( fseek( $content_list, $content_bytes_offset ) !== -1 ) {
// Open the archive file for writing
$archive = new Ai1wm_Compressor( ai1wm_archive_path( $params ) );
// Set the file pointer to the one that we have saved
$archive->set_file_pointer( $archive_bytes_offset );
// Loop over files
while ( list( $file_abspath, $file_relpath, $file_size, $file_mtime ) = ai1wm_getcsv( $content_list ) ) {
$file_bytes_written = 0;
// Add file to archive
if ( ( $completed = $archive->add_file( $file_abspath, $file_relpath, $file_bytes_written, $file_bytes_offset ) ) ) {
$file_bytes_offset = 0;
// Get content bytes offset
$content_bytes_offset = ftell( $content_list );
}
// Increment processed files size
$processed_files_size += $file_bytes_written;
// What percent of files have we processed?
$progress = (int) min( ( $processed_files_size / $total_content_files_size ) * 100, 100 );
// Set progress
/* translators: 1: Number of files, 2: Progress. */
Ai1wm_Status::info( sprintf( __( 'Archiving %1$d content files... %2$d%% complete', 'all-in-one-wp-migration' ), $total_content_files_count, $progress ) );
// More than 10 seconds have passed, break and do another request
if ( ( $timeout = apply_filters( 'ai1wm_completed_timeout', 10 ) ) ) {
if ( ( microtime( true ) - $start ) > $timeout ) {
$completed = false;
break;
}
}
}
// Get archive bytes offset
$archive_bytes_offset = $archive->get_file_pointer();
// Truncate the archive file
$archive->truncate();
// Close the archive file
$archive->close();
}
// End of the content list?
if ( feof( $content_list ) ) {
// Unset archive bytes offset
unset( $params['archive_bytes_offset'] );
// Unset file bytes offset
unset( $params['file_bytes_offset'] );
// Unset content bytes offset
unset( $params['content_bytes_offset'] );
// Unset processed files size
unset( $params['processed_files_size'] );
// Unset total content files size
unset( $params['total_content_files_size'] );
// Unset total content files count
unset( $params['total_content_files_count'] );
// Unset completed flag
unset( $params['completed'] );
} else {
// Set archive bytes offset
$params['archive_bytes_offset'] = $archive_bytes_offset;
// Set file bytes offset
$params['file_bytes_offset'] = $file_bytes_offset;
// Set content bytes offset
$params['content_bytes_offset'] = $content_bytes_offset;
// Set processed files size
$params['processed_files_size'] = $processed_files_size;
// Set total content files size
$params['total_content_files_size'] = $total_content_files_size;
// Set total content files count
$params['total_content_files_count'] = $total_content_files_count;
// Set completed flag
$params['completed'] = $completed;
}
// Close the content list file
ai1wm_close( $content_list );
return $params;
}
}
Content Pack Outhttps://validator.w3.org/feed/docs/rss2.htmlHomeHuuuge Casino On Typically The Web Huuuge Video Games Technical Support And Help CenterRussian RouletteBest No Deposit Online Casino Bonus Deals 2025How To Succeed At Slots? 12 Top Tips Regarding Slot Machines1xbet Chile Casino On The Internet, Apuestas Y Promociones Para ChilenosSeminole Casino Resort Immokalee Plans In Order To Reopen Aug Thirty-one With ‘safe+sound’ GuidelinesLe categorie di slot di 22Bet Casino che attraggono i giocatori italianiКак Играть и Блэкджек WikihowMostbet Brasil: Site Estatal, Inscrição, Bônus Fifteen 000r$ EntrarMostbet Apostas Esportivas & CassinoSite Oficial Para Cassino Online Elizabeth Apostas No BrasilHuuuge Casino On Typically The Web Huuuge Video Games Technical Support And Help Center“parimatch: Zaloguj Się Perform Swojego Konta Osobistego Stwórz Nowe Konto”Aviator Casino Avis 2025: Test, Astuces & Où Jouerказино 7К в РоссииНовый виток развития: Эскорт услуги Москва выходят на международный уровеньВ Москве открылась новая платформа элитного эскорта с уникальным сервисомРост популярности элитных интим-услуг в Киеве: новый взгляд на индустриюSite Oficial Para Cassino Online Elizabeth Apostas No BrasilHorseshoe Gaming Holding Organization Company Historyبرنامج المراهنات الرياضية تحميل التطبيق العميل 1xbet ComBest Online Casinos With Welcome Additional Bonuses In 2024How To Start A Good Online Casino: Costs, Licenses, Games In Addition To MoreAviator Game: Bet And Play Aviator Money Game Simply By SpribeStep-by-step Guidebook: কিভাবে Mostbet অ্যাকাউন্ট খুলবো সহজেই Yayasan Ar-rahman 博之林传媒集团Legalne Zakłady Bukmacherskie On-line 2025 ️ Polskie Strony Sportowe I Actually Bukmacherzy Z LicencjąBono 1xbet Consigue A Single, 400, 000 $ De Bono Para BienvenidaNajlepsi Bukmacherzy Polska ᐉ 2025 ️ Ranking BukmacherówVerde Casino: Zakłady Bukmacherskie, HazardState-by-state Guide: Locate The Loosest Slots In 2025 & Rtp Data”State-by-state Guide: Locate The Loosest Slots In 2025 & Rtp Data”Effective Tricks For Mostbet কিভাবে খুলে”Play Pokies With $4000 Benefit”تأثير هكر لعبة Crash 1xbet على تجربة اللعب والتفاعلБукмекерская Контора 1вин Кз Ставки На Спорт И Казино Онлайн1xbet Iphone App 1xbet Mobile ᐉ Download The 1xbet Apk Android & Iphone ᐉ 1xbet ComMostbet Bangladesh: Official Athletics Betting Site Logon & RegisterMostbet Established Site In Bangladesh: Bonus Up In Order To 35, 000 BdtXtip Global Dimensions Media Solutions””كيفية تحميل هكر التفاحة 1xbet بدون تعقيدات تقنيةSlots Online ve Sanal Gerçeklik: Yeni Bir Oyun Sınırıказино 7Квход на сайт казино 7К“oficjalna Strona Gry Plinkoказино 7Конлайн казино 7Конлайн казино 7Ксайт интернет казино 7КMostbet: O Internet Site Oficial Da Líder Em Apostas Esportivas