Skip to content
Snippets Groups Projects
Select Git revision
  • ad6562d14fabb0822e197e2ed70e4a3f8c02e23f
  • master default protected
2 results

files.php

  • files.php 10.84 KiB
    <?php
    
    /**
    * ownCloud
    *
    * @author Frank Karlitschek
    * @copyright 2012 Frank Karlitschek frank@owncloud.org
    *
    * This library is free software; you can redistribute it and/or
    * modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE
    * License as published by the Free Software Foundation; either
    * version 3 of the License, or any later version.
    *
    * This library is distributed in the hope that it will be useful,
    * but WITHOUT ANY WARRANTY; without even the implied warranty of
    * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    * GNU AFFERO GENERAL PUBLIC LICENSE for more details.
    *
    * You should have received a copy of the GNU Affero General Public
    * License along with this library.  If not, see <http://www.gnu.org/licenses/>.
    *
    */
    
    /**
     * Class for fileserver access
     *
     */
    class OC_Files {
    	static $tmpFiles=array();
    
    	/**
    	* get the content of a directory
    	* @param dir $directory
    	*/
    	public static function getDirectoryContent($directory, $mimetype_filter = ''){
    		if(strpos($directory,OC::$CONFIG_DATADIRECTORY)===0){
    			$directory=substr($directory,strlen(OC::$CONFIG_DATADIRECTORY));
    		}
    		$files=OC_FileCache::getFolderContent($directory, '', $mimetype_filter);
    		foreach($files as &$file){
    			$file['directory']=$directory;
    			$file['type']=($file['mimetype']=='httpd/unix-directory')?'dir':'file';
    		}
    		usort($files, "fileCmp");//TODO: remove this once ajax is merged
    		return $files;
    	}
    
    
    
    	/**
    	* return the content of a file or return a zip file containning multiply files
    	*
    	* @param dir  $dir
    	* @param file $file ; seperated list of files to download
    	* @param boolean $only_header ; boolean to only send header of the request
    	*/
    	public static function get($dir,$files, $only_header = false){
    		if(strpos($files,';')){
    			$files=explode(';',$files);
    		}
    
    		if(is_array($files)){
    			self::validateZipDownload($dir,$files);
    			$executionTime = intval(ini_get('max_execution_time'));
    			set_time_limit(0);
    			$zip = new ZipArchive();
    			$filename = OC_Helper::tmpFile('.zip');
    			if ($zip->open($filename, ZIPARCHIVE::CREATE | ZIPARCHIVE::OVERWRITE)!==TRUE) {
    				exit("cannot open <$filename>\n");
    			}