/** * Backend area (only rightpane) with a * form to download multiple files and directories * @return void */ public function downloadMultiple() { $temp_out_path = $this->config_area['temp_out_path'] . '/' . md5(time()); $fsm = sf_api('LIB', 'FilesystemManipulation'); $fsm->createDirectory($temp_out_path); $dirtree = $this->directory_sql_tree; $dirtree->setIdclient($this->config_area['idclient']); //$dirtree->setIdlang( $this->config_area['idlang'] ); $dirtree->setArea($this->config_area['area_name']); $dirtree->setPermCheck($this->directory_sql_item->getObjectPermType(), $this->directory_sql_item->getObjectPermId('download'), TRUE); $dirtree->generate(); $iddirectories = $this->req->req('d', array()); foreach ($iddirectories as $iddirectory) { if ($this->directory_sql_item->loadById($iddirectory)) { $this->_prepareDownloadDirectory($iddirectory, $temp_out_path, $dirtree); } } $idfiles = $this->req->req('f', array()); foreach ($idfiles as $idfile) { if ($this->file_sql_item->loadById($idfile)) { $fsm->copyFile($this->file_sql_item->getPath(), $temp_out_path . '/' . $this->file_sql_item->getField('filename')); } } $id = $this->req->req('iddirectory', 0); if ($id > 0 && $this->directory_sql_item->loadById($id)) { $archivename = $this->directory_sql_item->getField('name'); } else { $archivename = $this->lng->get($this->config_area['area_name'] . '_base_directory'); } $archive = sf_api('LIB', 'Archive'); $archive::extract($archive::read($temp_out_path), $archive::toArchive($archivename . '.' . $this->config_area['download_archive_filetype'], $archive::toOutput())); $fsm->deleteDirectoryRecursive($temp_out_path); }