Skip to content

Commit

Permalink
"REPOSITORY/MDL-18520, file system plugin added"
Browse files Browse the repository at this point in the history
  • Loading branch information
dongsheng committed Mar 13, 2009
1 parent b555127 commit 520de34
Show file tree
Hide file tree
Showing 3 changed files with 146 additions and 0 deletions.
7 changes: 7 additions & 0 deletions lang/en_utf8/repository_filesystem.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
<?php

$string['configplugin'] = 'Setup repository on file system';
$string['repositoryname'] = 'File system';
$string['repositorydesc'] = 'Create repository from local directory';
$string['path'] = 'Path';
$string['invalidpath'] = 'Invalid root path';
Binary file added repository/filesystem/icon.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
139 changes: 139 additions & 0 deletions repository/filesystem/repository.class.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,139 @@
<?php // $Id$

class repository_filesystem extends repository {
public function __construct($repositoryid, $context = SITEID, $options = array()) {
parent::__construct($repositoryid, $context, $options);
$this->root_path = trim($this->root_path);
if ($options['ajax']) {
// if created from filepicker
if (empty($this->root_path)) {
$ret = array();
$ret['msg'] = get_string('invalidpath', 'repository_filesystem');
$ret['nosearch'] = true;
echo json_encode($ret);
exit;
} else {
if (!is_dir($this->root_path)) {
$ret = array();
$ret['msg'] = get_string('invalidpath', 'repository_filesystem');
$ret['nosearch'] = true;
if ($options['ajax']) {
echo json_encode($ret);
exit;
}
}
}
if ($this->root_path{strlen($this->root_path)-1} !== '/') {
$this->root_path .= '/';
}
}
}
public function get_listing($path = '', $page = '') {
global $CFG;
$list = array();
$list['list'] = array();
// process breacrumb trail
$list['path'] = array(
array('name'=>'Root','path'=>'')
);
$trail = '';
if (!empty($path)) {
$parts = explode('/', $path);
if (count($parts) > 1) {
foreach ($parts as $part) {
$trail .= ('/'.$part);
$list['path'][] = array('name'=>$part, 'path'=>$trail);
}
} else {
$list['path'][] = array('name'=>$path, 'path'=>$path);
}
$this->root_path .= ($path.'/');
}
// set options
$list['manage'] = false;
// dynamically loading
$list['dynload'] = true;
// the current path of this list.
// set to true, the login link will be removed
$list['nologin'] = true;
// set to true, the search button will be removed
$list['nosearch'] = true;
if ($dh = opendir($this->root_path)) {
while (($file = readdir($dh)) != false) {
if ( $file != '.' and $file !='..') {
if (filetype($this->root_path.$file) == 'file') {
$list['list'][] = array(
'title' => $file,
'source' => $path.'/'.$file,
'size' => filesize($this->root_path.$file),
'date' => time(),
'thumbnail' => $CFG->pixpath .'/f/'. mimeinfo('icon32', $this->root_path.$file)
);
} else {
if (!empty($path)) {
$current_path = $path . '/'. $file;
} else {
$current_path = $file;
}
$list['list'][] = array(
'title' => $file,
'children' => array(),
'thumbnail' => $CFG->pixpath .'/f/folder-32.png',
'path' => $current_path
);
}
}
}
}
return $list;
}
// login
public function check_login() {
return true;
}
// if check_login returns false,
// this function will be called to print a login form.
public function print_login() {
return true;
}
//search
// if this plugin support global search, if this function return
// true, search function will be called when global searching working
public function global_search() {
return false;
}
public function search($text) {
$search_result = array();
$search_result['list'] = array();
return $search_result;
}
// move file to local moodle
public function get_file($file, $title = '') {
global $CFG;
if ($file{0} == '/') {
$file = $this->root_path.substr($file, 1, strlen($file)-1);
}
// this is a hack to prevent move_to_file deleteing files
// in local repository
$CFG->repository_no_delete = true;
return $file;
}

public function logout() {
return true;
}

public static function get_instance_option_names() {
return array('root_path');
}

public function instance_config_form(&$mform) {
$mform->addElement('text', 'root_path', get_string('path', 'repository_filesystem'), array('value'=>'','size' => '40'));
}

public static function get_type_option_names() {
return array();
}
public function type_config_form(&$mform) {
}
}

0 comments on commit 520de34

Please sign in to comment.