/** * renameFile * * @param string $name * @param string $arch_name * @param bool $del * @param bool $overwrite * @return string */ public function renameFile($name, $arch_name, $del = false, $overwrite = false) { $tmp = Config::getTemp() . '/GmanagerZip' . GMANAGER_REQUEST_TIME; $zip = $this->_open(); $folder = ''; $sysName = IOWrapper::set($name); foreach ($zip->extract(PCLZIP_OPT_PATH, $tmp) as $f) { if ($f['status'] != 'ok') { Helper_System::clean($tmp); if (Config::get('Gmanager', 'mode') == 'FTP') { Gmanager::getInstance()->ftpArchiveEnd(); } return Helper_View::message(Language::get('extract_false'), Helper_View::MESSAGE_ERROR); break; } if ($arch_name == $f['stored_filename']) { $folder = $f['folder']; } } if (file_exists($tmp . '/' . $sysName)) { if ($overwrite) { if ($folder) { Helper_System::clean($tmp . '/' . $sysName); } else { unlink($tmp . '/' . $sysName); } } else { Helper_System::clean($tmp); if (Config::get('Gmanager', 'mode') == 'FTP') { Gmanager::getInstance()->ftpArchiveEnd(); } return Helper_View::message(Language::get('overwrite_false'), Helper_View::MESSAGE_ERROR); } } if ($folder) { @mkdir($tmp . '/' . $sysName, 0755, true); } elseif (!is_dir($tmp . '/' . dirname($sysName))) { @mkdir($tmp . '/' . dirname($sysName), 0755, true); } if ($folder) { // переделать на ftp if ($del) { $result = Gmanager::getInstance()->moveFiles($tmp . '/' . $arch_name, $tmp . '/' . $name); } else { $result = Gmanager::getInstance()->copyFiles($tmp . '/' . $arch_name, $tmp . '/' . $name); } } else { if ($del) { $result = rename($tmp . '/' . $arch_name, $tmp . '/' . $sysName); } else { $result = copy($tmp . '/' . $arch_name, $tmp . '/' . $sysName); } } if (!$result) { Helper_System::clean($tmp); if (Config::get('Gmanager', 'mode') == 'FTP') { Gmanager::getInstance()->ftpArchiveEnd(); } if ($folder) { if ($del) { return Helper_View::message(str_replace('%title%', htmlspecialchars($arch_name, ENT_NOQUOTES), Language::get('move_files_false')), Helper_View::MESSAGE_ERROR); } else { return Helper_View::message(str_replace('%title%', htmlspecialchars($arch_name, ENT_NOQUOTES), Language::get('copy_files_false')), Helper_View::MESSAGE_ERROR); } } else { if ($del) { return Helper_View::message(str_replace('%file%', htmlspecialchars($arch_name, ENT_NOQUOTES), Language::get('move_file_false')), Helper_View::MESSAGE_ERROR); } else { return Helper_View::message(str_replace('%file%', htmlspecialchars($arch_name, ENT_NOQUOTES), Language::get('copy_file_false')), Helper_View::MESSAGE_ERROR); } } } $result = $zip->create($tmp, PCLZIP_OPT_REMOVE_PATH, mb_substr($tmp, mb_strlen(dirname(dirname($tmp))))) != 0; Helper_System::clean($tmp); if (Config::get('Gmanager', 'mode') == 'FTP') { Gmanager::getInstance()->ftpArchiveEnd($this->_name); } if ($result) { if ($folder) { if ($del) { return Helper_View::message(str_replace('%title%', htmlspecialchars($arch_name, ENT_NOQUOTES), Language::get('move_files_true')), Helper_View::MESSAGE_SUCCESS); } else { return Helper_View::message(str_replace('%title%', htmlspecialchars($arch_name, ENT_NOQUOTES), Language::get('copy_files_true')), Helper_View::MESSAGE_SUCCESS); } } else { if ($del) { return Helper_View::message(str_replace('%file%', htmlspecialchars($arch_name, ENT_NOQUOTES), Language::get('move_file_true')), Helper_View::MESSAGE_SUCCESS); } else { return Helper_View::message(str_replace('%file%', htmlspecialchars($arch_name, ENT_NOQUOTES), Language::get('copy_file_true')), Helper_View::MESSAGE_SUCCESS); } } } else { if ($folder) { if ($del) { return Helper_View::message(str_replace('%title%', htmlspecialchars($arch_name, ENT_NOQUOTES), Language::get('move_files_false')), Helper_View::MESSAGE_ERROR); } else { return Helper_View::message(str_replace('%title%', htmlspecialchars($arch_name, ENT_NOQUOTES), Language::get('copy_files_false')), Helper_View::MESSAGE_ERROR); } } else { if ($del) { return Helper_View::message(str_replace('%file%', htmlspecialchars($arch_name, ENT_NOQUOTES), Language::get('move_file_false')), Helper_View::MESSAGE_ERROR); } else { return Helper_View::message(str_replace('%file%', htmlspecialchars($arch_name, ENT_NOQUOTES), Language::get('copy_file_false')), Helper_View::MESSAGE_ERROR); } } } }
/** * renameFile * * @param string $name * @param string $arch_name * @param bool $del * @param bool $overwrite * @return string */ public function renameFile($name, $arch_name, $del = false, $overwrite = false) { $tmp = Config::getTemp() . '/GmanagerTar' . GMANAGER_REQUEST_TIME; $tgz = $this->_open(); $sysName = IOWrapper::set($name); $folder = ''; foreach ($tgz->listContent() as $f) { if ($arch_name == $f['filename']) { $folder = $f['typeflag'] == 5 ? 1 : 0; break; } } if (!$tgz->extract($tmp)) { Helper_System::clean($tmp); if (Config::get('Gmanager', 'mode') == 'FTP') { Gmanager::getInstance()->ftpArchiveEnd(); } return Helper_View::message(Language::get('extract_false'), Helper_View::MESSAGE_ERROR); } if (file_exists($tmp . '/' . $sysName)) { if ($overwrite) { if ($folder) { Helper_System::clean($tmp . '/' . $sysName); } else { unlink($tmp . '/' . $sysName); } } else { Helper_System::clean($tmp); if (Config::get('Gmanager', 'mode') == 'FTP') { Gmanager::getInstance()->ftpArchiveEnd(); } return Helper_View::message(Language::get('overwrite_false'), Helper_View::MESSAGE_ERROR); } } if ($folder) { @mkdir($tmp . '/' . $sysName, 0755, true); } else { @mkdir($tmp . '/' . dirname($sysName), 0755, true); } if ($folder) { if ($del) { $result = Gmanager::getInstance()->moveFiles($tmp . '/' . $name, $tmp . '/' . $arch_name); } else { $result = Gmanager::getInstance()->copyFiles($tmp . '/' . $name, $tmp . '/' . $arch_name); } } else { if ($del) { $result = rename($tmp . '/' . $arch_name, $tmp . '/' . $sysName); } else { $result = copy($tmp . '/' . $arch_name, $tmp . '/' . $sysName); } } if (!$result) { Helper_System::clean($tmp); if (Config::get('Gmanager', 'mode') == 'FTP') { Gmanager::getInstance()->ftpArchiveEnd(); } if ($folder) { if ($del) { return Helper_View::message(str_replace('%title%', htmlspecialchars($arch_name, ENT_NOQUOTES), Language::get('move_files_false')), Helper_View::MESSAGE_ERROR); } else { return Helper_View::message(str_replace('%title%', htmlspecialchars($arch_name, ENT_NOQUOTES), Language::get('copy_files_false')), Helper_View::MESSAGE_ERROR); } } else { if ($del) { return Helper_View::message(str_replace('%file%', htmlspecialchars($arch_name, ENT_NOQUOTES), Language::get('move_file_false')), Helper_View::MESSAGE_ERROR); } else { return Helper_View::message(str_replace('%file%', htmlspecialchars($arch_name, ENT_NOQUOTES), Language::get('copy_file_false')), Helper_View::MESSAGE_ERROR); } } } $result = $tgz->createModify($tmp, '.', $tmp); Helper_System::clean($tmp); if (Config::get('Gmanager', 'mode') == 'FTP') { Gmanager::getInstance()->ftpArchiveEnd($this->_name); } if ($result) { if ($folder) { if ($del) { return Helper_View::message(str_replace('%title%', htmlspecialchars($arch_name, ENT_NOQUOTES), Language::get('move_files_true')), Helper_View::MESSAGE_SUCCESS); } else { return Helper_View::message(str_replace('%title%', htmlspecialchars($arch_name, ENT_NOQUOTES), Language::get('copy_files_true')), Helper_View::MESSAGE_SUCCESS); } } else { if ($del) { return Helper_View::message(str_replace('%file%', htmlspecialchars($arch_name, ENT_NOQUOTES), Language::get('move_file_true')), Helper_View::MESSAGE_SUCCESS); } else { return Helper_View::message(str_replace('%file%', htmlspecialchars($arch_name, ENT_NOQUOTES), Language::get('copy_file_true')), Helper_View::MESSAGE_SUCCESS); } } } else { if ($folder) { if ($del) { return Helper_View::message(str_replace('%title%', htmlspecialchars($arch_name, ENT_NOQUOTES), Language::get('move_files_false')), Helper_View::MESSAGE_ERROR); } else { return Helper_View::message(str_replace('%title%', htmlspecialchars($arch_name, ENT_NOQUOTES), Language::get('copy_files_false')), Helper_View::MESSAGE_ERROR); } } else { if ($del) { return Helper_View::message(str_replace('%file%', htmlspecialchars($arch_name, ENT_NOQUOTES), Language::get('move_file_false')), Helper_View::MESSAGE_ERROR); } else { return Helper_View::message(str_replace('%file%', htmlspecialchars($arch_name, ENT_NOQUOTES), Language::get('copy_file_false')), Helper_View::MESSAGE_ERROR); } } } }