Seditio Source
Root |
./othercms/b2evolution_7.2.3/inc/files/views/_file_unpack_zip.view.php
<?php
/**
 * This file implements the UI for page to unpack ZIP archive.
 *
 * This file is part of the evoCore framework - {@link http://evocore.net/}
 * See also {@link https://github.com/b2evolution/b2evolution}.
 *
 * @license GNU GPL v2 - {@link http://b2evolution.net/about/gnu-gpl-license}
 *
 * @copyright (c)2003-2020 by Francois Planque - {@link http://fplanque.com/}
 *
 * @package admin
 */
if( !defined('EVO_MAIN_INIT') ) die( 'Please, do not access this page directly.' );

global
$fm_Filelist, $selected_Filelist;

$Form = new Form( NULL, 'fm_download_checkchanges', 'post', 'compact' );

$Form->begin_form( 'fform', T_('Unpack ZIP archives') );

   
$unpack_is_done = false;
    echo
'<ul>';
    foreach(
$selected_Filelist->get_array() as $selected_File )
    {
        echo
'<li>'.sprintf( T_('Unpacking %s').'... ', '<code>'.$selected_File->get_name().'</code>' );
       
evo_flush();

        if( !
is_file( $selected_File->get_full_path() ) ||
            !
preg_match( '/\.zip$/i', $selected_File->get_full_path() ) )
        {    
// Not ZIP archive was selected:
           
echo '<span class="text-danger">'.T_('Skipped because this is not ZIP archive!').'</span>';
        }
        else
        {    
// Try to unpack:
           
$zip_info = pathinfo( $selected_File->get_full_path() );
           
$unpack_folder = $zip_info['dirname'].'/'.$zip_info['filename'];
           
$folder_suffix = '';
            while(
file_exists( $unpack_folder.$folder_suffix ) )
            {    
// Find free(not existing) folder to unpack:
               
$folder_suffix++;
            }
           
$unpack_folder .= $folder_suffix;
           
$unpack_result = unpack_archive( $selected_File->get_full_path(), $unpack_folder, true, $zip_info['basename'], false );
            if(
$unpack_result === true )
            {    
// Display success result:
               
printf( T_('Unpacked into the folder %s.'), '<code>'.basename( $unpack_folder ).'</code>' );
               
$unpack_is_done = true;
            }
            else
            {    
// Display errors:
               
echo $unpack_result;
            }
        }
        echo
'</li>';
    }
    echo
'</ul>';

    if(
$unpack_is_done && ! empty( $fm_Filelist ) )
    {    
// Reload files list to display new folders after at least one unpacking:
       
global $fm_Filelist;
       
$fm_Filelist->load();
    }

$Form->end_form();

?>