Example #1
0
 /**
  * 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);
             }
         }
     }
 }
Example #2
0
 /**
  * file_put_contents
  * 
  * @param string $file
  * @param string $data
  * @return int (0 or 1)
  */
 public function file_put_contents($file, $data = '')
 {
     $php_temp = Config::getTemp() . '/GmanagerFtpTemp' . GMANAGER_REQUEST_TIME . '.tmp';
     file_put_contents($php_temp, $data);
     chmod($php_temp, 0666);
     ftp_chdir($this->_res, IOWrapper::set(mb_substr($file, 0, mb_strrpos($file, '/'))));
     $result = ftp_put($this->_res, Helper_System::basename(IOWrapper::set($file)), $php_temp, FTP_BINARY);
     unlink($php_temp);
     return $result ? 1 : 0;
 }
Example #3
0
 /**
  * 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);
             }
         }
     }
 }
Example #4
0
 /**
  * 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);
     }
 }
Example #5
0
 /**
  * ftpArchiveStart
  * 
  * @param string $current
  * @return string
  */
 public function ftpArchiveStart($current = '')
 {
     $this->_ftpArchiveTmp = Config::getTemp() . '/GmanagerFtpArchive' . GMANAGER_REQUEST_TIME . '.tmp';
     file_put_contents($this->_ftpArchiveTmp, self::$_instance->file_get_contents($current));
     return $this->_ftpArchiveTmp;
 }
 /**
  * This method has to be used in all __destruct() methods which need the current working directory.
  *
  * @see http://bugs.php.net/bug.php?id=34206
  * @see http://www.php.net/language.oop5.decon
  */
 public static function destruct()
 {
     $dir = Config::getTemp('cwd');
     if (!empty($dir)) {
         @chdir($dir);
     }
 }