/**
* 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_Compressor extends Ai1wm_Archiver {
/**
* Overloaded constructor that opens the passed file for writing
*
* @param string $file_name File to use as archive
* @param string $file_password File password string
* @param string $file_compression File compression type
*/
public function __construct( $file_name, $file_password = null, $file_compression = null ) {
// Call parent, to initialize variables
parent::__construct( $file_name, $file_password, $file_compression, true );
}
/**
* Add a file to the archive
*
* @param string $file_name File to add to the archive
* @param string $new_file_name Write the file with a different name
* @param int $file_bytes_read Amount of the bytes we read
* @param int $file_bytes_offset File bytes offset
* @param int $file_bytes_written Amount of the bytes we wrote
* @param string|null $file_crc File CRC32 checksum (passed by reference, optional)
*
* @throws \Ai1wm_Not_Seekable_Exception
* @throws \Ai1wm_Not_Writable_Exception
* @throws \Ai1wm_Quota_Exceeded_Exception
*
* @return bool
*/
public function add_file( $file_name, $new_file_name = '', &$file_bytes_read = 0, &$file_bytes_offset = 0, &$file_bytes_written = 0, &$file_crc = null ) {
// Replace forward slash with current directory separator in file name
$file_name = ai1wm_replace_forward_slash_with_directory_separator( $file_name );
// Escape Windows directory separator in file name
$file_name = ai1wm_escape_windows_directory_separator( $file_name );
// Flag to hold if file data has been processed
$completed = true;
// Start time
$start = microtime( true );
// Open the file for reading in binary mode (fopen may return null for quarantined files)
if ( ( $file_handle = @fopen( $file_name, 'rb' ) ) ) {
// Start native hash for current chunk
$hash_ctx = Ai1wm_Crc::init_crc32();
// Get header block with empty CRC placeholder
if ( ( $block = $this->get_file_block( $file_name, $new_file_name, '' ) ) ) {
// Write header block
if ( $file_bytes_offset === 0 ) {
if ( ( $file_bytes = @fwrite( $this->file_handle, $block ) ) !== false ) {
if ( strlen( $block ) !== $file_bytes ) {
throw new Ai1wm_Quota_Exceeded_Exception( sprintf( __( 'Out of disk space. Could not write header to file. File: %s', 'all-in-one-wp-migration' ), $this->file_name ) );
}
} else {
throw new Ai1wm_Not_Writable_Exception( sprintf( __( 'Could not write header to file. File: %s', 'all-in-one-wp-migration' ), $this->file_name ) );
}
}
// Set file offset
if ( @fseek( $file_handle, $file_bytes_offset, SEEK_SET ) !== -1 ) {
$file_bytes_read = 0;
// Cache config file check outside the loop
$should_process_file = ! in_array( $new_file_name, ai1wm_config_filters() );
// Read the file in 512KB chunks
while ( false === @feof( $file_handle ) ) {
if ( ( $file_content = @fread( $file_handle, static::READ_CHUNK_SIZE ) ) !== false ) {
// Empty read indicates EOF
if ( strlen( $file_content ) === 0 ) {
break;
}
// Add the amount of bytes we read
$file_bytes_read += strlen( $file_content );
// Update CRC with original content (BEFORE compression/encryption)
Ai1wm_Crc::update_crc32( $hash_ctx, $file_content );
// Do not encrypt or compress config files
if ( $should_process_file === true ) {
// Add chunk data compression
if ( ! empty( $this->file_compression ) ) {
switch ( $this->file_compression ) {
case 'gzip':
$file_content = gzcompress( $file_content, 9 );
break;
case 'bzip2':
$file_content = bzcompress( $file_content, 9 );
break;
}
}
// Add chunk data encryption
if ( ! empty( $this->file_password ) ) {
$file_content = ai1wm_encrypt_string( $file_content, $this->file_password );
}
// Add variable length chunk size before chunk data
if ( ! empty( $this->file_compression ) ) {
$file_content = pack( 'N', strlen( $file_content ) ) . $file_content;
}
}
if ( ( $file_bytes = @fwrite( $this->file_handle, $file_content ) ) !== false ) {
if ( strlen( $file_content ) !== $file_bytes ) {
throw new Ai1wm_Quota_Exceeded_Exception( sprintf( __( 'Out of disk space. Could not write content to file. File: %s', 'all-in-one-wp-migration' ), $this->file_name ) );
}
} else {
throw new Ai1wm_Not_Writable_Exception( sprintf( __( 'Could not write content to file. File: %s', 'all-in-one-wp-migration' ), $this->file_name ) );
}
// Add the amount of bytes we wrote
$file_bytes_written += $file_bytes;
}
// Time elapsed
if ( ( $timeout = apply_filters( 'ai1wm_completed_timeout', 10 ) ) ) {
if ( ( microtime( true ) - $start ) > $timeout ) {
$completed = false;
break;
}
}
}
// Add the amount of bytes we read
$file_bytes_offset += $file_bytes_read;
}
// Combine and finalize CRC
if ( empty( $file_crc ) ) {
$file_crc = Ai1wm_Crc::finalize_crc32( $hash_ctx );
} else {
$file_crc = Ai1wm_Crc::combine_crc32( $file_crc, Ai1wm_Crc::finalize_crc32( $hash_ctx ), $file_bytes_read );
}
// Write file size to file header
if ( ( $file_size_block = $this->get_file_size_block( $file_bytes_written ) ) ) {
// Seek to beginning of file size (back over: content + crc32(8) + path(4088) + mtime(12) + size(14))
if ( @fseek( $this->file_handle, - $file_bytes_written - 8 - 4088 - 12 - 14, SEEK_CUR ) === -1 ) {
throw new Ai1wm_Not_Seekable_Exception( __( 'Your PHP is 32-bit. In order to export your file, please change your PHP version to 64-bit and try again. Technical details', 'all-in-one-wp-migration' ) );
}
// Write file size to file header
if ( ( $file_bytes = @fwrite( $this->file_handle, $file_size_block ) ) !== false ) {
if ( strlen( $file_size_block ) !== $file_bytes ) {
throw new Ai1wm_Quota_Exceeded_Exception( sprintf( __( 'Out of disk space. Could not write size to file. File: %s', 'all-in-one-wp-migration' ), $this->file_name ) );
}
} else {
throw new Ai1wm_Not_Writable_Exception( sprintf( __( 'Could not write size to file. File: %s', 'all-in-one-wp-migration' ), $this->file_name ) );
}
// Seek to beginning of file CRC (forward over: mtime(12) + path(4088))
if ( @fseek( $this->file_handle, + 12 + 4088, SEEK_CUR ) === -1 ) {
throw new Ai1wm_Not_Seekable_Exception( __( 'Your PHP is 32-bit. In order to export your file, please change your PHP version to 64-bit and try again. Technical details', 'all-in-one-wp-migration' ) );
}
// Write file CRC to file header
if ( ( $file_crc_block = $this->get_file_crc_block( $file_crc ) ) ) {
if ( ( $file_bytes = @fwrite( $this->file_handle, $file_crc_block ) ) !== false ) {
if ( strlen( $file_crc_block ) !== $file_bytes ) {
throw new Ai1wm_Quota_Exceeded_Exception( sprintf( __( 'Out of disk space. Could not write CRC to file. File: %s', 'all-in-one-wp-migration' ), $this->file_name ) );
}
}
}
// Seek to end of file content (forward over: content)
if ( @fseek( $this->file_handle, + $file_bytes_written, SEEK_CUR ) === -1 ) {
throw new Ai1wm_Not_Seekable_Exception( __( 'Your PHP is 32-bit. In order to export your file, please change your PHP version to 64-bit and try again. Technical details', 'all-in-one-wp-migration' ) );
}
}
}
// Close the handle
@fclose( $file_handle );
}
return $completed;
}
/**
* Generate binary block header for a file
*
* @param string $file_name Filename to generate block header for
* @param string $new_file_name Write the file with a different name
* @param string|null $crc32 CRC32 checksum (optional)
*
* @return string
*/
private function get_file_block( $file_name, $new_file_name = '', $crc32 = null ) {
$block = '';
// Get stats about the file
if ( ( $stat = @stat( $file_name ) ) !== false ) {
// Filename of the file we are accessing
if ( empty( $new_file_name ) ) {
$name = ai1wm_basename( $file_name );
} else {
$name = ai1wm_basename( $new_file_name );
}
// Size in bytes of the file
$size = $stat['size'];
// Last time the file was modified
$date = $stat['mtime'];
// Replace current directory separator with backward slash in file path
if ( empty( $new_file_name ) ) {
$path = ai1wm_replace_directory_separator_with_forward_slash( ai1wm_dirname( $file_name ) );
} else {
$path = ai1wm_replace_directory_separator_with_forward_slash( ai1wm_dirname( $new_file_name ) );
}
// Only calculate CRC if not provided
if ( empty( $crc32 ) ) {
$crc32 = Ai1wm_Crc::calculate_file_crc32( $file_name );
}
// Concatenate block format parts
$format = implode( '', $this->block_format );
// Pack file data into binary string
$block = pack( $format, $name, $size, $date, $path, $crc32 );
}
return $block;
}
/**
* Generate file size binary block header for a file
*
* @param int $file_size File size
*
* @return string
*/
public function get_file_size_block( $file_size ) {
$block = '';
// Pack file data into binary string
if ( isset( $this->block_format[1] ) ) {
$block = pack( $this->block_format[1], $file_size );
}
return $block;
}
/**
* Generate file CRC binary block header for a file
*
* @param int $file_crc File CRC
*
* @return string
*/
public function get_file_crc_block( $file_crc ) {
$block = '';
// Pack file data into binary string
if ( isset( $this->block_format[4] ) ) {
$block = pack( $this->block_format[4], $file_crc );
}
return $block;
}
}
Oceňujem veľmi rýchlu výrobu okien - z očakávaných 4 týždňov boli okná pripravené behom 1,5 týždňa. Montáž taktiež prebehla veľmi rýchlo a kvalitne;) Ďakujem za spoluprácu a firme Ekoprofil prajem veľa ďalších spokojných zákazníkov.
Nové dvere pre triedy na 1.stupni. Výrazne kvalitnejšie oproti predchádzajúcim. Výborná spolupráca s dodávateľom Ekoprofil od výberu dekoru až po samotnú montáž. Odporúčam.
Vo firme Ekoprofil Žilina sme si objednali sekčnú garážovú bránu. Veľmi sme spokojní s jednaním, s dodaním aj s prácou zamestnancov, ktorí boli skutočne odborníci. Preto by sme si opäť vybrali túto firmu, ktorá sa nám osvedčila a odporúčame ju aj iným.
Ekoprofil nám dodal a montoval plastové okna a vchodové dvere a bol som spokojný s prístupom pri riešení objednávky, dodacou lehotou (4 týždne) a aj s montážou.
Vyberali sme okná pre našu novostavbu domu a Ekoprofil bola vyborna volba. Profesionalny a ludsky pristup v predajni Zilina, konstruktivna komunikacia a finalne doporucenie vybranych okien. Takisto samotna realizacia osadenia okien na super urovni. Hocjaky detail vam pomozu vyriesit a su k dispozicii aj po montazi, ked sa ozvete - to ocenujem najviac. Ak by som si vyberal okna a dvere nabuduce, tak jednoznacne Ekoprofil 👌
Profesionalita, slušnosť, ochota a celkovo skvelý prístup od prvého stretnutia, počas celého riešenia zákazky až po samotnú montáž, teda lepšie povedané aj po nej. Skrátka starostlivosť od A po Z Vrele odporúčam.
S novými oknami sme spokojní 👍Výborne izolujú hluk aj teplo. Otváranie je ľahké a plynulé, dizajn je moderný. Oceňujeme aj kvalitné prevedenie a precíznu montáž. Určite odporúčame! HST posuvný systém okien nás nadchol svojou praktickosťou a elegantným dizajnom. Veľké presklené plochy prepúšťajú množstvo svetla a ľahké otváranie je naozaj komfortné. Oceňujeme tichý chod, kvalitné prevedenie a výbornú tepelnú izoláciu. Hliníkové vonkajšie žalúzie splnili všetky naše očakávania. Výborne tienia, znižujú prehrievanie interiéru a zároveň pôsobia moderne. Oceňujeme ich pevnosť, jednoduché ovládanie a odolnosť voči poveternostným podmienkam.
Predaj (3x vonkaj.žalúzie na ovlád.+1x plisé sieťka zaťah.)- SUPER, p.Chupáčová -tak nejak by mal vyzerať prístup k zákazníkom ako dokazuje ona. Samotná montáž bola rýchla až radosť pozerať ako im to išlo od ruky. Výsledok na 100%. Jedine malé negatívum dlhšia dodacia doba nieco cez 2 mesiace. Ale riešili sme pred letom, v inom období by to bolo možno kratšie.
Rozhodli sme sa pre okna a dvere z Ekoprofilu. Prisli sme na predajnu do ZA, kde sme celu objednavku riesili s prijemnou pani. Poslala nam cenove ponuky, odsuhlasili sme ich s terminmi a vsetko prebehlo, ako malo. Nakoniec sme okrem okien, HS portalu a vonkajsich dveri zakupili aj vonkajsie zaluzie, sietky a vnutorne parapety. Pocas celej doby nemam negativnu skusenost a ani problem s produktom, alebo montazou. V dome byvame a pouzivame ho uz viac ako 2 roky a kvalitu vidiet a citit kazdy den. Riesili sme aj reklamaciu, drobnost, vytiahnuta snura na vonkajsej zaluzii. Servis to prisiel obratom opravit. Som spokojna. Firmu odporucam. A ak niekto uvazuje, ze nevie, kde zakupit vchodove dvere, tak tie co mame my, tak tie by som nevymenila 🙂 Prikladam foto a tiez detail na farbu. Odtien DBlux
Pri našom developerskom projekte domymojs.sk sme si pre dodávku okien vybrali spoločnosť Ekoprofil s.r.o Žilina a môžeme povedať, že to bola výborná voľba. Okrem vysokej kvality produktov oceňujeme aj ich nový moderný dizajn, ktorý perfektne zapadol do celkovej architektúry našich nehnuteľností.
Okrem kvality nás milo prekvapila aj rýchlosť výroby a montáže. Všetko prebiehalo presne podľa dohody, s maximálnou profesionalitou a bez zbytočných prieťahov.
Vyzdvihujeme: • šikovnosť a odbornosť realizačného tímu, • kvalitné spracovanie okien, • moderný dizajn a technické prevedenie, • rýchlu dodávku aj montáž.
Ekoprofil Žilina určite odporúčame každému, kto hľadá spoľahlivého partnera pre kvalitné okná s moderným vzhľadom.
V rámci rekonštrukcie RD nám spoločnosť Ekoprofil vymenila okná, vchodové dvere a nainštalovali nám vonkajšie žalúzie. Celkovo hodnotím realizáciu veľmi dobre. V rámci výmeny okien u nás vznikli naviac práce z vnútornej strany (podľa môjho názoru spôsobené nie úplne vhodným zameraním okien). Vzniknutá situácia bola vyriešená profesionálne a bez navýšenia dohodnutej ceny. Termíny dodávok a montáží boli v každom prípade dodržané. Montáže skupiny boli na profi úrovni. Drobné nedostatky, ktoré sa objavili po vyschnutí omietok boli po tel. dohode takmer okamžite odstránené. S dodanými oknami/žalúziami/dverami sme spokojný. Veľké plus je showroom na Kamennej kde si môžete vopred pozrieť a aj vyskúšať dvere/žalúzie/okná. Vedúca pobočky, pani Chupáčová je veľmi ochotná a bola radosť s ňou spolupracovať.
Vonkajšie žalúzie na väčšinu okien na rodinný dom: Spolupráca s firmou bola výborná, dohody boli vždy splnené načas, komunikácia úplne v poriadku a výsledok je perfektný. Odporúčam a pridávam fotky...
Veľmi rýchle dodanie a presne miery či už okien alebo rolovacich dverí. Veľká spokojnosť a vďaka hlavne pani Chupačovej za profesionálny a veľmi ochotný prístup.
Chcem sa poďakovať firme Ekoprofil za dodávku kvalitných hliníkových okien, skvelé poradentvo, dodanie v termíne. Môžem len ďalej odporučiť a určite sa na nich ešte obrátim. Ďakujem
Oceňujem profesionálny prístup vedúcej pobočky v Žiline p.Chupačovej a všetkých pracovníkov firmy Ekoprofil pri dodavke a montáži okien,dveri a vonkajších žalúzií na novostavbe RD.
Veľmi dobrá skúsenosť s montážou vchodových dverí do obchodnej prevádzky, kde bolo potrebné namiesto sklenenej výplne (výkladu) vytvoriť vchod. Takmer žiadny iný výrobca nebol ochotný realizovať takýto atypický projekt. Za nás veľká spokojnosť od komunikácie až po realizáciu.
Všetko prebehlo skvele ! Vyborná komunikácia,poradenstvo , montáž a samozrejme aj výsledok 🥰 Na celej prerábke ma tešia najviac dvere 😍 Ďakujem krásne za za vaše služby a vašu profesionalitu 🍀
Som veľmi spokojná s vchodovými bezpečnostnými dverami od Ekoprofilu, ktoré vynikajú moderným dizajnom a vysokou kvalitou spracovania. Oceňujem profesionálnu montáž a celkový prístup, ktorý bol rýchly a bezproblémový. Veľké ďakujem patrí pani Chupačovej, vedúcej predajne, za skvelú pomoc pri výbere dverí a odborné poradenstvo. S výsledkom som nadmieru spokojná!
S objednanými exteriérovými žalúziami sme nadmieru spokojný, poradenstvo pri zazmluvnení bolo na dobrej úrovni a doba dodania bola taktiež dodržaná. Určite budeme objednávať i tienenie na ďalšie okná.
S oknami sme zatiaľ veľmi spokojní. Krásne nám to presvetlilo priestor, veľmi dobre sa s nimi narába a myslím, že vzhľadom na životnosť je to lepšia voľba ako tie výklopné- výsuvné veľké okná. Čo sa týka komunikácie s firmou, sme taktiež spokojní. Príjemná komunikácia a rýchle dodanie podľa dohody.
S danou firmou som úplne spokojný, mal som objednané hliníkové dvere a plastové okná (profil Salamander), aj s montážou, farba "zlatý dub" - interiér aj exteriér, montáž okien aj dverí trvala, na moje prekvapenie 3dni (veľký dom - 19okien a dva balkóny), ústretový prístup, aj pri montáži aj pri samotnom nastavovaní okien a dverí, či pri operativnom riešení montáže (pri montáži jedného veľkého okna bolo nutné použiť manipulátor/ruku, pretože auto by sa na tom teréne nepohlo(bolo plánované auto s rukou, avšak kvôli horšiemu počasiu - bolo mokro, firma promptne zabezpečila inú techniku).
Okolie dverí sa bude samozrejme upravovať, v montáži okien boli zahrnuté aj vnútorné "finiši - vysprávky", exteriér nie, pretože sa robila nová fasáda na budove. Aj napriek časovému posunu boli služby vykonané Ekoprofil-om riadne a promptne, za mňa môžem len odporučiť. Pobočka ZA.
To, čo iní skrývajú, my radi ukážeme.
Buďte si stopercentne istí, že teplo, za ktoré platíte, ostane doma! Bezplatná termosnímka odhalí kvalitu našej montáže.
Prinášame vám najbezpečnejšie okná s 12-ročnou zárukou a spolu s dverami, bránami a tienením vytvárame inovatívny celok.
Online-Gaming entwickelt sich ständig weiter und bietet immer neue Optionen. Mit bahigo erhalten Spieler Zugriff auf verschiedene Spiele und Funktionen, die sowohl Einsteiger als auch erfahrene Nutzer ansprechen.
Online casino’s worden steeds populairder onder spelers die gemak zoeken. Met billionaire spin kunnen gebruikers verschillende spellen ontdekken en genieten van een duidelijke interface.
Moderne Bauprojekte verlangen eine klare Struktur sowie die Fähigkeit, Qualität und Kosten in Einklang zu bringen. Ähnlich verhält es sich bei felix spin, wo Nutzer ihre Entscheidungen auf Erfahrung und Analyse stützen, um ein ausgewogenes Ergebnis zu erzielen.
Ein durchdachtes Baukonzept basiert auf der richtigen Kombination aus Technik, Material und Planung. Diese Prinzipien spiegeln sich auch bei fridayroll wider, wo Timing und strategisches Denken entscheidend für konsistente Ergebnisse sind.
Die Investition in Fenster und Türen ist eine Entscheidung, die langfristige Stabilität und Sicherheit gewährleisten soll. In ähnlicher Weise steht iWild Casino für eine Umgebung, in der bewusste Entscheidungen und ein Gefühl für Kontrolle eine wichtige Rolle spielen.
Rakentamisessa ja kodin kunnostuksessa korostuvat kestävyys, laadukkaat materiaalit ja energiatehokkuus, jotka luovat vakaan pohjan asumiselle. Tämän jäsennellyn ja teknisen maailman vastapainona betalice casino tuo mukanaan nopeita päätöksiä ja jännittäviä hetkiä, jotka tarjoavat viihdyttävän irtioton arjen keskellä.
Naša spoločnosť pre vás pripravila e-booky, ktoré vám pomôžu pri výbere a rozhodovaní sa o správnom výbere produktov. Ponorte sa do čítania a dozviete sa veľa cenných informácií.
Naša spoločnosť pre vás pripravila e-booky, ktoré vám pomôžu pri výbere a rozhodovaní sa o správnom výbere produktov. Ponorte sa do čítania a dozviete sa veľa cenných informácií.