public static function zipFolder($folderPath, $zipFilePath = false, $addition = false) { if (!is_dir($folderPath)) { return false; } if ($handle = opendir($folderPath)) { while (false !== ($file = readdir($handle))) { if (!is_dir($folderPath . $file)) { self::$folderFiles[] = $folderPath . $file; } elseif ($file != '.' && $file != '..') { self::zipFolder($folderPath . $file . '/'); } } } if (is_array($addition)) { self::$folderFiles = array_merge(self::$folderFiles, $addition); } if ($zipFilePath) { return self::zipWrite(self::$folderFiles, $zipFilePath); } else { return self::$folderFiles; } }
if (!isset($_FILES['userfile']) || !isset($_REQUEST['pkgType'])) { stopError($conf['l']['admin:msg:PkgError']); } if ($_REQUEST['pkgType'] != 'theme' && $_REQUEST['pkgType'] != 'extension') { stopError($conf['l']['admin:msg:PkgError']); } if (!$_FILES['userfile']['tmp_name']) { stopError($conf['l']['admin:msg:PkgError']); } if (pathinfo($_FILES["userfile"]["name"], PATHINFO_EXTENSION) != 'pkg') { stopError($conf['l']['admin:msg:PkgError']); } $fName = P . 'storage/theme_' . rand(100000, 999999) . '.pkg'; if (move_uploaded_file($_FILES['userfile']['tmp_name'], $fName)) { include P . 'inc/zip.inc.php'; bwZip::zipRead($fName, true, false, P . $_REQUEST['pkgType'] . '/'); if ($_REQUEST['pkgType'] == 'extension') { if (file_exists(P . "extension/autoinstall.txt")) { $extID = file_get_contents(P . "extension/autoinstall.txt"); unlink(P . "extension/autoinstall.txt"); clearCache(); header("Location: {$conf['siteURL']}/{$conf['linkPrefixAdmin']}/extensions/add/{$conf['linkConj']}extID={$extID}&CSRFCode=" . $admin->getCSRFCode('newext')); exit; } } } header("Location: {$conf['siteURL']}/{$conf['linkPrefixAdmin']}/extensions/{$conf['linkConj']}CSRFCode=" . $admin->getCSRFCode('navibar')); } elseif ($canonical->currentArgs['subAction'] == 'selecttheme') { if (!isset($_REQUEST['themeID'])) { stopError($conf['l']['admin:msg:NoData']); }