"REPOSITORY/MDL-18520, file system plugin added"
This commit is contained in:
@@ -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 not shown.
|
After Width: | Height: | Size: 603 B |
@@ -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) {
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user