forked from moodle/moodle
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
"REPOSITORY/MDL-18520, file system plugin added"
- Loading branch information
dongsheng
committed
Mar 13, 2009
1 parent
b555127
commit 520de34
Showing
3 changed files
with
146 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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'; |
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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) { | ||
} | ||
} |