You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							95 lines
						
					
					
						
							2.0 KiB
						
					
					
				
			
		
		
	
	
							95 lines
						
					
					
						
							2.0 KiB
						
					
					
				<?php
 | 
						|
 | 
						|
/**
 | 
						|
 *
 | 
						|
 * @copyright (c) 2012 University of Geneva
 | 
						|
 * @license GNU General Public License - http://www.gnu.org/copyleft/gpl.html
 | 
						|
 * @author Laurent Opprecht <laurent@opprecht.info>
 | 
						|
 */
 | 
						|
class FileStore
 | 
						|
{
 | 
						|
 | 
						|
    /**
 | 
						|
     *
 | 
						|
     * @param int $c_id
 | 
						|
     * @param string $sub_path 
 | 
						|
 | 
						|
     * @return FileStore 
 | 
						|
     */
 | 
						|
    static function course($c_id, $sub_path = '') 
 | 
						|
    { 
 | 
						|
        
 | 
						|
        $sys_path = api_get_path(SYS_COURSE_PATH);
 | 
						|
        $course = api_get_course_info_by_id($c_id);
 | 
						|
        $course_path = $course['path'];
 | 
						|
        $path = $sys_path . $course_path . $sub_path;
 | 
						|
        if (!is_dir($path)) {
 | 
						|
            $mode = api_get_permissions_for_new_directories();
 | 
						|
            $success = mkdir($path, $mode, true);
 | 
						|
            if (!$success) {
 | 
						|
                return false;
 | 
						|
            }
 | 
						|
        }
 | 
						|
        return new self($path);
 | 
						|
    }
 | 
						|
 | 
						|
    protected $root = '';
 | 
						|
 | 
						|
    public function __construct($root)
 | 
						|
    {
 | 
						|
        $root = ltrim($root, '/');
 | 
						|
        $root .= '/';
 | 
						|
        $this->root = $root;
 | 
						|
    }
 | 
						|
 | 
						|
    public function root()
 | 
						|
    {
 | 
						|
        return $this->root;
 | 
						|
    }
 | 
						|
 | 
						|
    function accept($filename)
 | 
						|
    {
 | 
						|
        return (bool) filter_extension($filename);
 | 
						|
    }
 | 
						|
 | 
						|
    function add($path)
 | 
						|
    {
 | 
						|
        $root = $this->root();
 | 
						|
        $id = $this->new_id();
 | 
						|
 | 
						|
        $new_path = "$root/$id";
 | 
						|
        $success = @move_uploaded_file($path, $new_path);
 | 
						|
        return $success ? $id : false;
 | 
						|
    }
 | 
						|
    
 | 
						|
    function remove($path){
 | 
						|
        
 | 
						|
        $root = $this->root();
 | 
						|
        $full_path = "$root/$path";
 | 
						|
        if(is_file($full_path)){
 | 
						|
            $result = unlink($full_path);
 | 
						|
            return $result;
 | 
						|
        }
 | 
						|
        return  false;
 | 
						|
    }
 | 
						|
 | 
						|
    function get($id)
 | 
						|
    {
 | 
						|
        $root = $this->root();
 | 
						|
        $result = "$root/$id";
 | 
						|
        return $result;
 | 
						|
    }
 | 
						|
 | 
						|
    function new_id()
 | 
						|
    {
 | 
						|
        $root = $this->root();
 | 
						|
        $id = uniqid('');
 | 
						|
        $path = "$root/$id";
 | 
						|
        while (file_exists($path)) {
 | 
						|
            $id = uniqid('');
 | 
						|
            $path = "$root/$id";
 | 
						|
        }
 | 
						|
        return $id;
 | 
						|
    }
 | 
						|
 | 
						|
} |