/** * rawlistCallback * * @param array $data */ private function _rawlistCallback($data) { $data[10] = IOWrapper::get(trim($data[10])); self::$_rawlist[self::$_dir][Helper_System::basename($data[10])] = array('chmod' => $data[1] == 'd' && Registry::get('sysType') == 'WIN' ? 0777 : (Registry::get('sysType') == 'WIN' ? 0666 : $this->_chmodNum($data[2])), 'uid' => $data[3], 'owner' => is_numeric($data[3]) ? isset(self::$_idUser[$data[3]]) ? self::$_idUser[$data[3]] : (self::$_idUser[$data[3]] = Helper_System::id2user($data[3])) : $data[3], 'gid' => $data[4], 'group' => is_numeric($data[4]) ? isset(self::$_idGroup[$data[4]]) ? self::$_idGroup[$data[4]] : (self::$_idGroup[$data[4]] = Helper_System::id2group($data[4])) : $data[4], 'size' => $data[5], 'mtime' => strtotime($data[6] . ' ' . $data[7] . ' ' . $data[8] . ':' . $data[9]), 'file' => $data[10], 'type' => $data[1] == 'd' ? 'dir' : ($data[1] == 'l' ? 'link' : 'file')); }
function pclzip_cb_post_extract($p_event, &$p_header) { if (Gmanager::getInstance()->is_dir(IOWrapper::get($p_header['filename']))) { Gmanager::getInstance()->rechmod(IOWrapper::get($p_header['filename']), Registry::get('extractArchiveDirectoryChmod')); } elseif (Config::get('Gmanager', 'mode') != 'FTP') { Gmanager::getInstance()->rechmod(IOWrapper::get($p_header['filename']), Registry::get('extractArchiveFileChmod')); } return 1; }
/** * extractArchive * * @param string $name * @param array $chmod * @param bool $overwrite * @return string */ public function extractArchive($name = '', $chmod = array(), $overwrite = false) { $sysName = IOWrapper::set($name); if (Config::get('Gmanager', 'mode') == 'FTP') { $sysName = $sysName[0] == '/' ? $sysName : dirname(IOWrapper::set($this->_name) . '/') . '/' . $sysName; $ftp_name = Config::getTemp() . '/GmanagerFtpTar' . GMANAGER_REQUEST_TIME; mkdir($ftp_name, 0777); } $tgz = $this->_open(); $extract = $tgz->listContent(); $err = ''; if ($overwrite) { $res = $tgz->extract(Config::get('Gmanager', 'mode') == 'FTP' ? $ftp_name : $sysName); } else { $list = array(); foreach ($extract as $f) { if (Gmanager::getInstance()->file_exists($name . '/' . IOWrapper::get($f['filename']))) { $err .= Language::get('overwrite_false') . ' (' . htmlspecialchars($f['filename'], ENT_NOQUOTES) . ')<br/>'; } else { $list[] = $f['filename']; } } if (!$list) { Gmanager::getInstance()->ftpArchiveEnd(); return Helper_View::message(Language::get('extract_false'), Helper_View::MESSAGE_ERROR) . ($err ? Helper_View::message(rtrim($err, '<br/>'), Helper_View::MESSAGE_ERROR) : ''); } $res = $tgz->extractList($list, Config::get('Gmanager', 'mode') == 'FTP' ? $ftp_name : $sysName); } if (!$res) { if (Config::get('Gmanager', 'mode') == 'FTP') { Gmanager::getInstance()->ftpArchiveEnd(); rmdir($ftp_name); } return Helper_View::message(Language::get('extract_false'), Helper_View::MESSAGE_ERROR_EMAIL); } foreach ($extract as $f) { if (Gmanager::getInstance()->is_dir($name . '/' . IOWrapper::get($f['filename']))) { Gmanager::getInstance()->rechmod($name . '/' . IOWrapper::get($f['filename']), $chmod[1]); } else { Gmanager::getInstance()->rechmod($name . '/' . IOWrapper::get($f['filename']), $chmod[0]); } } if (Config::get('Gmanager', 'mode') == 'FTP') { Gmanager::getInstance()->createDir($sysName, $chmod[1]); Gmanager::getInstance()->ftpMoveFiles($ftp_name, $sysName, $chmod[0], $chmod[1], $overwrite); Gmanager::getInstance()->ftpArchiveEnd(); } if (Config::get('Gmanager', 'mode') == 'FTP' || Gmanager::getInstance()->is_dir($name)) { Gmanager::getInstance()->rechmod($name, $chmod[1]); return Helper_View::message(Language::get('extract_true'), Helper_View::MESSAGE_SUCCESS) . ($err ? Helper_View::message(rtrim($err, '<br/>'), Helper_View::MESSAGE_ERROR) : ''); } else { return Helper_View::message(Language::get('extract_false'), Helper_View::MESSAGE_ERROR_EMAIL); } }
/** * realpath * * @param string $path * @return string */ public function realpath($path) { return IOWrapper::get(realpath(IOWrapper::set($path))); }
/** * extractArchive * * @param string $name * @param array $chmod * @param bool $overwrite * @return string */ public function extractArchive($name = '', $chmod = array(), $overwrite = false) { $sysName = IOWrapper::set($name); if (Config::get('Gmanager', 'mode') == 'FTP') { $sysName = $sysName[0] == '/' ? $sysName : dirname(IOWrapper::set($this->_name) . '/') . '/' . $sysName; $ftp_name = Config::getTemp() . '/GmanagerFtpRar' . GMANAGER_REQUEST_TIME; mkdir($ftp_name, 0777); } $rar = $this->_open(); $err = ''; foreach ($rar->getEntries() as $entry) { $n = $entry->getName(); if (!$overwrite && Gmanager::getInstance()->file_exists($name . '/' . IOWrapper::get($n))) { $err .= Language::get('overwrite_false') . ' (' . htmlspecialchars($n, ENT_NOQUOTES) . ')<br/>'; } else { if (!$entry->extract(Config::get('Gmanager', 'mode') == 'FTP' ? $ftp_name : $sysName)) { if (Config::get('Gmanager', 'mode') == 'FTP') { Gmanager::getInstance()->ftpArchiveEnd(); rmdir($ftp_name); } $err .= str_replace('%file%', htmlspecialchars($n, ENT_NOQUOTES), Language::get('extract_file_false_ext')) . '<br/>'; } } if (Gmanager::getInstance()->is_dir($name . '/' . IOWrapper::get($n))) { Gmanager::getInstance()->rechmod($name . '/' . IOWrapper::get($n), $chmod[1]); } else { Gmanager::getInstance()->rechmod($name . '/' . IOWrapper::get($n), $chmod[0]); } } if (Config::get('Gmanager', 'mode') == 'FTP') { Gmanager::getInstance()->createDir($sysName, $chmod[1]); Gmanager::getInstance()->ftpMoveFiles($ftp_name, $sysName, $chmod[0], $chmod[1], $overwrite); Gmanager::getInstance()->ftpArchiveEnd(); } if (Config::get('Gmanager', 'mode') == 'FTP' || Gmanager::getInstance()->is_dir($name)) { Gmanager::getInstance()->rechmod($name, $chmod[1]); return Helper_View::message(Language::get('extract_true'), Helper_View::MESSAGE_SUCCESS) . ($err ? Helper_View::message(rtrim($err, '<br/>'), Helper_View::MESSAGE_ERROR) : ''); } else { return Helper_View::message(Language::get('extract_false'), Helper_View::MESSAGE_ERROR_EMAIL); } }
} if ($archive == Archive::FORMAT_ZIP) { $f = '&f=' . rawurlencode($_GET['f']); } else { $f = ''; } if ($charset[0] && $data['content']) { $data['content'] = mb_convert_encoding($data['content'], $charset[1], $charset[0]); } if ($_GET['beautify']) { $data['content'] = Gmanager::getInstance()->beautify($data['content']); } $quotes = defined('ENT_IGNORE') ? ENT_COMPAT | ENT_IGNORE : ENT_COMPAT; $data['size'] = Helper_View::formatSize(strlen($data['content'])); $data['lines'] = mb_substr_count($data['content'], "\n") + 1; $path = mb_substr(Gmanager::getInstance()->realpath(Registry::get('current')), mb_strlen(IOWrapper::get($_SERVER['DOCUMENT_ROOT']))); if (Config::get('Gmanager', 'mode') == 'HTTP' && $path) { $http = '<div class="rb"><a href="http://' . $_SERVER['HTTP_HOST'] . str_replace('//', '/', '/' . Helper_View::getRawurl(str_replace('\\', '/', $path))) . '">' . Language::get('look') . '</a><br/></div>'; } else { $http = ''; } if (Registry::get('lineEditor') && $data['lines'] > Config::get('LineEditor', 'minLines')) { $isLineEditor = true; $i = $start; $j = 0; $edit = '<table class="pedit"><tbody id="pedit">'; foreach (array_slice(explode("\n", $data['content']), $start, $end) as $var) { $j++; $i++; $edit .= '<tr id="i' . $j . '"><td class="pedit_l">' . $i . '</td><td class="pedit_c"><input name="line[' . ($i - 1) . '][]" type="text" value="' . htmlspecialchars($var, $quotes, 'UTF-8') . '"/></td><td class="pedit_r"><a title="' . Language::get('add') . '" href="javascript:void(0);" onclick="Gmanager.editAdd(this);">[+]</a> / <a title="' . Language::get('dl') . '" href="javascript:void(0);" onclick="Gmanager.editDel(this);">[-]</a></td></tr>'; }
/** * fname * * @param string $f * @param string $name * @param int $register * @param int $i * @param bool $overwrite * @return string */ public function fname($f = '', $name = '', $register = 0, $i = 0, $overwrite = false) { // [replace=from,to] - replace // [n=0] - meter // [f] - type // [name] - name // [date] - date // [rand=8,16] - random // $f = rawurldecode($f); $info = pathinfo($f); $info['dirname'] = IOWrapper::get($info['dirname']); $info['basename'] = IOWrapper::get($info['basename']); $info['extension'] = IOWrapper::get($info['extension']); $info['filename'] = IOWrapper::get($info['filename']); if (preg_match_all('/\\[replace=([^,]),([^\\]])/U', $name, $arr, PREG_SET_ORDER)) { foreach ($arr as $var) { $name = str_replace($var[1], $var[2], $info['filename'] . '.' . $info['extension']); } } if (preg_match_all('/\\[n=*(\\d*)\\]/U', $name, $arr, PREG_SET_ORDER)) { foreach ($arr as $var) { $name = str_replace($var[0], $var[1] + $i, $name); } } if (preg_match_all('/\\[rand=*(\\d*),*(\\d*)\\]/U', $name, $arr, PREG_SET_ORDER)) { foreach ($arr as $var) { $name = str_replace($var[0], mb_substr(str_shuffle(Config::get('Gmanager', 'rand')), 0, mt_rand(!empty($var[1]) ? $var[1] : 8, !empty($var[2]) ? $var[2] : 16)), $name); } } $name = str_replace('[f]', $info['extension'], $name); $name = str_replace('[name]', $info['filename'], $name); $name = str_replace('[date]', strftime('%d_%m_%Y'), $name); if ($register == 1) { $tmp = mb_strtolower($name); } elseif ($register == 2) { $tmp = mb_strtoupper($name); } else { $tmp = $name; } if (!$overwrite && self::$_instance->file_exists($info['dirname'] . '/' . $tmp)) { return Helper_View::message(Language::get('overwrite_false') . ' (' . htmlspecialchars($info['dirname'] . '/' . $tmp, ENT_NOQUOTES) . ')', Helper_View::MESSAGE_ERROR); } if (self::$_instance->rename($f, $info['dirname'] . '/' . $tmp)) { return Helper_View::message($info['basename'] . ' - ' . $tmp, Helper_View::MESSAGE_SUCCESS); } else { return Helper_View::message(Errors::get() . ' ' . $info['basename'] . ' -> ' . $tmp, Helper_View::MESSAGE_ERROR_EMAIL); } }