function generateArchive($themeName, $userThemeName = '', $includeThemler = true)
{
    register_shutdown_function('fatalErrorShutdownHandler');
    $themeDir = FilesHelper::normalizePath(getThemeDir($themeName));
    if (!file_exists($themeDir)) {
        die('Error : No Theme Folder');
    }
    $userThemeName = $userThemeName ? $userThemeName : $themeName;
    $uniqid = uniqid();
    $base_upload_dir = get_base_upload_dir() . '/' . $uniqid;
    $user_template_dir = $base_upload_dir . '/' . $userThemeName;
    FilesHelper::copyRecursive($themeDir, $user_template_dir);
    if (!$includeThemler) {
        $dirs = array('export', 'project');
        clearDirs($user_template_dir, $dirs);
    }
    $previewThemeDir = FilesHelper::normalizePath(getThemeDir($themeName . _PREVIEW_SUFFIX_));
    $archiveName = 'theme_' . uniqid(time()) . '.zip';
    $archiveFile = $base_upload_dir . '/' . $archiveName;
    $archive = new PclZip($archiveFile);
    add_version_folders($archive, $base_upload_dir, $user_template_dir, $previewThemeDir, $userThemeName, $includeThemler);
    add_files_to_archive_root($archive, $base_upload_dir, $user_template_dir, $previewThemeDir, $userThemeName);
    // Temporary fix to support Prestashop Cloud Install
    deleteFromArchive($archive, 'modules/designer/override/controllers/admin/AdminLoginController.php');
    if (is_readable($archiveFile)) {
        $archiveContent = array('ext' => 'zip', 'content' => base64_encode(FilesHelper::readFile($archiveFile)));
        FilesHelper::removeDir($base_upload_dir, true);
        return $archiveContent;
    }
    die('Archive file: ' . $archiveFile . ' is not readable');
}
function getThemeArchive($themeName, $userThemeName, $includeThemler)
{
    $themeDir = FilesHelper::normalizePath(getThemeDir($themeName));
    if (!file_exists($themeDir)) {
        die('Error : No Theme Folder');
    }
    $userThemeName = $userThemeName ? $userThemeName : $themeName;
    $base_upload_dir = get_base_upload_dir();
    $user_template_dir = $base_upload_dir . '/' . $userThemeName;
    FilesHelper::copyRecursive($themeDir, $user_template_dir);
    if (!$includeThemler) {
        $dirs = array('export', 'project');
        clearDirs($user_template_dir, $dirs);
    }
    $previewThemeDir = FilesHelper::normalizePath(getThemeDir($themeName . _PREVIEW_SUFFIX_));
    $archive_name = 'theme_' . uniqid(time()) . '.zip';
    $archive_file = $base_upload_dir . '/' . $archive_name;
    $archive = new PclZip($archive_file);
    add_version_folders($archive, $base_upload_dir, $user_template_dir, $previewThemeDir, $userThemeName, $includeThemler);
    add_files_to_archive_root($archive, $base_upload_dir, $user_template_dir, $previewThemeDir, $userThemeName);
    // Temporary fix to support Prestashop Cloud Install
    deleteFromArchive($archive, 'modules/designer/override/controllers/admin/AdminLoginController.php');
    FilesHelper::removeDir($user_template_dir, true);
    return $archive_file;
}